本博客将记录博主学习b站编程不良人的Docker的总结,虽然以前也有使用过docker,但都是一些最基本的用法,这次将会全面认真的学习Docker。

015:compose简介

  • 什么是docker compose

    Compose项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排

  • Compose 定位

    Compose 定位是定义和运行多个 Docker 容器的应用 ,同时可以对多个容器进行编排

  • Compose 核心概念

    • 服务(service):一个服务对应一个应用容器,在一个项目中可以存在多个服务
    • 项目(project):由一组关联的应用容器组成的一个完善业务单元,在 docker-compose.yml 文件中定义
      dockerfile1.png
  • Compose 安装

    • 下载:docker-compose-Linux-x86_64
    • 将其上传到linux服务器下的 /usr/local/bin
    • 改名为docker-compose
    • 修改权限:
      sudo chmod +x /usr/local/bin/docker-compose
  • 使用 docker-compose -v 检查

    016:docker-compose 入门

  • 创建一个 docker-compose.yml文件

  • 在配置文件中定义一个项目存在哪些服务

    version "3.8"
    service:
    tomcat:  # 服务名唯一
      image: tomcat:8.0-jre8   #这个服务所依赖的镜像
        ports:
          - 8080:8080 
  • 运行docker-compose

    docker-compose up # 启动这个项目的所有服务,必须保证运行命令的目录存在docker-compose.yml

    017:docker-compose 命令模板

  • 基础命令示例:

    version: "3.8"
    services:
    demo:
      build: #启动服务时先将build命令指定dockerfile打包成镜像,在运行该镜像
        context: ./demo #指定上下文目录dockerfile所在目录
        dockerfile: Dockerfile
      container_name: demo
      ports:
        - "8083:8081"
      networks:
        - hello
      depends_on:
        - tomcat01
        - mysql
    
    tomcat01:
      container_name: tomcat01 # 相当于--name
      image: tomcat:8.0-jre
      ports:
        - "8080:8080"
      volumes:
        # - /root/apps:/usr/local/tomcat/webapps  # 自定义路径映射
        - tomcatwebapps01:/usr/local/tomcat/webapps
      networks: #使用的网桥
        - hello
      depends_on: # 代表这个容器必须依赖哪些容器启动之后(并非完全启动之后)才能启动
        - tomcat02 # 写的是服务名
        - redis
        - mysql
      healthcheck:   # 心跳检测
        test: ["CMD","curl","-f","http://localhost"]
        interval: 1m30s
        timeout: 10s
        retries: 3
    
    tomcat02:
      container_name: tomcat02 # 相当于--name
      image: tomcat:8.0-jre
      ports:
        - "8081:8080"
      volumes:
        # - /root/apps:/usr/local/tomcat/webapps  # 自定义路径映射
        - tomcatwebapps02:/usr/local/tomcat/webapps
      networks: #使用的网桥
        - hello
      #sysctls: #用来修改容器中系统内部参数,并不是必须,
        # 有些服务启动受容器内操作系统参数限制可能会无法启动,必须通过修改容器中参数才能启动,如es
        #- net.core.somaxconn=1024
        #- net.ipv4.tcp_sycookies=0
      ulimits: #用来修改容器中系统内部进程数限制,日后使用时可根据当前容器运行服务要求进行修改
        nproc: 65535
        nofile:
          soft: 20000
          hard: 40000
    
    mysql:
      image: mysql:5.7.32
      container_name: mysql
      ports:
        - "3307:3306"
      volumes:
        - mysqldata:/var/lib/mysql
        - mysqlconf:/etc/mysql
      #environment: # 环境设置,重新设置密码
      #  - MYSQL_ROOT_PASSWORD=root
      env_file:  # 用来将environment环境中配置放入指定配置文件中 (相对来说安全)
        - ./mysql.env (路径可以绝对,可以相对)
      networks:
        - hello
    
    redis: 
      image: redis:5.0.10
      container_name: redis
      ports:
        - "6379:6379"
      volumes:
        - redisdata:/data
      networks:
        - hello
      command: "redis-server --appendonly yes" # run镜像之后用来覆盖容器内容默认命令
    volumes: # 声明上面服务所使用的自动创建的卷名
    mysqldata:
    mysqlconf:
    tomcatwebapps02:
    tomcatwebapps01: # 声明指令的卷名,compose自动创建该卷名但会名称前加入项目名_
      external:   # 是否为外部卷名
        false     # 如果为true则该数据卷必须已经手动创建过
    networks: # 定义服务的网桥
    hello: # 定义上面的服务用到的网桥名称,默认是bridge
      external: # 是否为外部网桥
        false   # 如果为true则该网桥已经手动创建过

docker-compose命令模板

18:compose 指令

  • 模板指令:
    用来书写在docker-compose.yml文件中指令称之为模板指令,用来为服务进行服务的。
  • 指令:
    用来对整个docker-compose.yml对应的这个项目操作,书写docker-compose命令之后命令docker-compose up

    常用指令

  • up 指令:用来启动所有docker-compose服务
    • 选项: -d 后台启动所有服务
  • down 指令:停掉up所启动的容器,并移除网络
  • exec 进入指定的容器
    docker-compose exec tomcat01(docker-compose.yml中声明的服务) bash
  • docker-compose ps :列出docker-compose.yml中的所有容器
  • restart
    • 作用:用来重启项目中某个服务,如果不写服务id,默认重启所有服务
    • docker-compose ps
  • rm 指令
    • 作用:用来删除项目服务
      docker-compose rm [-fv] [服务id] 注意:谨慎操作 -v删除服务的数据卷
  • start 指令 启动服务 docker-compose start [服务id]
  • stop 指令 关闭服务 docker-compose stop [服务id]
  • top [服务id] :用来查看compose内运行的进程
  • pause/unpause [服务id] 停止/恢复某个容器
  • logs [服务id] 查看日志
    docker-compose指令
最后修改:2021 年 06 月 12 日