[英]docker-compose ignores DOCKER_HOST
我正在嘗試在 Bash for Windows (WSL) 上運行 3 個 Docker 映像、MySQL、Redis 和我的一個項目。
為此,我必須連接到在 Windows 上運行的 Docker 引擎,特別是在tcp://locahost:2375
。 我已將以下行附加到.bashrc
:
export DOCKER_HOST=tcp://127.0.0.1:2375
我可以成功運行諸如docker ps
或docker run hello-world
類的docker
命令,但是每當我cd
進入我的項目目錄並運行sudo docker-compose up --build
以加載圖像並啟動容器時,我都會收到錯誤消息:
錯誤:無法連接到 http+docker://localunixsocket 上的 Docker 守護進程 - 它正在運行嗎?
如果它位於非標准位置,請使用 DOCKER_HOST 環境變量指定 URL。
我知道如果我使用-H
參數,我可以提供地址,但我寧願找到一個更永久的解決方案。 出於某種原因, DOCKER_HOST
docker-compose
似乎忽略了DOCKER_HOST
環境變量,我不知道為什么..
你的問題是sudo
。 它是一個與您的 shell 完全不同的程序,除非您明確告訴它,否則它不會傳輸導出的環境。 您可以在/etc/sudoers
(或/etc/sudoers.d/docker
)中添加以下行:
Defaults env_keep += DOCKER_HOST
或者您可以直接將其傳遞給命令行:
sudo DOCKER_HOST=$DOCKER_HOST docker-compose up --build
通過設置DOCKER_HOST
您告訴命令行中每次運行DOCKER_HOST
使用http api ,而不是默認 - 本地主機上的套接字。
默認情況下, http api未打開
$ sudo cat /lib/systemd/system/docker.service | grep ExecStart
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
您可以添加-H tcp://127.0.0.1:2375
的燕鷗在HTTP API在本地主機上的API,但通常要鷗由遠程服務器-H tcp://0.0.0.0:2375
(僅在適當的做防火牆)
所以你需要將/lib/systemd/system/docker.service
更改為下一行
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375 --containerd=/run/containerd/containerd.sock
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.