Docker遠程連接和Docker Remote Api

在Docker生態系統中一共有3種API:Registry API、Docker Hub API、Docker Remote API

這三種API都是RESTful風格的。這裏Remote API是通過程序與Docker進行集成和交互的核心內容。

Docker Remote API是由Docker守護進程提供的。默認情況下,Docker守護進程會綁定到一個所在宿主機的套接字:unix:///var/run/docker.sock ,Docker守護進程需要以root權限來運行,以便它有足夠的權限去管理所需要的資源。如果系統中存在docker用戶組,docker會將上面所說的套接字的所有者設定爲該用戶組。因此任何屬於docker用戶組的用戶都可以運行docker而無需root權限。

1.連接到遠程的Docker守護進程

可以通過以下指令開啓、關閉、重啓docker服務:

service docker start

service docker stop

service docker restart

如使用 service docker start 其實就是執行了 /bin/systemctl start docker.service 命令

建議重啓使用:

systemctl daemon-reload

systemctl restart docker.service

啓動配置文件:

Ubuntu: /etc/default/docker

CentOS: /etc/sysconfig/docker

但是比較奇怪的是當我配置了docker的啓動文件後重啓docker daemon後,並沒有起到效果,不過查看了docker.service文件時發現,好像缺少了對EnvironmentFile的引用,應該是這個原因,在docker1.9以上默認取消了對環境變量和EnvironmentFile的引用[我的是Ubuntu所以在啓動文件/etc/defualt/docker 中加入DOCKER_OPTS = " -H=unix:///var/run/docker.sock -H=0.0.0.0:4232" ]不過沒關係,還有兩種方式可以使用訪問docker守護進程:

  • docker daemon -H tcp://0.0.0.0:2375 -> 前提是docker daemon關閉的情況下,而且每次啓動docker daemon 必須添加 -H 參數
  • 直接修改 /var/systemd/system/docker.service 中的ExecStart[啓動配置] -> ExecStart= /usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

對於docker 客戶端訪問也必須指定 -H 連接docker 守護進程的socket , 比如:docker -H tcp:192.168.1.67:2375 run -d web:v4

當然還可以用HTTP提供的REST API訪問,地址:https://docs.docker.com/develop/sdk/#api-version-matrix點擊打開鏈接。選擇相應的版本即可,我之前的畢業設計開發的docker圖形化的管理界面正是使用的是1.12版本的API實現的。

參考自:

第一本Docker書

http://www.cnblogs.com/52fhy/p/5638571.html

http://www.cnblogs.com/51kata/p/5267687.html

http://blog.csdn.net/billvsme/article/details/48882951

http://blog.csdn.net/liu306487103/article/details/52222000

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