Docker - Docker開啟遠程訪問
Docker守護行程套接字
Docker守護行程可以通過三種不同型別的套接字監聽Docker Engine API請求:unix、tcp和fd,
默認情況下,在/var/run/docker.sock處創建一個unix域套接字(或IPC套接字),需要root權限或docker組成員身份,
如果需要遠程訪問Docker守護行程,則需要啟用tcp套接字,請注意,默認設定提供了對Docker守護行程的未加密和未經身份驗證的直接訪問,應該使用內置的HTTPS加密套接字或在其前面放置一個安全的web代理來進行保護,你可以使用-H tcp://0.0.0.0:2375監聽所有網路介面上的2375埠,或使用其IP地址-H tcp://ip:2375監聽特定網路介面上的2375埠,通常使用埠2375與守護行程進行非加密通信,使用埠2376與守護行程進行加密通信,
注意:如果你使用的是HTTPS加密的套接字,請記住,僅支持TLS1.0及更高版本,出于安全原因,SSLv3及以下版本的協議不再受支持,
修改docker.service
vim /usr/lib/systemd/system/docker.service
在[Service]部分,修改ExecStart引數,在最后增加-H tcp://0.0.0.0:2375,監聽所有網路介面上的2375埠,
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375

重新加載組態檔和啟動服務
systemctl daemon-reload && systemctl restart docker
daemon-reload: 重新加載服務的組態檔,要是服務的組態檔發生變化,則需要重新加載,restart:重新啟動服務,
查看dockerd行程是否正在監聽2375埠:
[root@izoq008ryseuupz ~]# netstat -antp | grep dockerd
tcp6 0 0 :::2375 :::* LISTEN 22494/dockerd
netstat命令用于顯示網路狀態,部分選項的作用如下:
-a或--all:顯示所有連線中的Socket,-n或--numeric:直接使用IP地址,而不通過域名服務器,-t或--tcp:顯示TCP傳輸協議的連線狀況,-p或--programs:顯示正在使用Socket的程式識別碼和程式名稱,
測驗
接下來測驗一下通過localhost是否能使用Docker Engine API,
[root@izoq008ryseuupz ~]# curl http://localhost:2375/version
{"Platform":{"Name":"Docker Engine - Community"},"Components":[{"Name":"Engine","Version":"19.03.13","Details":{"ApiVersion":"1.40","Arch":"amd64","BuildTime":"2020-09-16T17:02:21.000000000+00:00","Experimental":"false","GitCommit":"4484c46d9d","GoVersion":"go1.13.15","KernelVersion":"3.10.0-514.26.2.el7.x86_64","MinAPIVersion":"1.12","Os":"linux"}},{"Name":"containerd","Version":"1.3.7","Details":{"GitCommit":"8fba4e9a7d01810a393d5d25a3621dc101981175"}},{"Name":"runc","Version":"1.0.0-rc10","Details":{"GitCommit":"dc9208a3303feef5b3839f4323d9beb36df0a9dd"}},{"Name":"docker-init","Version":"0.18.0","Details":{"GitCommit":"fec3683"}}],"Version":"19.03.13","ApiVersion":"1.40","MinAPIVersion":"1.12","GitCommit":"4484c46d9d","GoVersion":"go1.13.15","Os":"linux","Arch":"amd64","KernelVersion":"3.10.0-514.26.2.el7.x86_64","BuildTime":"2020-09-16T17:02:21.000000000+00:00"}
curl是常用的命令列工具,用來請求Web服務器,不帶任何引數時,curl發出GET請求,
很顯然可以通過localhost使用Docker Engine API,
再來測驗一下遠程通過主機IP能否使用Docker Engine API,請求http://ip:2375/version得到的頁面如下圖所示,很顯然是可以的,

IDEA也是可以進行遠程連接的,

可能的問題
如果遠程訪問不了,可能需要設定一下服務器的防火墻,應該是2375埠沒有暴露出去,所以遠程訪問不了,博主是阿里云的服務器(Centos7.3),

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/238038.html
標籤:其他
