4.3docker基礎詳細版--docker的C/S模式及遠程訪問

docker C/S模式


server-client

docker的C/S模式結構可以如下圖:
這裏寫圖片描述

docker 的守護進程即server端運行在宿主機上,守護進程在啓動後一直在後端運行,而用戶不會直接和守護進程交互,而是和docker的客戶端即docker命令行接口交互,從用戶接受命令傳遞給守護進程。守護進程接受到命令後執行並返回運行結果。

server-RemoteAPI

除了使用docker命令行接口與server端進行通信外,還可以使用Remote API進行通信。它是一種RESTful風格的API,即可自行編寫程序與docker進行集成。這樣的C/S架構的模式如下圖:
這裏寫圖片描述

C/S模式的連接方式


docker客戶端和守護進程間通過socket進行連接,docker提供了三種連接模式:

unix:///var/run/docker.sock
tcp://host:port
fd://socketfd

其中,unix:///var/run/docker.sock是默認的連接方式們可以通過配置修改爲其他的連接方式。

這裏寫圖片描述

這樣意味着docker的client和server可以在一臺服務器上或不同服務器上

實驗


通過執行ps -ef | grep docker來查看docker是否運行,如果docker在運行,name執行docker version查看docker的版本

這裏寫圖片描述

這裏執行的docker version命令就是利用docker的client端來和server端進行交互的

想要通過RemoteAPI來和docker進行交互,則通過nc -U /var/run/docker.sock來連接docker的socket,然後通過輸入GET請求來獲取server端信息:
這裏寫圖片描述

docker的遠程訪問


環境準備

兩臺虛擬機,安裝docker,確保docker的client和version的版本一致。

修改服務端啓動文件

在centos7下docker的啓動文件爲/etc/sysconfig/docker,打開這個文件,加入如下的一行:

OPTIONS='--label name=docker_server_1 -H tcp://0.0.0.0:2375'

-H 在啓動中指定docker的socket連接方式,遠程連接指定tcp連接。

修改完後重啓服務端docker服務:

service docker restart

然後查看本機的ip地址,這裏我的是:192.168.177.138,在客戶端使用curl命令進行遠程連接:

curl http://192.168.177.138:2375/info

這裏寫圖片描述

可以看到成功顯示出了info接口的信息,且label的名字是在server端設置的label名,說明客戶端成功遠程連接了server端。

上邊的通過curl的方式連接其實是RESTfulAPI的連接,也可以通過docker的client命令行連接,同樣通過-H指定連接方式,命令如下:

docker -H tcp://192.168.177.138:2375/ info

同樣輸出了第一臺服務器docker的info信息

簡化連接命令

上述的連接命令都要使用-H來制定連接的服務端ip,docker提供了默認的環境變量DOCKER_HOST,通過設置它的值爲需要連接的服務端ip來在命令中省去-H參數,設置如下:

export DOCKER_HOST="tcp://192.168.177.138:2375/"

這樣,現在使用命令docker info連接的就是服務端的docker的info信息了。

當使用完畢,可以將這個環境變量置空:export DOCKER_HOST="",這樣再連接就是本地docker了。

設置docker遠程連接的主機可以連接本機

在設置了遠程連接的服務器上運行docker info會發現:

這裏寫圖片描述

這時可以這樣設置,修改啓動配置文件中剛增加的OPTIONS爲:

OPTIONS='--label name=docker_server_1 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock'

可以看出-H指定的連接方式可以是多個

然後重啓docker服務就可以本地連接了。

本文轉自:這裏

發佈了13 篇原創文章 · 獲贊 25 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章