docker的接口 外部如何访问k8s_Docker外部接口介绍

本文介绍了Docker的两种对外接口:安全的Unix套接字模式和不安全的TCP模式。默认情况下,Docker使用本地root用户受限的Unix套接字进行通信。通过添加-H参数,可以启用TCP模式,允许远程连接,但增加安全风险。Shipyard作为一个轻量级的Docker管理工具,利用Unix套接字并提供安全的API代理功能。
摘要由CSDN通过智能技术生成

前言

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处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值