我們在docker實戰(二)中聊了一些docker架構的內容,希望為大家呈現一個docker技術的全景圖或鳥瞰圖,不過考慮到一次聊太多大家容易消化不良,或者地鐵公交甚至蹲坑時間不夠完成全篇閱讀影響學習效果,打算合理控制每一篇的篇幅,努力做到關注公眾號IEEE並認真閱讀文章的朋友能夠每天進步一點點。
我們接著聊Docker Daemon。它運行在 Docker Host 上,負責創建、運行、監控容器,構建、存儲鏡像。
運行過程的作用可能有以下幾種:
向 Docker Registry 獲取鏡像。
通過 GraphDriver 執行容器鏡像的本地化操作。
通過 NetworkDriver 執行容器網絡環境的配置。
通過 ExecDriver 執行容器內部運行的執行工作。
Docker Daemon 和 Docker Client 的啟動都是通過可執行文件 Docker 來完成的,兩者的啟動流程非常相似。
Docker 可執行文件運行時,運行代碼通過不同的命令行 Flag 參數,區分兩者,並最終運行兩者各自相應的部分。
啟動 Docker Daemon 時,一般可以使用下面的命令來完成:
docker --daemon = truedocker –d
docker –d = true
再由 Docker 的 main() 函數來解析以上命令的相應 Flag 參數,並最終完成 Docker Daemon 的啟動。
下面上一個 Docker Daemon 的啟動流程圖:
默認配置下,Docker Daemon 只能響應來自本地 Host 的客戶端請求。如果要允許遠程客戶端請求,需要在配置文件中打開 TCP 監聽。
具體操作步驟如下:
1、編輯輯配置文件
/etc/systemd/system/multi-user.target.wants/docker.service,在環境變量 ExecStart 後面添加 -H tcp://0.0.0.0,允許來自任意 IP 的客戶端連接。
2、重啟 Docker Daemon:
systemctl daemon-reload
systemctl restart docker.service
3、通過以下命令即可實現與遠程伺服器通信:
docker -H 伺服器IP位址 info
稍微解釋以下,-H 是用來指定伺服器主機,info 子命令用於查看 Docker 伺服器的信息。
未完待續,歡迎關注微信公眾號IEEE一起品味技術細節,也可以加微信IEEE2000備註加群和大牛們切磋交流。