介绍
docker 官方doc中描述了docker涉及到的包括,Dockerfile,engine,cloud,hub,machine,swarm ... 主要都是一些cli命令控制,是否有些比较方便的UI来管理docker呢?
DockerUI
这个应用已经被废弃,新的开发任务已经转移到了portainer
portainer
localhost:
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
remote:
docker run -d -p 9000:9000 portainer/portainer -H tcp://
swarm:
docker service create \ --name portainer \ --publish 9000:9000 \ --constraint 'node.role == manager' \ --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \ portainer/portainer \ -H unix:///var/run/docker.sock
Protainer 提供了基本的Docker管理.其中包括,容器管理,镜像,网络,存储等常用管理.作为一款本地测试使用还是比较简单和实用的.
shipyard
基于swarm ,负责管理集群环境.
docker-machine create --driver virtualbox m1 docker-machine create --driver virtualbox n1 docker-machine create --driver virtualbox n2
docker-machine已经启动了TLS,2376端口作为对外端口,这里免去了配置TLS, 详细的方法可以参考官方文档,m1 作为master,n1,n2作为两个node进行测试. 官方通过docker-machine 可以快速的构建swarm,可以看这里,因为demo使用的服务发现是基于token的,生产环境官方不建议使用.
安装portainer 看看这三个docker 环境.
m1:
安装数据库:docker run -ti -d --restart=always --name shipyard-rethinkdb rethinkdb
.
安装服务发现:docker run -ti -d -p 4001:4001 -p 7001:7001 --restart=always --name shipyard-discovery microbox/etcd -name discovery
安装Swarm Manager :
with TLS
docker run \
-ti \
-d \
-v /Users/jun/.docker/machine/machines/m1:/certs:ro \
--restart=always \
--name shipyard-swarm-manager \
swarm:latest \
manage \
--tlsverify --tlscacert=/certs/ca.pem --tlscert=/certs/cert.pem --tlskey=/certs/key.pem \
--host tcp://0.0.0.0:3376 etcd://192.168.99.100:4001`
绑定n1,n2两个节点:
docker run \
-ti \
-d \
--restart=always \
--name shipyard-swarm-agent \
swarm:latest \
join --addr 192.168.99.101:2376 etcd://192.168.99.100:4001
docker run \
-ti \
-d \
--restart=always \
--name shipyard-swarm-agent \
swarm:latest \
join --addr 192.168.99.102:2376 etcd://192.168.99.100:4001
启动controller(shipyard):
docker run \
-ti \
-d \
-v /Users/jun/.docker/machine/machines/m1:/certs:ro \
--restart=always \
--name shipyard-controller \
--link shipyard-rethinkdb:rethinkdb \
--link shipyard-swarm-manager:swarm \
-p 8080:8080 \
shipyard/shipyard:latest \
server \
-d tcp://172.17.0.5:3376 \
--rethinkdb-addr "172.17.0.3:28015" \
--tls-ca-cert=/certs/ca.pem --tls-cert=/certs/cert.pem --tls-key=/certs/key.pem
在使用shipyard的时候发现link好像没用,因为两个ip -d tcp://swarm:3376
--rethinkdb-addr "rethinkdb:28015" 不起作用.因为如果按照官方文档配置,我的电脑该容器一直是restarting,想进去看看hosts都没法看.
Rancher
这个厉害了,容器管理平台 目前比较出名的有google的k8s,apache的mesos, 之后就是docker的swarm, swarm提供了基于dockerAPI,而k8s号称谷歌几十年最佳实践,而mesos更是为成千集群服务. rancher提供了全平台的容器管理(支持swarm,k8s,mesos).基础的操作包括Host,账户设置等.这里
Rancher swarm
- 创建一个env ,rancher已经提供了一个swarm模板,使用模板创建一个swarm-test 环境.
- 配置主机之后,将会自动初始化swarm环境,这里提供了一个CLI工具可以实现docker的命令
- 创建一个应用堆栈 swarm-stack,容器通过镜像创建,如果是一个集群则启动容器将在不同的机器上面,比如创建一个常用的服务,redis,mysql,tomcat,java,nginx,这些应用分布在不同的机器上面,每个容器就代表了一种服务,多个服务组成了堆栈,
- 可以配置负载均衡,这里涉及到一些 scale, haproxy 一些概念,官方文档上面只是说明scale是一种容灾方案,如果一个容器出现问题,则就会使用备用容器.haproxy,则是一种生产环境的负载均衡实现.
Rancher k8s
通过UI我们来学习下k8s的概念,以及如何使用