簡體   English   中英

docker-compose 忽略 DOCKER_HOST

[英]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 psdocker 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM