1-Docker - docker-compose
about
Docker Compose是 docker 提供的一个单机版的容器编排工具,用来定义和运行由多个容器组成的应用。
使用 compose,我们可以通过 YAML 文件声明式的定义应用程序的各个服务,并由单个命令完成应用的创建和启动。
安装
这里列出一种安装方式,两行命令搞定:
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 示例
[root@C data]# sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 638 100 638 0 0 395 0 0:00:01 0:00:01 --:--:-- 395
100 11.1M 100 11.1M 0 0 21203 0 0:09:13 0:09:13 --:--:-- 15242
[root@C data]# sudo chmod +x /usr/local/bin/docker-compose
测试:
[root@C data]# docker-compose --version
docker-compose version 1.23.1, build b02f1306
实战
首先,如果没有下面这两个镜像需要先下载:
[root@r ~]# docker pull wordpress:latest
[root@r ~]# docker pull mysql:5.7
- 新建一个
docker-compose
目录,用来存储所有的docker-compose
项目,并且在该目录下 创建wordpress
项目目录,有关wordpress
项目的所有文件都在这目录中;另外,在docker-compose
目录,项目彼此是隔离的;然后在wordpress
目录中新建docker-compose.yaml
配置文件,或者docker-compose.yml
,目前,docker-compose
只识别yaml
和yml
这两种扩展名的配置文件。
[root@r /]# mkdir -p /docker_data/docker-compse/wordpress
[root@r /]# cd /docker_data/docker-compse/wordpress/
[root@r wordpress]# vim docker-compose.yaml
- 在
docker-compose.yaml
中填写如下配置信息,注意,配置文件中不能使用TAB
来搞缩进!
# version表示Compose文件格式的第3版,也是目前最新的版本,截止2020/04/17
version: "3"
# 服务,可以有多个服务,如下的配置中,将会起两个服务,也就是启动两个容器,db和wordpress两个服务,每个服务可以有自己的配置
services:
# 第一个服务是mysql的服务, db也是容器名称
db:
# 镜像
image: mysql:5.7
# 持久化挂载
volumes:
- db_data:/var/lib/mysql
# 当docker服务重启后,同时启动该容器
restart: always
# 环境参数配置
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
# 第二个服务是wordpress
wordpress:
# 该服务启动之前,需要首先启动db服务
depends_on:
- db
image: wordpress:latest
volumes:
- wordpress_data:/var/www/html
# 端口映射
ports:
- "6006:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_PASSWORD: wordpress
# 由于上面两个服务都有挂载卷,这里要在全局中声明一下,docker-compose会自动的创建这两个目录
volumes:
db_data:
wordpress_data:
- 在
wordpress
目录启动docker-compose
服务
[root@r wordpress]# docker-compose up
- 浏览器就可以访问服务器的
ip:6006
端口,然后就成功了。
- 我们可以看到此时启动的两个容器
[root@r wordpress]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
88a4a396f5b9 wordpress:latest "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:6006->80/tcp wordpress_wordpress_1_21bbf4af831a
755c2738d850 mysql:5.7 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 3306/tcp, 33060/tcp wordpress_db_1_bd6975a0dc7b
常用命令
注意,要在项目目录下执行命令,并且这些命令只作用于当前services
下的服务(容器)。
- 使用
docker-compose
启动服务
# 启动docker-compose.yaml配置文件中的所有服务,也就是所有的容器
[root@r wordpress]# docker-compose up
# 启动指定的容器
docker-compose up 容器ID
# 上述启动是前台启动服务,要想后台运行服务还需要加 -d
[root@r wordpress]# docker-compose up -d
# 对于使用stop命令停止的容器,使用 start 启动, start后不跟容器名表示启动所有
[root@r wordpress]# docker-compose start
[root@r wordpress]# docker-compose start db
# 重启
[root@r wordpress]# docker-compose restart
[root@r wordpress]# docker-compose restart db
- 停止服务,即停止容器
# 停止并且删除容器
[root@r wordpress]# docker-compose down
# 仅仅停止使用stop
[root@r wordpress]# docker-compose stop
# 停止指定容器,比如说把db停了
[root@r wordpress]# docker-compose stop db
- 查看日志
[root@r wordpress]# docker-compose logs wordpress
- 使用
-h
命令来查看帮助
[root@r wordpress]# docker-compose -h
that's all,see also:
Docker及Docker-Compose的使用 | 安装docker和docker-compose | docker中文指南 | docker参数--restart=always的作用 | Docker Compose 配置文件 Docker-Compose.yml 文件详解