使用VSCODE DEVCONTAINER(Debian)的Host(Mac)Docker

发布于 2025-02-05 05:34:27 字数 2407 浏览 3 评论 0原文

我在我的Mac上使用Debian 的

https://github.com/free2z/free2z/pull/12/files#diff-13bd9d7a30bf46656bc81f1ad5b908a627f9247be3f7d76df862b0578b534fc6

FROM debian

# Create sudo user "dev"
ARG USERNAME=dev
ARG USER_UID=1000
ARG USER_GID=$USER_UID

# Create the `dev` user
# https://code.visualstudio.com/remote/advancedcontainers/add-nonroot-user
RUN groupadd --gid $USER_GID $USERNAME \
    && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \
    && apt-get update \
    && apt-get install -y sudo \
    && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
    && chmod 0440 /etc/sudoers.d/$USERNAME
USER $USERNAME

# Install docker
RUN sudo apt install -y \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
RUN sudo mkdir -p /etc/apt/keyrings
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
RUN echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
RUN sudo apt update
RUN sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
RUN sudo usermod -aG docker $USERNAME

I'm trying to use the host docker socket.通过使用绑定安装。

        "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind",

我在Docker Group和Docker中与Sudo合作的非根户用户:

➜  free2z git:(metarepo) ✗ groups     
dev docker
➜  free2z git:(metarepo) ✗ docker ps     
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
➜  free2z git:(metarepo) ✗ sudo docker ps
CONTAINER ID   IMAGE                                         COMMAND                  CREATED        STATUS        PORTS     NAMES
9167a45c8223   vsc-free2z-597acf8d147e25327effb72c17e8d21f   "/bin/sh -c 'echo Co…"   20 hours ago   Up 20 hours             gallant_morse

I am using a from debian in a VSCode devcontainer on my mac:

https://github.com/free2z/free2z/pull/12/files#diff-13bd9d7a30bf46656bc81f1ad5b908a627f9247be3f7d76df862b0578b534fc6

FROM debian

# Create sudo user "dev"
ARG USERNAME=dev
ARG USER_UID=1000
ARG USER_GID=$USER_UID

# Create the `dev` user
# https://code.visualstudio.com/remote/advancedcontainers/add-nonroot-user
RUN groupadd --gid $USER_GID $USERNAME \
    && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \
    && apt-get update \
    && apt-get install -y sudo \
    && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
    && chmod 0440 /etc/sudoers.d/$USERNAME
USER $USERNAME

# Install docker
RUN sudo apt install -y \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
RUN sudo mkdir -p /etc/apt/keyrings
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
RUN echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
RUN sudo apt update
RUN sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
RUN sudo usermod -aG docker $USERNAME

I'm trying to use the host docker socket. By using a bind mount.

        "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind",

My non-root user in the docker group and docker works with sudo:

➜  free2z git:(metarepo) ✗ groups     
dev docker
➜  free2z git:(metarepo) ✗ docker ps     
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
➜  free2z git:(metarepo) ✗ sudo docker ps
CONTAINER ID   IMAGE                                         COMMAND                  CREATED        STATUS        PORTS     NAMES
9167a45c8223   vsc-free2z-597acf8d147e25327effb72c17e8d21f   "/bin/sh -c 'echo Co…"   20 hours ago   Up 20 hours             gallant_morse

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

魔法少女 2025-02-12 05:34:27

root仍然拥有套接字,您可以将其chown到.devcontainer.json中的非root用户。

"postCreateCommand": "sudo chown dev /var/run/docker.sock",

Root still owns the socket, you can chown it to the non-root user in your .devcontainer.json

"postCreateCommand": "sudo chown dev /var/run/docker.sock",
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文