前言
Docker管理(和编排)工具发展很快,强大的k8s、mesos,还有小型的shipyard等。本文只介绍一下Docker API远程管理的机制,以及Shipyard的一些特点。
Docker的对外接口
Docker的对外接口有两类,一类是只接受本地请求(较安全)的接口,另外一类则允许远程(和本地)连接请求(较不安全)的接口。
安全的unix sock模式(默认)
默认运行后Docker会监听unix:///var/run/docker.sock,这个对外接口只允许本地root用户连接。由于限定了本地和root用户,所以较为安全。shipyard使用的就是这个接口。
Docker client在执行$ docker pull ubuntu默认连接的就是unix:///var/run/docker.sock。
方便的TCP模式
启动Docker时加上-H tcp://[host]:[port][path]参数,即可启用TCP模式。这个对外的tcp接口则允许本地和远程的所有连接(在此端口上)。
输入以下命令启动TCP模式的Docker:
$ sudo docker daemon -H 0.0.0.0:5555 &
此时,Docker client也必须通过-H参数指定Docker server地址:
$ docker -H tcp://127.0.0.1:5555 pull ubuntu
启动Docker时支持多个-H参数,即对外提供多个接口:
$ sudo docker daemon -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock &
$ docker pull ubunt