Docker Compose 的安装及使用
Docker Compose 是一个 Docker 容器的依赖管理工具。 它通过 .yml 配置文件定义所有容器的依赖关系。它可以帮助我们管理所有依赖的容器,只需把我们想要的 Docker 相关容器信息写到的 .yml 配置文件中。
1 安装
我使用的是 centos7 Linux 系统,使用的是 yum 命令。
yum update -y
yum install -y docker-compose
通过执行 docker-compose version
命令,查看 docker-compose 是否安装成功
2 使用示例
以 WordPress 的安装为例。WordPress 的 docker-compose.yml 文件可以在 dockerhub wordpress 处获取
先在服务器创建目录并创建 docker-compose.yml 文件
mkdir -p docker_test/wordpress
cd docker_test/wordpress
touch docker-compose.yml
修改 docker-compose.yml 文件
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8080:80 # 宿主机端口:容器暴露的端口
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: testuser
WORDPRESS_DB_PASSWORD: 123321
WORDPRESS_DB_NAME: testdb
volumes:
- /home/wordpress_docker/wordpress:/var/www/html # 宿主机文件夹路径:容器内文件夹路径
db:
image: mysql:5.7
restart: always
ports:
-- 3306:3306 # 数据库设置端口映射,这样可以远程连接维护数据库
environment:
MYSQL_DATABASE: testdb
MYSQL_USER: testuser
MYSQL_PASSWORD: 123321
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- /home/wordpress_docker/db:/var/lib/mysql
volumes:
wordpress:
db:
注意:数据库信息必须保持一致,否则数据库无法正常连接
关于上面这个 Docker 的 .yml 文件里,我们需要关注下面这几个信息:
- image: 镜像名称。
- ports: 服务启动的端口,设置宿主机和容器之间端口的映射关系
- environment: 服务的环境相关信息
- volumes: 目录映射
3 部署运行
在 docker-compose.yml 文件所在文件夹中,执行以下命令创建实例:
docker-compose up -d # -d 后台运行
部署完成后,打开浏览器访问http://localhost:8080
查看是否部署成功
可以用
docker-compose stop
或者docker-compose start
启动和暂停实例
4 其它常用命令
docker-compose 部分命令选项如下:
- -f,–file:指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定,指定多个 yml;
- -p, --project-name:指定工程名称,默认使用 docker-compose.yml 文件所在目录的名称;
- -v,version:打印版本并退出;
- –log-level:定义日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)
4.1 config
# 验证docker-compose.yml文件。当配置正确时,不输出任何内容,当配置错误时,输出错误信息
docker-compose config -q
4.2 pull
# 拉取工程中所有服务依赖的镜像
docker-compose pull
# 拉取工程中 nginx 服务依赖的镜像
docker-compose pull wordpress
# 拉取镜像过程中不打印拉取进度信息
docker-compose pull -q
4.3 run
在指定服务的容器上执行命令
docker-compose run wordpress echo "helloworld"
4.4 logs
# 输出日志,不同的服务输出使用不同的颜色来区分
docker-compose logs
# 跟踪日志输出
docker-compose logs -f
# 关闭颜色
docker-compose logs --no-color
4.5 exec
进入容器
# 进入工程中指定服务的容器
docker-compose exec wordpress bash
# 当一个服务拥有多个容器时,可通过 --index 参数进入到该服务下的任何容器
docker-compose exec --index=1 wordpress bash
4.6 rm
# 删除所有(停止状态)服务的容器
docker-compose rm
# 先停止所有服务的容器,再删除所有服务的容器
docker-compose rm -s
# 不询问是否删除,直接删除
docker-compose rm -f
# 删除服务容器挂载的数据卷
docker-compose rm -v
# 删除工程中指定服务的容器
docker-compose rm -sv wordpress
4.7 kill
# 通过发送 SIGKILL 信号停止工程中指定服务的容器
docker-compose kill wordpress
4.8 down
# 停止并删除工程中所有服务的容器、网络
docker-compose down
# 停止并删除工程中所有服务的容器、网络、镜像
docker-compose down --rmi all
# 停止并删除工程中所有服务的容器、网络、数据卷
docker-compose down -v
4.9 images
# 打印所有服务的容器所对应的镜像
docker-compose images
# 打印指定服务的容器所对应的镜像
docker-compose images wordpress
4.10 port
打印指定服务容器的某个端口所映射的宿主机端口
docker-compose port wordpress 80
4.11 top
# 显示工程中所有服务的容器正在运行的进程
docker-compose top
# 显示工程中指定服务的容器正在运行的进程
docker-compose top wordpress
4.12 其它
# 列出目前正在运行的相关容器服务
docker-compose ps
# 启动工程中所有服务容器
docker-compose start
# 启动工程中指定服务的容器
docker-compose start wordpress
# 停止工程中所有服务容器
docker-composr stop
# 停止工程中指定服务的容器
docker-compose stop wordpress
# 重启工程中所有服务的容器
docker-compose restart
# 重启工程中指定服务的容器
docker-compose restart wordpress
5 更新 .yml 配置文件
我们更改了 .yml 文件后,需要再次使用 docker-compose up 更新,直接重启服务无效
docker-compose up -d
6 可能遇到的问题
volume文件夹映射时发生Permission denied报错
往yml里增加一个privileged: true,表示允许特权。