Docker в Docker настройке с VSCode Dev Containers: как получить доступ к работающим docker контейнерам на хост-машине - PullRequest
1 голос
/ 09 мая 2020

Я использую контейнеры 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_USER=user -e POSTGRES_PASSWORD=password -p 5432:5432 -d postgres:9

, я могу подключиться к нему с моей локальной машины, но не из контейнера Dev. Есть ли способ указать параметр сети при развертывании контейнера Dev (например, разрешить хост-сеть или создать общую сеть)? Или есть другой способ подключиться к другому работающему контейнеру docker из моего контейнера Dev?

1 Ответ

0 голосов
/ 16 августа 2020

Этот ответ хорош только в том случае, если вы можете запустить другой контейнер в своем контейнере Dev.

Вы можете настроить свой контейнер Dev с помощью docker -in- docker. Таким образом, вы можете запускать docker контейнеров в своем Dev-контейнере (и, таким образом, сеть будет работать). 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
...