1.docker-compose是什么

2.docker-compose能做什么

3.docker-compose安装

4.docker-compose的使用步骤

5.docker-compose的常用命令

6.docker-compose实践

1.docker-compose是什么

如果我们现在有很多个Docker镜像,按照以往的方式,我们需要一个个手动将它们启动,镜像一多,势必会非常麻烦,docker-compose就是用来解决这个问题的。

Compose是Docker公司的一个工具,可以管理多个Docker容器组成一个应用。我们只需要写好一个YAML格式的docker-compose.yml文件编写好多个容器之间的依赖关系,启动配置。然后只需要一个命令,就可以批量启动这些容器了。

2.docker-compose能做什么

因为docker本身占用资源就非常少,所以我们一般只会在一个docker里面运行一个服务,但是这样做又会出现了这样的问题:

1)如果我们有成百上千的服务需要部署,然后我们要为每个服务单独编写Dockerfile之后,再构建镜像,创建容器,然后再启动,这样手工操作的成本非常高。

2)假设我们现在要部署一个服务,除了Web服务本身,还需要加上mysql,redis等等数据库,包括了一系列的服务依赖,我们得记住这些服务的启动顺序,不然可能导致服务启动不了。

Compose允许用户通过一个单独的docker-compose.yml文件来定义一组关联的应用容器作为一个项目,可以很轻易地通过配置文件来定义多个容器之间的依赖关系启动顺序通过一个命令就能批量启动这些容器,很好地解决了容器编排的问题

3.docker-compose安装

我们可以查看官网来学习安装步骤:

https://docs.docker.com/compo...

image.png

步骤一:
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
步骤二:
chmod +x /usr/local/bin/docker-compose
步骤三:
docker-compose --version

安装成功:
image.png

image.png

4.docker-compose的使用步骤

我们使用docker-compose的时候,一般有三个步骤

1)编写Dockerfile定义各个微服务应用并构建出对应的镜像文件。

2)使用docker-compose.yml,完整安排好所有服务,以及依赖关系。

3)执行docker-compose up 命令来启动并运行整个应用程序,完成一键部署上线。

5.docker-compose的常用命令

docker-compose -h                           # 查看帮助
docker-compose up                           # 启动所有docker-compose服务
docker-compose up -d                        # 启动所有docker-compose服务并后台运行
docker-compose down                         # 停止并删除容器、网络、卷、镜像。
docker-compose exec  yml里面的服务id                 # 进入容器实例内部  docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
docker-compose ps                      # 展示当前docker-compose编排过的运行的所有容器
docker-compose top                     # 展示当前docker-compose编排过的容器进程
 
docker-compose logs  yml里面的服务id     # 查看容器输出日志
docker-compose config     # 检查配置
docker-compose config -q  # 检查配置,有问题才有输出
docker-compose restart   # 重启服务
docker-compose start     # 启动服务
docker-compose stop      # 停止服务

6.docker-compose实践

假设我们现在要启动一个tomcat服务,但是这个tomcat服务依赖于redis和mysql,也就是说redis和mysql要先启动,我们才能启动tomcat,我们将如何编写这个docker-compose.yml文件:

version: "3"
 
services:
  microService:
    image: tomcat:latest
    container_name: mytomcat01
    ports:
      - "8080:8080"
    depends_on: 
      - redis
      - mysql

  redis:
    image: redis:latest
    ports:
      - "6379:6379"
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data

  mysql:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_USER: 'root'
      MYSQL_PASSWORD: 'root'
    ports:
       - "3306:3306"
    volumes:
       - /app/mysql/db:/var/lib/mysql

docker-compose up -d

image.png
启动三个服务成功!

关停:
image.png


苏凌峰
73 声望38 粉丝

你的迷惑在于想得太多而书读的太少。