在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