带VSCode Dev容器的Docker设置中的Docker:如何访问主机上正在运行的Docker容器

带VSCode Dev容器的Docker设置中的Docker:如何访问主机上正在运行的Docker容器,docker,vscode-remote,Docker,Vscode Remote,我使用VSCode dev容器作为使用默认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 \ so

我使用VSCode dev容器作为使用默认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": ["source=/var/run/docker.sock,target=/var/run/docker-host.sock,type=bind"]
这确实允许我访问在本地计算机上运行的Docker守护进程。但是,如果我启动postgres容器:

docker run-e POSTGRES\u USER=USER-e POSTGRES\u PASSWORD=PASSWORD-p 5432:5432-d POSTGRES:9

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

只有当您能够在Dev容器中运行另一个容器时,这个答案才是好的

您可以在docker中使用docker设置Dev容器。通过这种方式,您可以在Dev容器中运行docker容器(这样网络就可以工作了)。Dockerfile看起来像这样。有一个很好的解释

    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

只有当您能够在Dev容器中运行另一个容器时,这个答案才是好的

您可以在docker中使用docker设置Dev容器。通过这种方式,您可以在Dev容器中运行docker容器(这样网络就可以工作了)。Dockerfile看起来像这样。有一个很好的解释

    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