docker学习笔记4-Compose

  Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
  Compose使用的三个步骤如下:

  1. 使用Dockerfile定义环境。
  2. 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  3. 最后,执行 docker-compose up 命令来启动并运行整个应用程序

  从上述描述中我们可以看出,compose的核心在于配置docker-compose.yml文件,简单的配置及其目的可通过下列模块获取

#此处需要和你的docker-compose版本一致,例如你的docker-compose版本为1.7.8 那么这个版本就是2
version: "2" 


networks:
  ghost:

#服务,主要用来整合容器,表明他们之前的关系
services:
  #二级标签是 ghost-app,这个名字是用户自己自定义,它就是服务名称。
  ghost-app:
    #基于一份 Dockerfile,在使用 up 启动之时执行构建任务,
    #这个构建标签就是 build,它可以指定 Dockerfile 所在文件夹的路径
    #这里就是找当前下的ghost文件夹
    build:
        context: ./dir #指定目录
        dockerfile: Dockerfile #指定Dockerfile文件名
        args:
            test:1  #添加构建参数,这是只能在构建过程中使用的环境变量
        labels: #置构建镜像的标签
    ports:
        -9030:9090 #将主机上的9030端口应射到容器的9090端口
    #加入指定网络
    networks:
      - ghost
    #容器的依赖、启动先后的问题,先启动依赖
    depends_on: #启动顺序 db redis ghost_app, 关闭顺序ghost_app, redis, app
      - db
      - redis
    container_name: #指定容器的名字

    cap_add: #容器添加宿主主机的内核功能
        - ALL #添加全部
    cap_drop:#容器删除拥有的宿主主机的内核功能
        - SYS_PTRACE #关闭PTRACE权限
    cgroup_parent: m-executor-abcd #为容器指定父cgroup,继承该组的资源限制

    command: #覆盖容器默认的启动命令

    entrypoint: #覆盖容器默认的entrypoint

    deploy: #采用swarm集群的方式部署时才会用到该方案,这里先不详细展开

    dns: #自定义dns

    devices: #指定设备映射列表  

    env_file:  #从文件添加环境变量

    environment: #添加环境变量键值对形式 

    expose: #暴露端口,但不应射到主机,只被连接的服务访问

    extra_hosts: #添加主机名映射 
    
    volumes: #挂载数据卷到容器  

    sysctls: #设置容器中的内核参数

    restart: #设置重启模式  

    networks: #配置容器连接的网络
  nginx:
    image:  nginx:latest #如果不需要build,可通过image指定直接从dockerhub抓取镜像
    container_name: #指定容器的名字而不是使用默认名字
    networks:
        - ghost
    depends_on:
        - ghost-app
    #宿主机会随机映射端口。
    ports:
        - 80:80
        - 88:88

  db:
    #指定服务的镜像名称或镜像 ID
    image: mysql:5.7.20
    networks:
      - ghost
    #设置镜像变量,它可以保存变量到镜像里面
    environment:
      MYSQL_ROOT_PASSWORD: mysqlroot
      MYSQL_USER: ghost
      MYSQL_PASSWORD: ghost
    #挂载一个目录或者一个已存在的数据卷容器,
    volumes:
      - ./data:/var/lib/mysql
    ports:
      - 3306:3306

docker-compose常用的命令:

  • docker-compose build 构建
  • docker-compose stop 停止
  • docker-compose up 启动
  • docker-compose rm 删除

docker-compose安装:

  1. 下载程序
    sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose
  2. 添加执行权限
    chmod +x /usr/bin/docker-compose
  3. 验证安装完成
    docker-compose --version
posted @ 2020-08-19 13:51  罗斯托夫  阅读(149)  评论(0编辑  收藏  举报