#visual-studio-code #vscode-devcontainer
Вопрос:
В настоящее время я работаю над проектом, который требует, чтобы я использовал удаленный контейнер VSCode. Я решил не основывать свой контейнер на одном из официальных образов Microsoft, доступных здесь, вместо этого он основан на epitechcontent/epitest-docker
образе docker.
До сих пор я использую следующую конфигурацию для контейнера:
.devcontainer/devcontainer.json
{
"name": "Babel",
"build": {
"dockerfile": "Dockerfile",
},
"runArgs": [
"--cap-add=SYS_PTRACE",
"--security-opt",
"seccomp=unconfined"
],
"extensions": [
"ms-vscode.cpptools",
"ms-vscode.cmake-tools",
"twxs.cmake"
],
"remoteUser": "babel",
"workspaceMount": "type=bind,source=${localWorkspaceFolder},target=/home/babel"
}
.devcontainer/Dockerfile
# Using the latest epitech image
FROM epitechcontent/epitest-docker
# Setup a custom user with similar permissions
RUN useradd -rm -d /home/babel -s /bin/zsh -g root -G root -u 1001 babel
# Configure our workspace
WORKDIR /home/babel
RUN touch dummyfile
В настоящее время я сталкиваюсь со следующими проблемами.
Разрешения пользователя контейнера
Похоже, удаленные контейнеры Microsoft VSCode создают пользователя по умолчанию, не являющегося пользователем root vscode
, для всех контейнеров. Поскольку я не использую образы Microsoft, я ищу способ создать пользователя с теми же разрешениями, что и у моего сеанса, чтобы файлы, созданные в контейнере, были идентичны файлам, созданным вне контейнера моим обычным пользователем.
Для достижения этой цели я создаю нового пользователя в файле Dockerfile, а также устанавливаю remoteUser
свойство в devcontainer.json
для этого самого пользователя.
Что происходит дальше, когда я пытаюсь создать файл внутри удаленного контейнера, у него другие разрешения, чем у моего обычного сеанса.
inside-the-container-shell> ls -l
-rw-rw-r-- 1 babel root 14 Sep 22 16:59 file-created-outside-container
-rw-r--r-- 1 babel root 0 Sep 22 19:27 file-created-inside-container
Рабочее пространство и место монтирования
Внутри Dockerfile
я установил домашний каталог моего пользователя /home/babel
в значение, и я WORKDIR
/home/babel
также установил значение. Кроме того, внутри devcontainer.json
я настраиваю workspaceMount
type=bind,source=${localWorkspaceFolder},target=/home/babel
так, чтобы контейнер был смонтирован в домашнем каталоге пользователя.
Unfortunately this overrides the dummyfile
that was touch
ed during the building stage (cf the Dockerfile
).
Conclusion
I’m having a hard time finding good resources to learn how to use VSCode Remote Containers without the Microsoft images.
I’m trying to find a good way to declare a custom user much like the Microsoft images do.
I’m trying to find a way to not override the files that are here before the mount takes place.