docker的接口 外部如何访问k8s_Docker外部接口介绍
前言Docker管理(和编排)工具发展很快,强大的k8s、mesos,还有小型的shipyard等。本文只介绍一下Docker API远程管理的机制,以及Shipyard的一些特点。Docker的对外接口Docker的对外接口有两类,一类是只接受本地请求(较安全)的接口,另外一类则允许远程(和本地)连接请求(较不安全)的接口。安全的unix sock模式(默认)默认运行后Docker会监听unix
前言
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 ubuntu # 使用默认的unix sock模式
$ docker -H tcp://127.0.0.1:2375 pull ubuntu # 使用TCP模式
修改为TCP模式后,由于对外公开了可连接的端口,无疑增加了安全风险,所以此模式下Docker不能部署在开放网络中。
Shipyard
Shipyard是一个轻量级的Docker管理工具,它使用unix sock接口管理Docker。Shipyard官方提供的deploy方式是将Shipyard作为一个container部署在Docker服务器中。在部署时,其使用volume将Docker服务器的unix sock mapping到container内部:
docker run -v /var/run/docker.sock:/var/run/docker.sock (省略一些参数) shipyard:shipyard
虽然Shipyard是轻量级管理工具,但其近期基于Docker Swarm重新构建后,具备了基本的container cluster功能。
Shipyard作为API Proxy
上面提到过,虽然Docker可以配置TCP模式以支持远程管理,但有安全隐患。而Shipyard则对外提供了具有认证/授权的API接口,所以可以用Shipyard的API作为Docker管理的Proxy。同时,Shipyard也兼容Docker Remote API,会将此类API直接转发给Docker处理。
更多推荐
所有评论(0)