dockercompose

docker-compose

  1. 为什么需要docker-compose
    • python编写的docker

    • 一个项目需要很多个容器一起运行,才能完成

    • 就会形成一个依赖,就是a容器启动后,b容器才能启动

    • 这个时候就需要容器的编排了

    • 以项目为角度,来进行解决

    • 将一个项目中需要的容器进行了编排

    • 多个容器相互配合来使用

    • 定义这个项目需要很多的服务(容器)

1、docker-compose字段

project # 定义一组关联的容器(服务)组成的一个业务单元

service # 一个项目的中一个容器称之为一个服务,服务就是容器


[root@docker ems]# cat docker-compose.yaml 
version: "2.6.0"  # docker-compose的版本
services:  # 服务,多个容器
  tomcat:
   container_name: tomcat_01  # 容器自定义的名字
   image: tomcat:8.0
   ports:
    - 8080:8080

  tomcat01:
   image: tomcat:8.0
   ports:
    - 8081:8080
   
  redis:
   image: redis:5.0.12
   ports:
    - 6379:6379

  mysql:
   image: mysql
   ports:
    - 3306:3306
   environment:   # 环境变量
    - "MYSQL_ROOT_PASSWORD=root"
   volumes:
#    - /root/mysqldata1:/var/lib/mysql
    - mysqldata:/var/lib/mysql

volumes:  # 声明数据卷
 mysqldata: 



[root@docker docker]# docker-compose up



2、volumes字段
  • 绝对路径

  • 数据卷别名的话,需要声明

   volumes:
#    - /root/mysqldata1:/var/lib/mysql
    - mysqldata:/var/lib/mysql

volumes:
 mysqldata:  # 声明数据卷


# 查看卷
[root@docker ems]# docker volume ls
DRIVER    VOLUME NAME
local     03be689ca6328c4c03ed05198d6145b7bb42919bf2c298c8e8369db44f778780
local     398a3dca9fde9bbbc0e61682b7b8f99a93bc19e744cda5d2786b434ff17c43ed
local     93026f95ece586b88d00607bfb12291e96b0ad73fb8d5b24836491a6def313d1
local     bc976311848ef09c5438d7473ffd6e28aaac3a5a29421e0b1c9b5133e65a4b34
local     ca2fd36d0d4bad7e6d783e423c801f590f7dcf319214962194a9f7679fb75624
local     ems_mysqldata
local     v1

3、build字段
  • 基于当前目录构建镜像

  • 在启动容器之前,先根据dockerfile构建镜像

4、depends_on
  • 控制着容器之间启动先后顺序
  tomcat01:
   image: tomcat:8.0
   ports:
    - 8081:8080
   depends_on:  # 先启动redis和mysql再来启动tomcat01
     - redis
     - mysql

2、docker-compose模版命令

1、docker-compose up
Usage:  docker compose up [SERVICE...]
Create and start containers
Options:
      --abort-on-container-exit   Stops all containers if any container was stopped. Incompatible with -d       # 只要有容器停止就停止所有容器,与-d选项不兼容
      --always-recreate-deps      Recreate dependent containers. Incompatible with --no-recreate.       # 总是重新创建所依赖的容器,与--no-recreate选项不兼容
      --attach stringArray        Attach to service output.
      --attach-dependencies       Attach to dependent containers.
      --build                     Build images before starting containers.      # 在启动容器之前构建镜像
  -d, --detach                    Detached mode: Run containers in the background          # 后台运行服务容器,输出新容器名称
      --exit-code-from string     Return the exit code of the selected service container. Implies --abort-on-container-exit   # 为指定服务的容器返回退出码
      --force-recreate            Recreate containers even if their configuration and image havent changed.      # 强制重新创建容器,即使配置和镜像没有变化
      --no-build                  Dont build an image, even if its missing.     # 不构建缺失的镜像
      --no-color                  Produce monochrome output.
      --no-deps                   Dont start linked services.                   # 不启动所连接的服务
      --no-log-prefix             Dont print prefix in logs.
      --no-recreate               If containers already exist, dont recreate them. Incompatible with --force-recreate.
      --no-start                  Dont start the services after creating them.
      --quiet-pull                Pull without printing progress information.              # 拉取镜像时不会输出进程信息
      --remove-orphans            Remove containers for services not defined in the Compose file.     # 移除compose文件中未定义的服务容器
  -V, --renew-anon-volumes        Recreate anonymous volumes instead of retrieving data from the previous containers.
      --scale scale               Scale SERVICE to NUM instances. Overrides the scale setting in the Compose file if present.   # 服务=数值,来设置服务的实例数量
  -t, --timeout int               Use this timeout in seconds for container shutdown when attached or when containers are already running. (default 10)   # 设置停止连接的容器或已运行容器所等待的超时时间
      --wait                      Wait for services to be running|healthy. Implies detached mode.
2、docker-compose down
Usage:  docker compose down
Stop and remove containers, networks
Options:
      --remove-orphans    Remove containers for services not defined in the Compose file.    # 删除不在compose文件中定义的服务容器
      --rmi string        Remove images used by services. "local" remove only images that dont have a custom tag ("local"|"all")    # 删除服务使用的镜像
  -t, --timeout int       Specify a shutdown timeout in seconds (default 10)    # 设置停止容器的超时时间(默认10秒)
  -v, --volumes volumes    Remove named volumes declared in the volumes section of the Compose file and anonymous volumes attached to containers.     # 删除由服务定义创建的数据卷


# 常规清理(清理容器和网络)
docker-compose down

# 带数据卷清理
docker-compose down -v

# 删除镜像
docker-compse down --rmi all

# 超时设置(设置容器停止超时时间为30秒)
docker-compose down --timeout 30

3、docker-compose rm
Usage:  docker compose rm [SERVICE...]
Removes stopped service containers
By default, anonymous volumes attached to containers will not be removed. You
can override this with -v. To list all volumes, use "docker volume ls".
Any data which is not in a volume will be lost.

Options:
  -f, --force     Dont ask to confirm removal    # 删除不问询确认
  -s, --stop      Stop the containers, if required, before removing   # 删除前先停止容器
  -v, --volumes   Remove any anonymous volumes attached to containers  # 删除容器附加的卷

4、docker-compose logs

查看容器的信息

3、案例

version: "v2.6.0"
services:
  tomcat01:
    image: mysql
    ports:
      - 8080:8080   # 宿主机端口:容器端口
    environment:
      - "MYSQL_ROOT_PASSWORD=root"
    volumes:
      - /root/mysqldata1:/var/lib/mysql  # 宿主日目录:容器目录
      - mysqldata:/var/lib/mysql11
    networks:
      - b1
  tomcat02:
    image: awesome
    build: ./webapp   # 构建上下文
    depends_on:
      - tomcat02
volumes:
  mysqldata:  # 创建一个匿名卷
networks:  
  b1:  # 会创建一个网络出来的


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值