Docker 容器编排工具 Docker Compose

彭楷淳发布于 2020-07-21
预计阅读时间 3 分钟
总计 777
浏览

Docker Compose 简介


Docker Compose 是 Docker 官方的编排项目之一,负责实现对 Docker 容器集群的快速编排。

Compose 的定位:定义和运行多个 Docker 个容器的应用。

在日常工作中,经常会碰到多个容器相互配合来完成某项任务的情况,例如,要实现一个 Web 项目时,除了 Web 服务容器本身以外,往往还需要加上后端的数据库、负载均衡服务容器等多个服务容器。而 Docker Compose 恰好可以满足这样的需求,它允许用户通过一个单独的 docker-compose.yml 模板文件来定义一组相关联的容器为一项目。

Compose 中有两个重要的概念:

  • 服务(service):一个应用中,实际上包括若干个运行的容器实例
  • 项目(Project):由一组关联的应用容器组成的一个完整业务单位

安装 Docker Compose


二进制包安装

1
2
3
4
5
6
7
8
# 移动到安装目录
$ cd /usr/local/bin

# 下载对应的二进制包
$ wget https://raw.githubusercontent.com/topsale/resources/master/docker/docker-compose

# 授予操作权限
$ sudo chmod +x /usr/local/bin/docker-compose

PIP 安装

如果计算机架构是 ARM(如:草莓派),应该从 PIP 源中下载:

1
$ sudo pip install -U docker-compose

看到以下输出信息,说明安装成功

1
2
3
4
Collecting docker-compose
Downloading docker-compose-1.17.1.tar.gz (149kB): 149kB downloaded

Successfully installed docker-compose cached-property requests texttable websocket-client docker-py dockerpty six enum34 backports.ssl-match-hostname ipaddress

bash 补全命令补丁

1
$ curl -L https://raw.githubusercontent.com/docker/compose/1.8.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

卸载 Docker Compose


二进制包方式卸载

1
$ sudo rm /usr/local/bin/docker-compose

PIP 方式卸载

1
$ sudo pip uninstall docker-compose

Docker Compose 常用命令


1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 前台运行容器
$ docker-compose up

# 后台运行容器
$ docker-compose up -d

# 启动容器
$ docker-compose start

# 停止容器
$ docker-compose stop

# 停止并移除容器
$ docker-compose down

编排 MySQL & Tomcat 容器实例


容器编排文件

服务器地址:192.168.100.1

创建指定名称的容器编排文件 docker-compose.yml

1
$ sudo mkdir docker-compose.yml

文件内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
version: '3.1'
services:
tomcat:
restart: always
image: tomcat
container_name: tomcat
ports:
- 8080:8080
volumes:
- /usr/local/docker/tomcat/webapps:/usr/local/tomcat/webapps
environment:
TZ: Asia/Shanghai
mysql:
restart: always
image: mysql:5.7.22
container_name: mysql
ports:
- 3306:3306
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=128M
--sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
volumes:
- /usr/local/docker/mysql:/var/lib/mysql

编排文件节点详解

文件节点 说明
version 指定 Docker Compose 版本
services 所有容器服务的父节点
tomcat / mysql 容器服务名
restart 开机是否自动启动
image 指定镜像名
container_name 声明容器名
ports 端口开放映射
volumes 数据卷(宿主机路径 : 容器内路径)
environment 环境变量
command 其它配置

docker-compose.yml 文件所在目录下启动容器服务:

1
$ docker-compose up -d

列出正在运行的容器:

1
$ docker container ps

启动容器以后验证是否能正常访问 MySQL 地址:192.168.100.1:3306 和 Tomcat 地址:http://192.168.100.1:8080

更多干货请移步:https://antoniopeng.com


如果你喜欢这个博客或发现它对你有用,欢迎你点击右下角 “OPEN CHAT” 进行评论。也欢迎你分享这个博客,让更多的人参与进来。如果在博客中使用的图片侵犯了您的版权,请联系博主删除它们。谢谢你!