以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!
如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我~
相关概念
1、Docker Compose
Docker Compose 是 Docker 官方的编排项目之一,用于定义和运行多个容器,可以简化多容器应用程序的部署和管理,与 Docker Machine、Docker Swarm 并称 Docker “三驾马车”。
开发人员或运维人员通过 Docker Compose,可以使用 YML 文件来定义应用程序需要的所有服务。
2、YML 文件
一种 YAML 格式的模板文件,用于将一组相关联的应用容器定义为一个项目,Docker Compose 默认的 YML 文件是 docker-compose.yml。
Docker Compose
1、安装方法
代码语言:javascript复制# 使用前提:已经安装 Docker
wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/1.23.1/docker-compose-Linux-x86_64
chmod x /usr/local/bin/docker-compose
docker-compose -v
2、常用选项及常用命令
代码语言:javascript复制# 常用选项
--verbose # 输出详细信息
--log-level LEVEL # 日志级别(DEBUG, INFO, WARNING, ERROR, CRITICA)
--compatibility # 限制资源
-d # 在后台运行
-f # 指定 yml 文件
--no-deps # 不启动依赖的容器
--no-recreate # 如果容器已经存在了则不重新创建
--force-recreate # 强制重建容器,不能与 --no-recreate 同时使用
--no-build # 不构建缺失的镜像
--no-color # 不使用颜色区分输出
-t,-—timeout # 停止容器的超时时间(默认为10秒)
# 常用命令
docker-compose ps # 查看容器列表
docker-compose up <服务名称> # 启动服务容器,如果没有则创建
docker-compose stop <服务名称> # 停止服务容器
docker-compose down <服务名称> # 停止并删除服务容器
docker-compose pull <服务名称> # 拉取容器镜像
docker-compose top <服务名称> # 查看服务进程
docker-compose restart <服务名称> # 重启服务容器
docker-compose exec <服务名称> bash # 进入服务容器
# 命令示例
# 启动指定 YML 文件定义的一组服务,并在后台运行
docker-compose -f demo.yml up -d
# 停止默认 YML 文件定义的全部服务
docker-compose stop
# 启动指定 YML 文件定义的 web 服务,并让其资源限制生效
docker-compose --compatibility -f demo.yml up web
YML 文件样例及解析
代码语言:javascript复制version: '3'
services:
<服务名称>:
container_name: <容器名称>
restart: always 或 unless-stopped # 重启策略
network_mode: host # 配置端口映射时需要注释此行,或改为对应的 network 名称
image: nginx
env_file: # 从文件中添加环境变量,可以是一个值或列表(优先级从低到高!!!)
- env_public
- env_private
environment:
- TZ=Asia/Shanghai
privileged: true # 特权模式
cap_add: # 添加容器的内核能力
- ALL # 让容器拥有所有能力
- SYS_PTRACE
cap_drop:
- SYS_ADMIN # 移除 SYS_ADMIN 功能
volumes:
- 主机目录:容器目录
ports:
- "主机端口:容器端口"
depends_on: # 依赖的服务
- web
extra_hosts: # 在容器的 /etc/hosts 文件中添加host信息
- "域名:IP"
command: "/usr/local/bin/docker-entrypoint.sh" # 覆盖容器启动后默认执行的命令
deploy: # 启动时需要添加 --compatibility 参数
resources:
limits:
cpus: '1' # 需要加单引号 '',类型是字符串 string
memory: 2048M