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.servicevim /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 dockerdtcp6 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)。
到此這篇關于Docker開啟遠程訪問的實現方式的文章就介紹到這了,更多相關Docker 遠程訪問內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章:
1. Spring @Primary和@Qualifier注解原理解析2. java使用FFmpeg合成視頻和音頻并獲取視頻中的音頻等操作(實例代碼詳解)3. 詳解php如何合并身份證正反面圖片為一張圖片4. Java規則引擎Easy Rules的使用介紹5. AJAX實現省市縣三級聯動效果6. 詳解springBoot啟動時找不到或無法加載主類解決辦法7. SpringBoot+SpringCache實現兩級緩存(Redis+Caffeine)8. ASP.NET MVC視圖頁使用jQuery傳遞異步數據的幾種方式詳解9. Java基于redis和mysql實現簡單的秒殺(附demo)10. php設計模式之模板模式實例分析【星際爭霸游戲案例】
