docker-compose
docker-compose(单机版)
1、配置文件
服务services:需要运行的容器配置,可以理解为原先用docker run命令后面跟的一系列配置信息,都配置在这个下面
网络network:docker-compose 公共自定义网络管理,配置好以后,可以直接在services中引用该网络配置,这个配置可以多个services使用
数据卷volumes:统一数据卷管理,可以给多个service使用
docker-compose编排文件
version: '2.23.3' services: nginx: image: "nginx" container_name: "nginx_compose" restart: "always" networks: - nginx_net volumes: - /opt/nginx:/usr/share/nginx/html environment: APP_ENV: dev dns: - 114.114.115.115 networks: nginx_net: driver: bridge ipam: driver: default config: - subnet: 188.18.0.0/16 gateway: 188.18.0.1
docker-swarm(分布式)
swarm是docker管理docker集群的平台,几乎全部用go语言来完成设计的,它是一群docker宿主机变成一个单一的虚拟主机,swarm使用标准的docker api接口作为其前端的访问入口,换言之,各种形式的dockerclient(compose,docker-py)均可以直接与swarm通信,甚至docker本身都可以很容易的与swarm集成,这大大方便了用户将原本基于单节点的系统移植到swarm上,同时swarm内置了对docker网络插件的支持,用户也很容易的部署跨主机的容器集群服务。
node:运行docker的主机可以主动初始化一个swarm集群或者加入一个已存在的swarm集群,这样这个运行docekr的主机就成为了一个swarm集群节点(node)
task:任务(task)是swarm中最小的调度单位,目前来说就是一个单一的容器。
service:服务(service)是指一组任务的集合,服务定义了任务的属性。服务有两种模式:replicated services按照一定规则在各个工作节点上运行指定个数的任务。global services每个工作节点上运行一个任务。
两种模式通过docker services create的 --mode参数指定。
一、集群搭建
1、初始化集群
登陆管理节点,并执行以下命令:docker swarm init --advertise-addr 192.168.113.120
使用docker info可以查看swarm集群状态 docker node ls可以查看集群节点信息
docker service create --replicas 2 -p 80:80 --name nginx_swarm nginx 创建一个服务
docker service inspect --pretty nginx swarm 查看服务状态
https://docs.docker.com/compose/compose-file/compose-file-v2/
基于docker swarm 运行portainer
docker service create -p 9000:9000 --replicas 1 --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock --mount type=volume,src=portainer_data,dst=/data portainer/portainer
docker 方式运行portainer
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer/portainer