docker05-compose


title: Docker学习笔记五:docker-compose
tags:

  • wechat
    comments: true
    categories:
  • wechat
    date: 2022-12-06 16:19:31

Docker学习笔记五:docker-compose

一、介绍

问题:docker官方建议一个容器内只运行一个服务,那么若我们需要同时部署多个服务,是也要为每个服务写一个Dockerfile然后在构建镜像运行容器吗?这样也太麻烦了吧,所有Docker官方提供了docker-compose多服务部署工具。

docker-compose是Docker公司推出的一个工具软件,可以管理多个Docker容器组成的一个应用。只需要定义一个YAML格式的配置文件docker-compose.yml,在该文件中配置好多个容器之间的调用关系,然后只需要一个命令就能同时启动或关闭这些容器。

docker-compose简化的多容器启动过程,简单来说,一个项目部署会设计到redis服务,mysql服务等,且只有这些服务先启动时,项目才能正常启动,compose就是简化这一流程,可以同时且按照指定顺序运行容器。所有这又有一个前提,所有服务的镜像已存在(编写Dockerfile,构建镜像这一步骤无法省略)

官方地址:https://docs.docker.com/compose/install/other/

# 安装
curl -SL https://github.com/docker/compose/releases/download/v2.14.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

# 卸载
sudo rm /usr/local/bin/docker-compose

二、使用

2.1、相关概念

  1. 文件必须是 docker-compose.yml

  2. service - 服务

    就是一个个应用容器实例。

  3. project - 工程

    有一组关联的应用容器组成的一个完整的业务单元

2.2、常用命令

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

2.3、docker-compose.yml

version: "3"
services:
  microService:
    image: zzyy_docker:1.6
    container_name: ms01
    ports:
      - "6001:6001"
    volumes:
      - /app/microService:/data
    networks: 
      - atguigu_net 
    depends_on: 
      - redis
      - mysql
 
  redis:
    image: redis:6.0.8
    ports:
      - "6379:6379"
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data
    networks: 
      - atguigu_net
    command: redis-server /etc/redis/redis.conf
 
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'db2021'
      MYSQL_USER: 'zzyy'
      MYSQL_PASSWORD: 'zzyy123'
    ports:
       - "3306:3306"
    volumes:
       - /app/mysql/db:/var/lib/mysql
       - /app/mysql/conf/my.cnf:/etc/my.cnf
       - /app/mysql/init:/docker-entrypoint-initdb.d
    networks:
      - atguigu_net
    command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
 
networks: 
   atguigu_net: 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值