Docker Compose常用命令安装docker-comosedocker-compose配置文件及常用指令yaml 文件级docker-compose.yml配置文件示例docker compose常用命令启动服务停止服务重启服务查看运行容器列表查看服务日志构建镜像docker-compose rm删除安装docker-comosedocker20.10之后的版本,默认支持docker compose命令,无需再额外安装docker-compose程序.# 声明版本VER2.35.1# 下载二进制程序wget-chttps://github.com/docker/compose/releases/download/v$VER/docker-compose-linux-x86_64# 创建bin目录mkdir-p$HOME/bin# 移动到binmvdocker-compose-linux-x86_64 ./bin/docker-compose# 授予执行权限chmodx ./bin/docker-compose# 查看docker-compose版本docker-compose-v# 查看docker-compose版本dockercompose versiondocker-compose配置文件及常用指令Docker Compose 使用 YAML 文件来定义多服务的应用。YAML 是 JSON 的一个子集因此也可以使用JSON。Docker Compose 默认使用文件名docker-compose.yml。当然也可以使用-f参数指定具体文件。yaml 文件级Docker Compose 的 YAML 文件包含 4 个一级 key:version、services、networks、volumesversion 是必须指定的而且总是位于文件的第一行。它定义了 Compose 文件格式(主要是 API)的版本。注意version 并非定义 Docker Compose 或 Docker 引擎的版本号。services 用于定义不同的应用服务。上边的例子定义了两个服务:一个名为 lagou-mysql数据库服 务以及一个名为lagou-eureka的微服。Docker Compose 会将每个服务部署在各自的容器中。networks 用于指引 Docker 创建新的网络。默认情况下Docker Compose 会创建 bridge 网络。 这是一种单主机网络只能够实现同一主机上容器的连接。当然也可以使用 driver 属性来指定不 同的网络类型。volumes 用于指引 Docker 来创建新的卷。docker-compose.yml配置文件示例services:# 定义服务confluence:# 定义 confluence 服务# 8.5.19 长期维护版本# 9.2.1 最新版本image:omaidb/confluence:8.5.19# 使用的confluence长期维护版 镜像及其版本container_name:confluence-srv# 容器名称environment:# 设置环境变量-TZAsia/Shanghai# 设置时区为上海# - JVM_MINIMUM_MEMORY1g # JVM 最小内存# - JVM_MAXIMUM_MEMORY12g # JVM 最大内存# - JVM_CODE_CACHE_ARGS-XX:InitialCodeCacheSize1g -XX:ReservedCodeCacheSize8g # JVM 代码缓存参数# 定义服务依赖depends_on:-postgres# 依赖 postgres 服务ports:# 映射端口-80:8090# 将宿主机的 8090 端口映射到容器的 8090 端口volumes:# 定义数据卷-home_data:/var/confluence# 将数据卷挂载到容器的 /var/confluence 目录restart:always# 设置容器始终重启策略networks:# 指定网络-network-bridge# 使用 network-bridge 网络# 定义名为 postgres 的服务postgres:image:postgres:15.4# 使用 postgres 15.4 版本的镜像container_name:postgres-confluence# 容器名称healthcheck:# 健康检查配置test:[CMD,pg_isready,-q,-d,postgres,-U,root]# 检查 PostgreSQL 服务是否可用timeout:45s# 健康检查的超时时间为 45 秒interval:10s# 健康检查的间隔时间为 10 秒retries:10# 健康检查失败后重试的次数为 10 次environment:# 定义环境变量-TZAsia/Shanghai# 设置时区为上海-POSTGRES_USERroot# PostgreSQL 的默认用户名为 root-POSTGRES_PASSWORD123456# PostgreSQL 的默认密码为 123456-APP_DB_USERconfluence# 应用程序的数据库用户名为 confluence-APP_DB_PASS123456# 应用程序的数据库密码为 123456-APP_DB_NAMEconfluence# 应用程序的数据库名称为 confluencevolumes:# 定义数据卷# - ./db:/docker-entrypoint-initdb.d/ # 将本地 ./db 目录挂载到容器的 /docker-entrypoint-initdb.d/ 目录-postgres_data:/var/lib/postgresql/data# 将本地 /data/postgres 目录挂载到容器的 /var/lib/postgresql/data 目录ports:# 定义端口映射-5432:5432# 将本地的 5432 端口映射到容器的 5432 端口restart:always# 服务失败时总是重启networks:# 指定网络-network-bridge# 使用 network-bridge 网络networks:# 定义网络network-bridge:# 定义名为 network-bridge 的网络driver:bridge# 使用 bridge 驱动volumes:# 定义数据卷home_data:# 定义名为 home_data 的数据卷external:false# 数据卷为内部创建postgres_data:# 定义名为 postgres_data 的数据卷external:false# 数据卷为内部创建docker compose常用命令命令 (Command)主要功能 (Description)常用选项 (Common Options)示例 (Example)up构建、(重新)创建、启动并关联服务相关的容器。-d: 后台运行 (Detached mode)--build: 强制重新构建镜像--force-recreate: 强制重新创建容器--no-deps: 不启动链接的服务docker-compose up -ddocker-compose up --builddocker-compose up service_namedown停止并移除容器、网络、卷和镜像。-v,--volumes: 同时移除数据卷--rmi type: 移除镜像 (all或local)--remove-orphans: 移除未在 compose 文件中定义的服务的容器docker-compose downdocker-compose down -vstart启动已经存在的服务容器。docker-compose start service_namedocker-compose startstop停止正在运行的服务容器但不删除它们。-t, --timeout seconds: 停止超时时间 (默认 10s)docker-compose stop service_namedocker-compose stoprestart重启服务容器。-t, --timeout seconds: 重启/停止超时时间docker-compose restart service_namedocker-compose restartps列出 Compose 项目中的容器。-q: 只显示容器 ID--services: 只列出服务名称-a,--all: 显示所有容器 (包括已停止的)docker-compose psdocker-compose ps -qlogs查看服务容器的日志输出。-f,--follow: 持续跟踪日志输出--tail N: 显示最后 N 行日志-t,--timestamps: 显示时间戳docker-compose logs -f service_namedocker-compose logs --tail 50build构建或重新构建服务的镜像。--no-cache: 构建镜像时不使用缓存--pull: 始终尝试拉取更新的基础镜像docker-compose build service_namedocker-compose build --no-cachepull拉取服务依赖的镜像。--ignore-pull-failures: 拉取失败时继续-q,--quiet: 只显示进度不输出详细信息docker-compose pulldocker-compose pull service_nameexec在正在运行的容器中执行命令。-d: 分离模式运行-T: 禁用伪 TTY 分配 (例如用于管道)-u,--user user: 指定用户docker-compose exec service_name bashdocker-compose exec -T db psql -U user -d dbnamerun在新容器中运行一次性命令。--rm: 命令结束后移除容器-e KEYVAL: 设置环境变量-v host:cont: 挂载卷--service-ports: 映射服务端口docker-compose run --rm web python manage.py migratedocker-compose run -e DEBUG1 webconfig验证和查看 Compose 文件配置。-q,--quiet: 只验证配置无错误时不输出--services: 打印服务名称列表--volumes: 打印卷名称列表docker-compose configdocker-compose config -qrm删除已停止的服务容器。-f,--force: 强制删除-s,--stop: 在删除前先停止容器-v: 同时删除关联的匿名卷docker-compose rmdocker-compose rm -fsvpause暂停服务中的容器进程 (利用 cgroup freezer)。docker-compose pause service_nameunpause恢复服务中被暂停的容器进程。docker-compose unpause service_namekill通过发送 SIGKILL 信号强制停止服务容器。-s signal: 指定发送的信号 (默认 SIGKILL)docker-compose kill service_namedocker-compose kill -s SIGTERM web通用选项 (Global Options):-f, --file filename: 指定一个或多个 Compose 配置文件 (默认为docker-compose.yml)。-p, --project-name name: 指定项目名称 (默认为当前目录名)。--profile profile_name: 激活指定配置文件的服务。启动服务启动服务# 前台启动服务dockercompose up## -d 守护进程dockercompose up-d启动服务# 启动服务dockercompose start停止服务停止服务# 停止并销毁服务dockercompose down停止服务# 停止已运行的服务dockercompose stop重启服务重启服务# 重启服务dockercompose restart查看运行容器列表列出所有运行容器# 列出所有运行容器dockercomposeps## -a 包括停止的容器dockercomposeps-a查看服务日志查看服务日志# 查看服务日志dockercompose logs服务名构建镜像构建# 构建或者重新构建服务dockercompose builddocker-compose rm删除# 删除已停止的服务容器dockercomposerm参数解释-f, --force不要求确认删除-s, --stop如果需要请在删除之前停止容器-v, --volumes删除附加到容器的所有匿名卷