[英]Link docker.sock in /var/run
<TL;DR>
我有一個依賴於 docker UNIX socket /var/run/docker.sock
的二進制工具
我在 Gitlab CI 作業中運行二進制文件,因此在 TCP 套接字tcp://docker:2375
上具有 docker
如何將 UNIX 套接字 /var/run/docker.sock 與 TCP tcp://docker:2375
綁定?
</TL;DR>
[我有的]
```yml services: - docker:19-dind variables: DOCKER_HOST: tcp://docker:2375 DOCKER_TLS_CERTDIR: "" ```
[問題]
/var/run/docker.sock
(在二進制文件中硬編碼 + 沒有用於更改它的 cli 標志(參見此處))tcp://docker:2375
(請參閱此處)[我試過的]
# TEST 1
ln -s tcp://docker:2375 /var/run/docker.sock
./twistcli sandbox image_to_scan
ERROR: Get "http://unix.sock/version": dial unix /var/run/docker.sock: connect: no such file or directory
# TEST 2
touch /var/run/docker.sock
socat -v TCP-LISTEN:docker:2375,fork UNIX-CONNECT:/var/run/docker.sock
./twistcli sandbox image_to_scan
ERROR: cannot connect to Docker endpoint
# TEST 3 (@larsks' proposition)
socat -v tcp-connect:docker:2375 unix-listen:/var/run/docker.sock,fork
ERROR: Failed to extract Platform data from docker version: failed to fetch docker api version 'Get "http://unix.sock/version": EOF'
[我的問題]
您對socat
命令的想法是正確的,但是您的參數倒退了。 您已經有一個 Docker 守護程序在端口 2375 上偵聽,因此您不希望socat
在該地址上偵聽:您希望socat
在 unix 套接字上偵聽,並代理連接到 ZB136EF5F6A01D81699ZAC3CF7 套接字:
socat -v tcp-connect:docker:2375 unix-listen:/var/run/docker.sock,fork
有了這個,我可以使用本地 Unix 套接字成功訪問啟用 TCP 的遠程 docker 守護程序。
謝謝您的幫助!
反轉 2 有幫助,但現在我Failed to extract Platform data from docker version: failed to fetch docker api version 'Get "http://unix.sock/version": EOF'
./twistcli 沙箱 1/2 (gitlab)
./twistcli 沙箱 2/2 (gitlab)
(抱歉, I need 10 reputation to post images
)
在 WSL2 上也發生了同樣的情況,我也在socat
上安裝了 docker.sock:
./twistcli 沙盒 1/1 (wsl2)
編輯:我做了一些挖掘。 將我的 WSL2 機器與socat
一起使用,我可以運行docker images
和docker ps
。 但是, docker run
永遠掛起 + 退出 socat 命令會在 docker 運行時出現 EOF 錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.