【Docker】专题四:Docker Compose 相关

2024-09-02 12:27:02 浏览数 (2)

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!

如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我~

相关概念

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

0 人点赞