文章目录

  • Docker Compose
  • 安装
  • 体验
  • yaml 规则
  • 开源项目
  • Docker Swarm


Docker Compose

介绍:
使用 Docker Compose 来高效管理容器,定义启动多个容器

批量容器编排

Compose 是 Docker 官方的开源项目。需要安装

Dockerfile 让程序在任何地方运行。

Compose.yml

version: "3.9"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

概念

  • 服务services,容器,应用。(web,redis,mysql…)
  • 项目 project,一组关联的容器。


安装

1、下载

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

docker-compose部署svn docker compose docker swarm_Docker

2、授权

sudo chmod +x /usr/local/bin/docker-compose

docker-compose部署svn docker compose docker swarm_docker_02

体验

参考官方步骤 https://docs.docker.com/compose/gettingstarted/

1、 应用 app.py
2、Dockerfile 应用打包为镜像
3、Docker-compose yaml 文件 (定义整个服务,需要的环境,web、redis)
4、启动 compose 项目 ($ docker-compose up)

流程:
1.创建网络
2.执行 Docker-compose yaml
3.启动服务

app.py 后面加上这个

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

Dockerfile

FROM python:3.6-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

docker-compose.yml

version: "3.8"
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
  redis:
    image: "redis:alpine"
docker-compose build 
docker-compose up

docker-compose部署svn docker compose docker swarm_docker-compose部署svn_03


docker-compose部署svn docker compose docker swarm_docker-compose_04


docker-compose部署svn docker compose docker swarm_docker_05


docker-compose部署svn docker compose docker swarm_redis_06

[root@localhost composetest]# docker service ls
Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.

默认服务名 文件名_服务名_num

多个服务器,集群,A B _num 副本数量 服务redis 服务 => 4个副本

集群状态。服务不可能只有一个运行实例。

3、网络规则

项目的内容在同一个网络下,可以用域名访问

docker-compose部署svn docker compose docker swarm_redis_07

docker network inspect composetest_default

docker-compose部署svn docker compose docker swarm_Docker_08


HA

停止:docker-compose down 或者 Ctrl+c

docker-compose部署svn docker compose docker swarm_docker-compose_09


好处

通过docker-compose 编写 yaml 配置文件,可以通过 compose 一键启动、停止 所有的服务

Docker 小结
1、Docker 镜像。run => 容器
2、DockerFile 构建镜像(服务打包)
3、docker-compose 启动项目(编排、多个微服务/环境)
4、Docker 网络

yaml 规则

参考连接https://docs.docker.com/compose/compose-file/compose-file-v3/

# 3层

version: '' # 版本
service:	# 服务
	服务1: web 	
	  # 服务配置 
	  images
	  build
	  network
	  ...
	服务2: redis
	  ...
	服务3: redis
# 其他配置 网络 全局..
volumes:
network:
configs:


开源项目

wordpress 参考连接:https://docs.docker.com/samples/wordpress/

1、下载项目(docker-compose.yaml)

2、如果需要文件(Dockerfile)

3、文件准备,一键启动项目

后台启动

[root@localhost composetest]# docker-compose up -d
Starting composetest_web_1   ... done
Starting composetest_redis_1 ... done
# 启动不成功 可重写构建
docker-compose up --build

关闭和清理

docker-compose down
docker-compose down --volumes

Docker Swarm