Dokcer遠程訪問實現類api功能

一、適用範圍

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接口的調用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章