-
概述
- docker compose 入门
- 后面简称 compose
- docker compose 入门
-
背景
- 装好了 compose
- 给自己画了一个 大饼
- 画好大饼, 可以开始慢慢用了
-
环境
-
os
- centos7
-
docker-engine
- 19.03.12
-
docker-compose
- 1.26.2
-
image
- ubuntu
- 19.04
- ubuntu
-
1. compose: 基础行为模式
-
概述
- compose 的 基础行为模式
-
基础行为模式
-
编写 docker-compose.yml 文档
- 不熟悉 yml 的同学, 请自学
-
创建 compose 项目目录
- 目录名是 项目名
- 把 docker-compose.yml 放到目录下
-
进入 项目目录
-
启动项目
> docker-compose up
-
查看项目状态
> docker-compose ps -a
-
销毁项目
> docker-compose down
-
-
感觉
- 思路还是很清晰的
- 难点
- 就目前来看, 难点好像就是编写 docker-compose.yml
- 这玩意, 如果第一次接触, 确实很烦人
- 没事, 我们先写一个简单的
2. compose file
-
概述
- 写个最简单的 compose file
-
目的
- 用 compose file 的形式, 起来一个 ubuntu 容器
1. conpose file
-
概述
- 简介 compose file
-
格式
- yml
-
示例
version: "3.8" services: ubuntu: image: ubuntu:19.04
-
字段
-
version
-
版本
- compose file 的版本
-
意义
- 兼容
- 不同的 compose file 版本, 兼容不同的 docker-engine
- 语法与功能
- 不同版本有差别
- 所以
- 如果遇到了 不同的版本, 请先确认兼容, 在做操作
- 兼容
-
笔者
- 选择 3.8 的版本号
-
-
services
- 服务
- 定义 容器
- 就像 docker run 命令一样
- 后面还会有其他的 字段, 来定义 网络, 卷 之类的东西
- 服务
-
ubuntu
- 容器的名字
-
实际产生的容器, 会叫这种名字
<project_name>_<container_name>_<no>
-
- 容器的名字
-
image
- 镜像
- 使用 已经存在的镜像
- 本地
- 远程
- 当然, 后续还可以自己做镜像
- 使用 已经存在的镜像
- 镜像
-
2. 步骤
-
概述
- 执行的步骤
-
步骤
-
创建目录 demo01
-
进入 demo01, 创建 docker-compose.yml 文件
- 并将 示例 内容, 复制进去
-
在 demo01 目录下, 执行后续命令
-
命令
> docker-compose up
-
-
结果
- 启动成功
- 但是 容器立即退出 了
-
问题
- 问题1: 容器怎么没了
- 问题
- 容器为什么自己退出了
- 思路
- 之前用 docker run 命令的时候, 也有类似情况
- 需要加 -it/-dt, 才能让 ubuntu 容器不挂
- 也就是说, 可能需要一个 tty...
- 问题
- 问题1: 容器怎么没了
3. 问题: 如何让 ubuntu 容器启动
-
概述
- 让 ubuntu 容器成功启动
-
思路
- 找到 tty 相关的字段, 就可以了
-
字段
- tty
-
位置
- 容器元素的子元素
-
示例
tty: true
-
- tty
-
尝试
-
尝试1: 直接启动
- 启动成功
- 但是卡住了, 显示 attach, 但是没有后续
- 处理
- 方案1: ctrl + c 终止
- 方案2: ctrl + z 退出命令, 但是容器已经启动成功
-
尝试2: 后台启动
-
命令
> docker-compose up -d
-
结果
- 启动成功
-
-
-
验证
-
查看状态
-
docker-cli
> docker ps -a
-
docker-compose
> docker-compose ps
-
-
尝试连接
-
docker-cli
> docker exec -it <container> /bin/bash
-
-
-
其他
-
销毁
-
命令
# compose file 下的所有东西, 全部干掉 # 而且不会影响 compose file 之外的容器 # 很轻松 > docker-compose down
-
-
docker-compose 命令的执行
-
位置
- 需要在 compose file 的目录下执行
- 目录名称, 是项目名称
-
配置文件
- 默认叫做 docker-compose.yml
- 可以指定, 需要在 命令行里加参数
-f <config>
-
-
ps
- ref
-
Compose file version 3 reference
- 官方文档
- 最下面有一个 点赞/反对 的控件
- 目前来看, 两边旗鼓相当啊
- 官方文档
-
docker-compose加了 -d 参数后启动容器还是处于exit 0 状态
- 感谢 SDingBa 的回答
- 搜索 docker-compose tty, 能搜出一大票
- 善用 搜索引擎...
-
Compose file versions and upgrading
- compose file 的兼容性文档
- 旧版本可以通过调整, 变成 新版本
- compose file 的兼容性文档
-