Я использую контейнеры 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?