gpt4 book ai didi

使用 VSCode 开发容器的 Docker 设置中的 Docker : How to access running docker containers on the host machine

转载 作者:行者123 更新时间:2023-12-02 19:49:42 26 4
gpt4 key购买 nike

我正在使用 VSCode 开发容器作为使用默认 golang 图像的 golang 开发环境。我将以下代码片段添加到 Dockerfile 以下载 Docker CLI:

# Add Docker
RUN apt-get update \
&& apt-get -y install --no-install-recommends \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common \
&& curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - \
&& add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" \
&& apt-get update \
&& apt-get -y install --no-install-recommends docker-ce \
# Clean up
&& apt-get autoremove -y \
&& apt-get clean -y \
&& rm -rf /var/lib/apt/lists/*

# Symlink docker socket
RUN ln -s "/var/run/docker-host.sock" "/var/run/docker.sock"

并在 devcontainer.json 的 mounts 中添加了如下的 mount:

"mounts": ["source=/var/run/docker.sock,target=/var/run/docker-host.sock,type=bind"]

这确实允许我访问在我的本地机器上运行的 Docker 守护进程。但是,如果我启动一个 postgres 容器:

docker run -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password -p 5432:5432 -d postgres:9

我可以从我的本地机器连接到它,但不能从 Dev Container 内部连接。有什么方法可以在启动开发容器时指定网络选项(例如允许主机网络或创建共享网络)?或者有没有其他方法可以从我的开发容器内部连接到另一个正在运行的 docker 容器?

最佳答案

只有当您能够在您的 Dev Container 中运行其他容器时,这个答案才有用。

您可以使用 docker-in-docker 设置开发容器。这样你就可以在你的开发容器中运行 docker 容器(这样网络就可以工作了)。 Dockerfile 看起来像这样。有一个 medium article这很好地解释了这一点。

    FROM docker:19.03.12-dind-rootless@sha256:7606255ca83a7f516fae1b78299b79774f1f798ba9fc792a7231e7b0967ddb05
USER root

# Change this with your dependencies, note that this uses alpine apk
RUN apk add git bash curl make vim go

USER rootless
ENV DOCKER_HOST=unix:///var/run/user/1000/docker.sock

关于使用 VSCode 开发容器的 Docker 设置中的 Docker : How to access running docker containers on the host machine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61696029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com