===============================================
2019/4/30_第6次修改 ccb_warlock
更新说明:
2019/4/30:修改了local英文拼写错误的问题;
2019/4/16:修改了2.1创建目录不正确的问题;
2019/4/10:调整了docker、docker compose的部署方法的引用;
2019/4/6:优化了run、compose、stack的部署方式;
2018/8/3:删除2.1中无用的目录创建命令;
对2.2.2中对容器的资源限制进行扩容;
===============================================
部署完swarm(http://www.cnblogs.com/straycats/p/8978135.html)之后,寻找可以管理swarm的web系统方便管理,经过使用portainer可以满足对swarm的基本管理,而且该项目github上的收藏也较多。
一、前提
- 部署了docker(https://www.cnblogs.com/straycats/p/10680502.html)
- 部署了docker compose(https://www.cnblogs.com/straycats/p/10680769.html)
- 部署了swarm(https://www.cnblogs.com/straycats/p/8978135.html)
- 默认部署的服务器IP:192.168.12.11
- 对于管理swarm,将portainer部署在该swarm管理节点上(一个portainer管理多个主机(或swarm)没用过,估计是通过配置“endpoint”来实现,毕竟接触的业务量小还没经历多主机(集群)管理)
二、部署
2.1 创建目录
mkdir -p /opt/compose/portainer
mkdir -p /usr/docker-vol/portainer/data
PS.由于方便持久化文件定位,这里使用目录映射而不是卷映射来做数据持久化
docker network create --driver=bridge --subnet=172.11.0.0/16 --ip-range=172.11.0.0/16 --gateway=172.11.0.1 --attachable local-net
docker network create --driver=overlay --subnet=172.12.0.0/16 --ip-range=172.12.0.0/16 --gateway=172.12.0.1 --attachable swarm-net
docker run -d --name portainer -v /var/run/docker.sock:/var/run/docker.sock -v /usr/docker-vol/portainer/data:/data -p 9000:9000 --network local-net --cpus 0.5 --memory 200M --restart on-failure portainer/portainer
PS.如果需要移除该容器,可以使用命令
docker stop portainer
docker rm portainer
vi /opt/compose/portainer/docker-compose.yml
将下面的内容添加到docker-compose.yml内,wq保存。
version: '3' services: portainer: image: portainer/portainer volumes: - /var/run/docker.sock:/var/run/docker.sock - /usr/docker-vol/portainer/data:/data ports: - 9000:9000 networks: - local-net networks: local-net: external: true
cd /opt/compose/portainer
docker-compose up -d
PS.如果需要移除该compose文件创建的所有容器,可以使用命令
cd /opt/compose/portainer
docker-compose down
vi /opt/compose/portainer/portainer-stack.yml
将下面的内容添加到portainer-stack.yml内,wq保存。
version: '3.4' services: portainer: image: portainer/portainer volumes: - /var/run/docker.sock:/var/run/docker.sock - /usr/docker-vol/portainer/data:/data deploy: placement: constraints: [node.role == manager] replicas: 1 restart_policy: condition: on-failure resources: limits: cpus: "0.5" memory: 200M update_config: parallelism: 1 delay: 5s monitor: 10s max_failure_ratio: 0.1 order: start-first ports: - 9000:9000 networks: - swarm-net networks: swarm-net: external: true
cd /opt/compose/portainer
docker stack deploy -c portainer-stack.yml portainer-stack
PS.如果需要移除该stack创建的所有service,可以使用命令
docker stack rm portainer-stack
三、
浏览器访问 https://192.168.12.11:9000
填写8位以上密码,创建管理员用户。进入系统后可以再修改8位以内的密码。(某个版本更新后改成了8位以上的要求,坑啊)
选择“Local”,点击“Connect”。
为了方便部署,swarm可以通过portainer的stacks来部署容器,故需要配置需要拉取的镜像仓库。
左侧导航栏选择“Registries”,点击“Add registry”,填写镜像仓库的名称、URL、管理员的账号/密码。
由于拉取的仓库是我内部搭建的私有仓库,故选择“Custom registry”,填写仓库信息。
1.https://www.portainer.io/installation/