本文最后更新于492 天前,如有错误请在评论区中留言。
前言
Docker Compose 的作用:一句话描述,Docker Compose 就是用来管理和运行多个容器的工具,使用 YAML 文件配置
如果我写的看不懂,强烈推荐这篇文章 Docker 系列 了解 Docker Compose 的配置文件 – Bensz (hwb0307.com)
使用方法
编写 docker-compose.yml 文件
在自己定义好的目录中创建一个名为 docker-compose.yml 的文件,其他名字的.yml 文件也可以
vim docker-compose.yml
编写 docker-compose.yml 文件,下面是使用模板,改模板列出了常用的一些配置,若还需补充,请访问官方文档查询
version: '3' #这是一个Docker-Compose文件的版本声明,它表明该文件符合Docker-Compose文件格式版本3
services:
service_name: #服务名,可自定义,不可重复,例如:app,db,redis等
container_name: name #容器名,可自定义
image: wordpress:latest #镜像名,用哪个镜像就写哪个,后面加latest表明拉取最新镜像
restart: always #重启策略,详见下方表格说明
ports:
- 8888:80 #端口映射,左边是宿主机的8888端口(注意防火墙要打开),右边是docker镜像中的端口
volumes:
- ./app:/var/www/html #目录映射,冒号左边是本地目录,右边是容器内目录
environment:
- MYSQL_ROOT_PASSWORD=123456 #设置环境变量,这里举例是mysqlroot密码
- MYSQL_PASSWORD=123456 #如果没有环境变量,略过即可
links:
- db:db: #links表明容器间存在通信,表示这个服务会使用db,这个模板中db没有列出来
depends_on:
- redis: #表明redis要在这个服务之前启动,之后停止,这个模板中redis没有列出来
使用模板,无注释:
version: '3'
services:
service_name:
container_name: name
image: wordpress:latest
restart: always
ports:
- 8888:80
volumes:
- ./app:/var/www/html
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_PASSWORD=123456
links:
- db:db:
depends_on:
- redis:
restart,重启策略选项
选项 | 解释 |
---|---|
restart: always | 表示无论容器退出的原因是什么,Docker 都会自动重启容器。这个选项通常用于需要保持运行状态的服务,例如 Web 服务器、数据库等。使用这个选项可以确保容器在任何情况下都能够自动重启,从而保证服务的可靠性和稳定性。可以使用 docker-compose stop 停止 |
restart: no | 表示容器退出时不重启容器。 |
restart: on-failure | 表示只有容器以非零状态退出时才重启容器。 |
restart: unless-stopped: | 表示除非手动停止容器,否则容器会一直自动重启。 |
常用命令
查看容器
docker-compose ps
启动容器
docker-compose up -d
docker-compose -f docker-compose.yml up -d #指定.yml文件启动,不指定默认为docker-compose.yml
停止容器,并移除 docker-compose 中定义的所有容器,移除相关网络。数据会丢失!!!
docker-compose down
停止容器,不移除容器
docker-compose stop
拉取最新镜像
docker-compose pull
踩坑
- 在编写yml配置文件时,注意代码缩进,tab不行,使用两个空格缩进