欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

容器编排Docker Compose

程序员文章站 2022-05-14 20:35:15
...

Docker Compose

  • Docker-Compose是官方编排的项目之一,正常部署一个容器时,可能需要依赖于其他的容器启动,例如,一个user_service服务需要依赖数据库,那么就需要先把数据库的容器启动。那么使用Docker-Compose可以把这些所有的容器构造成一个项目启动,里面会配置启动依赖关系

Docker Compose安装

  1. MAC和Windows版本的docker自带Compose功能,无需安装
  2. Linux安装
    # 2-1.命令下载安装(速度较慢)
    curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    # 2-2.直接将文件拖放进/usr/local/bin/目录
    
    # 修改权限,使其可执行
    chmod +x /usr/local/bin/docker-compose
    
    # 创建软连接,使其在/usr/bin也可以访问
    ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
    
  3. 执行测试
    # 执行以下命令,可以看到已经安装成功
    docker-compose -v
    docker-compose
    

Docker Compose快速入门

  • 前提是服务器docker-compose已经安装
  1. 正常使用maven打一个jar包
    例如:app.jar
    
  2. 创建一个Dockerfile文件
    FROM java:8-alpine
    COPY ./app.jar /tmp/app.jar
    EXPOSE 9090
    ENTRYPOINT ["java","-jar","/tmp/app.jar"]
    
    # FROM java:8-alpine:基于java8启动
    # COPY ./app.jar /tmp/app.jar:将app.jar包copy到/tmp目录
    # EXPOSE 9090:指定宿主机映射端口9090
    # ENTRYPOINT ["java","-jar","/tmp/app.jar"]:需要执行的命令
    
  3. 创建一个docker-compose.yml文件
    version: '3'
    services:
      web:
        build: .
        ports:
          - "9090:9090"
      redis:
        image: "redis"
    
  4. 将这三个文件都放到同一个目录,并执行构建命令
    docker-compose up
    
  5. 测试,浏览器访问一下即可

Docker Composer 相关命令

  • 常用指令
    # 构建容器
    docker-compose up   
    # 构建容器,后台启动
    docker-compose up -d
    # 关闭容器
    docker-compose stop
    # 关闭容器并删除
    docker-compose down
    
  • 其他指令
    [[email protected] docker-demo]# docker-compose --help
    利用Docker来定义和构建一个多容器的应用
    
    使用方式:
      docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
      docker-compose -h|--help
    
    Options:
      -f, --file FILE             指定一个 compose 文件,
                                  (默认: docker-compose.yml)
      -p, --project-name NAME     指定project名字
                                  (默认: 目录名称)
      --verbose                   显示更多日志
      --log-level LEVEL           日志级别 (DEBUG, INFO, WARNING, ERROR, CRITICAL)
      -v, --version               打印版本并退出
      -H, --host HOST             Daemon socket to connect to
    Commands:
      build              构建多个service
      config             校验 Compose 文件,格式是否正确,若正确则显示配置,
      					 若格式错误显示错误原因
      down               停止并删除 容器, 网络, 镜像, 和 数据卷
      exec               进入一个指定的容器
      help               Get help on a command
      images             列出该Compose中包含的各个镜像
      kill               通过发送 SIGKILL 信号来强制停止服务容器
      					 格式为 docker-compose kill [options] [SERVICE...]
      logs               查看服务容器的输出日志
      					 格式为 docker-compose logs [options] [SERVICE...]。
      pause              暂停一个容器
      port               打印某个容器端口所映射的公共端口
      ps                 列出项目中目前的所有容器
      pull               拉取服务依赖的镜像
      push               推送服务依赖的镜像到 Docker 镜像仓库
      restart            重启项目中的服务
      rm                 删除停止的容器(要先停止容器)
      run                在某个服务上运行指令
      scale              设定某个容器的运行个数
      start              启动多个 services
      stop               停止多个 services
      top                查看各个服务容器内运行的进程。
      unpause            恢复处于暂停状态中的服务。
      up                 创建并启动多个service的容器
      version            Show the Docker-Compose version information
    
  • Compose和docker的版本有对应关系,使用之前查一下api
    https://docs.docker.com/compose/compose-file/
    

Docker Compose常用语法

  • 文件示例
    version: '3'
    services:
      web:
        build: .
        ports:
          - "8080:8080"
        depends_on:
          - db
          - redis
      # redis服务
      redis:
        image: redis
      # mysql服务
      db:
        image: mysql:5.7
    
  • 常用指令简介
    version:版本
    build:指定构建路径
    command:覆盖默认执行指令
    depends_on:解决依赖先后
    entrypoint:入口文件或者启动命令
    environment:类似于-e,设置环境变量
    expose:内部映射端口,只能同一机器内访问
    extra_hosts:设置host文件的映射信息
    image:启动容器的视图
    logging:配置日志项
    network_mode:网络模式
    networks:设定加入网络的模式
    ports:映射端口,可以是个范围
    restart:设定重启策略
    volumes:挂载数据或目录卷
    
相关标签: 自记自用