Docker Compose的安装及使用

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,表示允许特权。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值