1. 概述
  1. docker compose 入门
  1. 后面简称 compose
  1. 背景
  1. 装好了 compose
  2. 给自己画了一个 大饼
  3. 画好大饼, 可以开始慢慢用了
  1. 环境
  1. os
  1. centos7
  1. docker-engine
  1. 19.03.12
  1. docker-compose
  1. 1.26.2
  1. image
  1. ubuntu
  1. 19.04

1. compose: 基础行为模式

  1. 概述
  1. compose 的 基础行为模式
  1. 基础行为模式
  1. 编写 docker-compose.yml 文档
  1. 不熟悉 yml 的同学, 请自学
  1. 创建 compose 项目目录
  1. 目录名是 项目名
  2. 把 docker-compose.yml 放到目录下
  1. 进入 项目目录
  2. 启动项目
> docker-compose up
  1. 查看项目状态
> docker-compose ps -a
  1. 销毁项目
> docker-compose down
  1. 感觉
  1. 思路还是很清晰的
  2. 难点
  1. 就目前来看, 难点好像就是编写 docker-compose.yml
  2. 这玩意, 如果第一次接触, 确实很烦人
  3. 没事, 我们先写一个简单的

2. compose file

  1. 概述
  1. 写个最简单的 compose file
  1. 目的
  1. 用 compose file 的形式, 起来一个 ubuntu 容器

1. conpose file

  1. 概述
  1. 简介 compose file
  1. 格式
  1. yml
  1. 示例
version: "3.8"
services:
  ubuntu:
    image: ubuntu:19.04
  1. 字段
  1. version
  1. 版本
  1. compose file 的版本
  1. 意义
  1. 兼容
  1. 不同的 compose file 版本, 兼容不同的 docker-engine
  1. 语法与功能
  1. 不同版本有差别
  1. 所以
  1. 如果遇到了 不同的版本, 请先确认兼容, 在做操作
  1. 笔者
  1. 选择 3.8 的版本号
  1. services
  1. 服务
  1. 定义 容器
  2. 就像 docker run 命令一样
  3. 后面还会有其他的 字段, 来定义 网络, 卷 之类的东西
  1. ubuntu
  1. 容器的名字
  1. 实际产生的容器, 会叫这种名字
<project_name>_<container_name>_<no>
  1. image
  1. 镜像
  1. 使用 已经存在的镜像
  1. 本地
  2. 远程
  1. 当然, 后续还可以自己做镜像

2. 步骤

  1. 概述
  1. 执行的步骤
  1. 步骤
  1. 创建目录 demo01
  2. 进入 demo01, 创建 docker-compose.yml 文件
  1. 并将 示例 内容, 复制进去
  1. 在 demo01 目录下, 执行后续命令
  2. 命令
> docker-compose up
  1. 结果
  1. 启动成功
  2. 但是 容器立即退出 了
  1. 问题
  1. 问题1: 容器怎么没了
  1. 问题
  1. 容器为什么自己退出了
  1. 思路
  1. 之前用 docker run 命令的时候, 也有类似情况
  2. 需要加 -it/-dt, 才能让 ubuntu 容器不挂
  3. 也就是说, 可能需要一个 tty...

3. 问题: 如何让 ubuntu 容器启动

  1. 概述
  1. 让 ubuntu 容器成功启动
  1. 思路
  1. 找到 tty 相关的字段, 就可以了
  1. 字段
  1. tty
  1. 位置
  1. 容器元素的子元素
  1. 示例
tty: true
  1. 尝试
  1. 尝试1: 直接启动
  1. 启动成功
  2. 但是卡住了, 显示 attach, 但是没有后续
  3. 处理
  1. 方案1: ctrl + c 终止
  2. 方案2: ctrl + z 退出命令, 但是容器已经启动成功
  1. 尝试2: 后台启动
  1. 命令
> docker-compose up -d
  1. 结果
  1. 启动成功
  1. 验证
  1. 查看状态
  1. docker-cli
> docker ps -a
  1. docker-compose
> docker-compose ps
  1. 尝试连接
  1. docker-cli
> docker exec -it <container> /bin/bash
  1. 其他
  1. 销毁
  1. 命令
# compose file 下的所有东西, 全部干掉
# 而且不会影响 compose file 之外的容器
# 很轻松
> docker-compose down
  1. docker-compose 命令的执行
  1. 位置
  1. 需要在 compose file 的目录下执行
  2. 目录名称, 是项目名称
  1. 配置文件
  1. 默认叫做 docker-compose.yml
  2. 可以指定, 需要在 命令行里加参数 -f <config>

ps

  1. ref
  1. Compose file version 3 reference
  1. 官方文档
  1. 最下面有一个 点赞/反对 的控件
  2. 目前来看, 两边旗鼓相当啊
  1. docker-compose加了 -d 参数后启动容器还是处于exit 0 状态
  1. 感谢 SDingBa 的回答
  2. 搜索 docker-compose tty, 能搜出一大票
  1. 善用 搜索引擎...
  1. Compose file versions and upgrading
  1. compose file 的兼容性文档
  1. 旧版本可以通过调整, 变成 新版本

尽量尝试解释清楚; 自己校对能力有限, 如果有错误欢迎指出