在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