Docker開啟遠程訪問的實現(xiàn)方式
Docker守護進程套接字
Docker守護進程可以通過三種不同類型的套接字監(jiān)聽Docker Engine API請求:unix、tcp和fd。
默認情況下,在/var/run/docker.sock處創(chuàng)建一個unix域套接字(或IPC套接字),需要root權(quán)限或docker組成員身份。
如果需要遠程訪問Docker守護進程,則需要啟用tcp套接字。請注意,默認設置提供了對Docker守護進程的未加密和未經(jīng)身份驗證的直接訪問,應該使用內(nèi)置的HTTPS加密套接字或在其前面放置一個安全的web代理來進行保護。你可以使用-H tcp://0.0.0.0:2375監(jiān)聽所有網(wǎng)絡接口上的2375端口,或使用其IP地址-H tcp://ip:2375監(jiān)聽特定網(wǎng)絡接口上的2375端口。通常使用端口2375與守護進程進行非加密通信,使用端口2376與守護進程進行加密通信。
注意:如果你使用的是HTTPS加密的套接字,請記住,僅支持TLS1.0及更高版本。出于安全原因,SSLv3及以下版本的協(xié)議不再受支持。
修改docker.service
vim /usr/lib/systemd/system/docker.service
在[Service]部分,修改ExecStart參數(shù),在最后增加-H tcp://0.0.0.0:2375,監(jiān)聽所有網(wǎng)絡接口上的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: 重新加載服務的配置文件,要是服務的配置文件發(fā)生變化,則需要重新加載restart:重新啟動服務。
查看dockerd進程是否正在監(jiān)聽2375端口:
[root@izoq008ryseuupz ~]# netstat -antp | grep dockerd tcp6 0 0 :::2375 :::* LISTEN 22494/dockerd
netstat命令用于顯示網(wǎng)絡狀態(tài),部分選項的作用如下:
-a或--all:顯示所有連線中的Socket。-n或--numeric:直接使用IP地址,而不通過域名服務器。-t或--tcp:顯示TCP傳輸協(xié)議的連線狀況。-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服務器。不帶任何參數(shù)時,curl發(fā)出GET請求。
很顯然可以通過localhost使用Docker Engine API。
再來測試一下遠程通過主機IP能否使用Docker Engine API,請求http://ip:2375/version得到的頁面如下圖所示,很顯然是可以的。

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

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

到此這篇關于Docker開啟遠程訪問的實現(xiàn)方式的文章就介紹到這了,更多相關Docker 遠程訪問內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
docker打包鏡像后EasyExcel報錯,dockerfile缺少字體的解決
解決Docker打包鏡像后EasyExcel報錯的問題:1. Dockerfile增加字體配置;2. 使用EasyExcel的write時添加"inMemory"參數(shù)為true,開啟內(nèi)存處理模式(不推薦,1W數(shù)據(jù)以內(nèi)可以考慮)2025-02-02
利用docker搭建php7和nginx運行環(huán)境全過程(官方鏡像)
docker提供了在服務端分布式的部署應用,這樣的好處是方便維護和升級。下面這篇文章主要給大家介紹了利用docker搭建php7和nginx運行環(huán)境的相關資料,搭建過程中運用的是官方鏡像,需要的朋友可以參考借鑒,下面來一起看看吧。2017-05-05
Docker快速部署gitlab+gitlab-runner實例
這篇文章主要介紹了Docker快速部署gitlab+gitlab-runner實例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
使用腳本一鍵打包并上傳docker鏡像的實現(xiàn)代碼
這篇文章主要介紹了使用腳本一鍵打包并上傳docker鏡像的實現(xiàn)代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02

