一、適用範圍
Docker的遠程訪問主要用於Python,Java等調用遠程api進行管理,例如適用Python編寫一個Dcoker管理器。
二、實現方法
在瞭解實現方法之前,先簡單瞭解一下Dcoekr的基本概念。
Docker 架構
Docker使用了C/S體系架構,Docker客戶端與Docker守護進程通信,Docker守護進程負責構建,運行和分發Docker容器。Docker客戶端和守護進程可以在同一個系統上運行,也可以將Docker客戶端連接到遠程Docker守護進程。
Docker客戶端和守護進程使用REST API通過UNIX套接字或網絡接口進行通信。所以說,Docker原生是支持使用客戶端進行訪問的,類似MySQL。
三、演示
3.1、系統信息
理論較新的Linux發行版的配置方法都一樣
root@ubuntu20:~# cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
3.2、配置Docker遠程訪問
3.2.1、查看默認配置參數
想要開啓遠程訪問,就需要修改下面這個配置文件
/usr/lib/systemd/system/docker.service
首先查看默認配置參數並篩選關鍵信息“ExecStart”
root@ubuntu20:~# cat /usr/lib/systemd/system/docker.service | grep ExecStart
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
3.2.2、添加遠程訪問參數
需要添加的參數如下:
遠程訪問參數
-H tcp://0.0.0.0:2375
或者直接使用下面的替換命令直接添加
添加遠程訪問參數
sed -i 's#ExecStart=.*#ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock#' /usr/lib/systemd/system/docker.service
修改效果如下:
root@ubuntu20:~# cat /usr/lib/systemd/system/docker.service | grep ExecStart
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
修改配置之後,需要手動重新加載配置,命令如下
systemctl daemon-reload&&systemctl restart docker
3.2.3、驗證
首先在本地使用-H參數進行操作
docker -H 1.1.1.11:2375 images
然後使用另一臺虛擬機訪問
接着反過來使用-H參數訪問未開啓遠程訪問的虛擬機
總結:
雖然通過修改參數實現類似MySQL那樣的訪問模式(Docker貌似不支持設置賬戶密碼,只能設置白名單IP),但是使用這種方法去管理其他主機的Docker的時候,必須要求本身安裝有這個Docker客戶端,這是一個缺點,所以想要真正的實現遠程管理Docker還是得學習API接口的調用