Я просто открываю для себя все возможности docker, будучи совершенно новым для всех возможностей разработки, поэтому, пожалуйста, go спокойно для меня ;-)! Мне было приказано смонтировать и использовать образ docker через vscode (используя расширения docker и remote-s sh), чтобы выдвигать / извлекать изменения из проекта, называемого далее «проект», с пользователем, имя пользователя которого находится в контейнер "vscode". Проблема в том, что разрешения, кажется, не установлены должным образом при построении изображения. При извлечении / толкании некоторых изменений внутри изображения я получаю следующую ошибку:
vscode@3910551790a9:/workspaces/project$ git pull
error: cannot open .git/FETCH_HEAD: Permission denied
При перечислении разрешений в папке. git внутри изображения я получаю следующее:
vscode@3910551790a9:/workspaces/project$ ls -lart .git
total 88
-rw-rw-r-- 1 super_project super_project 73 Apr 17 14:53 description
drwxrwxr-x 2 super_project super_project 4096 Apr 17 14:53 branches
drwxrwxr-x 2 super_project super_project 4096 Apr 17 14:53 info
drwxrwxr-x 5 super_project super_project 4096 Apr 17 14:53 refs
-rw-rw-r-- 1 super_project super_project 257 Apr 17 14:53 packed-refs
drwxrwxr-x 3 super_project super_project 4096 Apr 17 14:53 logs
drwxr-xr-x 4 super_project super_project 4096 Apr 17 14:53 lfs
drwxrwxr-x 2 super_project super_project 4096 Apr 17 14:53 hooks
-rw-rw-r-- 1 super_project super_project 337 Apr 20 09:34 config
-rw-rw-r-- 1 super_project super_project 309 Apr 20 10:46 FETCH_HEAD
-rw-rw-r-- 1 super_project super_project 41 Apr 20 10:46 ORIG_HEAD
drwxrwxr-x 7 super_project super_project 4096 Apr 20 12:28 ..
-rw-rw-r-- 1 super_project super_project 29 Apr 20 12:29 HEAD
drwxrwxr-x 37 super_project super_project 4096 Apr 20 13:55 objects
-rw-rw-r-- 1 super_project super_project 24533 Apr 20 13:55 index
-rw-rw-r-- 1 super_project super_project 35 Apr 20 13:55 COMMIT_EDITMSG
drwxrwxr-x 9 super_project super_project 4096 Apr 20 13:55 .
Файлы принадлежат "super_project" , тогда как предполагается, что они принадлежат пользователю "vscode" .
Здесь соответствующая часть Dockerfile:
FROM super_project/super_project:latest
USER root
ARG USERNAME=vscode
ARG USER_UID=1001
ARG USER_GID=$USER_UID
RUN apt-get update \
&& apt-get -y install --no-install-recommends apt-utils dialog 2>&1 \
some install ...
# Create a non-root user to use if preferred - see https://aka.ms/vscode-remote/containers/non-root-user.\
&& groupadd --gid $USER_GID $USERNAME \
&& useradd -s /bin/bash --uid $USER_UID --gid $USER_GID -m $USERNAME \
# [Optional] Add sudo support for the non-root user
&& apt-get install -y sudo \
&& echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME\
&& chmod 0440 /etc/sudoers.d/$USERNAME \
# add github ssh key
&& mkdir ~vscode/.ssh/ \
&& ssh-keyscan github.com >> ~vscode/.ssh/known_hosts \
&& chown -R vscode.$USER_GID ~vscode/.ssh \
#
# Clean up
&& apt-get autoremove -y \
&& apt-get clean -y \
&& rm -rf /var/lib/apt/lists/*
Я отмечаю, что все работает нормально под MacOx, который используется моим боссом. Я лично использую Ubuntu 18.04 с docker версия 19.03 и vscode 1.44. Я прочитал, что есть некоторые тонкие различия в способе обработки разрешений в двух системах, что может объяснить мою проблему.
Может ли кто-нибудь объяснить мне, что здесь происходит и как решить эту проблему с разрешениями?
Заранее спасибо!