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

你可能感兴趣的:(Docker)