1 为什么用Docker-compose

​ 使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。Compose 恰好满足了这样的需求。它允许用户通过一个单独的 dockercompose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目
(project)。Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。

2 Docker-compose 命令

Compose 中有两个重要的概念:

  • 服务 ( service ):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目 ( project ):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml 文件中定义
命令解释
docker-compose build [options] [SERVICE…]构建(重新构建)项目中的服务容器
docker-compose config验证 Compose 文件格式是否正确
docker-compose up [options] [SERVICE…]它将尝试自动构建镜像、(重新)创建、启动服务、关联服务相关容器
docker-compose down停止 up 命令所启动的容器,并移除网络
docker-compose exec进入指定的容器
docker-compose iamges列出 Compose 文件中包含的镜像
docker-compose kill [options] [SERVICE…]通过发送 SIGKILL 信号来强制停止服务容器
docker-compose pause [SERVICE…]停止容器服务
docker-compose unpause [SERVICE…]恢复处于暂停状态中的服务
docker-compose stop [options] [SERVICE…]停止已经处于运行状态的容器,但不删除它
docker-compose restart [options] [SERVICE…]重启某个服务
docker-compose start [SERVICE…]启动已经存在的服务容器

3 Docker-compose 模板文件

本节参考自Docker从入门到实践·Gitbook

模板文件采用yaml格式

#docker-compose.yml 
#用于构建worepress
version: "3"

services:
    db:
      image: mysql:5.7
      volumes:
        - ./db_data:/var/lib/mysql
      restart: always
      environment:
        MYSQL_ROOT_PASSWORD: yourPassword
        MYSQL_DATABASE: wordpress
        MYSQL_USER: root
        MYSQL_PASSWORD: yourPassword

    wordpress:
      depends_on:
        - db
      image: wordpress:latest
      ports:
        - "8000:80"
      restart: always
      environment:
        WORDPRESS_DB_HOST: db:3306
        WORDPRESS_DB_USER: root
        WORDPRESS_DB_PASSWORD: yourPassword

关于yaml格式:

  1. YAML大小写敏感;
  2. 使用缩进代表层级关系;
  3. 缩进只能使用空格,不能使用TAB,不要求空格个数,只需要相同层级左对齐(一般2个或4个空格)
  4. yaml对象使用冒号代表,格式为 key: value冒号后面要加一个空格
  5. 使用一个短横线加一个空格代表一个数组项:
language:
  - java
  - python

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注