docker compose详细使用教程

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: docker compose详细使用教程

Compose介绍

docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。

Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

安装插件

1. yum update
2. yum install docker-compose-plugin
3. 
4. # 安装完成后查看版本号
5. docker compose version

docker-compose常用命令

1. # 查看配置命令
2. $ docker compose config
3. 
4. # 构建并后台启动
5. $ docker compose up -d
6. 
7. # 将会停止UP命令启动的容器,并删除容器
8. $ docker compose down 
9. 
10. #重新启动nginx容器
11. $ docker compose restart 
12. 
13. # 启动已存在的容器命令
14. $ docker compose start
15. 
16. # 停止正在运行的容器命令
17. $ docker compose stop
18. 
19. #暂停容器
20. $ docker compose pause               
21. 
22. # 恢复容器
23. $ docker compose unpause
24. 
25. # 构建镜像
26. $ docker compose bulid
27. 
28. # 下载镜像
29. $ docker compose pull
30. 
31. # 删除容器
32. $ docker compose rm 
33. 
34. # 查看运行的镜像
35. $ docker compose ps
36. 
37. # 查看进程
38. $ docker compose top
39. 
40. # 查看服务日志输出
41. $ docker compose logs

Docker-Compose模板文件

Compose模板文件默认路径是当前目录下的docker-compose.yml,可以使用.yml或.yaml作为文件扩展名。 Docker-Compose标准模板文件应该包含version、services、networks 三大部分,最关键的是services和networks两个部分。

image

image是指定服务的镜像名称或镜像ID

1. services:
2.     web: 
3.         image: hello-world

build

利用Dockerfile自动构建镜像,然后使用镜像启动服务容器。

1. build:
2.   context: ../
3.   dockerfile: path/of/Dockerfile

command

使用command可以覆盖容器启动后默认执行的命令。

command: bundle exec thin -p 3000

container_name

指定自定义容器名称

container_name: app

depends_on

表示服务之间的依赖关系。

1. version: "3"
2. services:
3.   web:
4.     build: .
5.     depends_on:
6.  - redis
7.   redis:
8.     image: redis
9. 
10. #docker compose up:按依赖顺序启动服务,redis在web之前启动。
11. #docker-compose stop:按依赖顺序停止服务,web在redis之前停止。

pid

将PID模式设置为主机PID模式,跟主机系统共享进程命名空间。

pid: "host"

ports

映射端口

1. ports:
2.  - "8000"
3.  - "49022:22"
4.  - "127.0.0.1:8001:8001"

extra_hosts

添加主机名映射。使用与docker客户端–add-host类似

1. extra_hosts:
2.  - "somehost:162.242.195.82"
3.  - "otherhost:50.31.209.229"

volumes

目录映射,可以直接使用 [主机:容器]格式,或者使用[主机:容器:ro]格式,后者对于容器来说,数据卷是只读的,可以有效保护宿主机的文件系统。

1. volumes:
2.   # 只指定一个路径,Docker会自动在创建一个目录。
3.  - /var/lib/mysql
4.   # 主机使用绝对路径和容器目录映射
5.  - /opt/data:/var/lib/mysql
6.   # 以Compose配置文件的目录为中心的相对路径和容器目录映射
7.  - ./cache:/tmp/cache
8.   # 使用用户的相对路径(~/ 表示的目录是 /home/<用户目录>/ 或者 /root/)。
9.  - ~/configs:/etc/configs/:ro

dns

自定义DNS服务器。

1. dns:8.8.8.8
2. dns:
3.  - 8.8.8.8
4.  - 9.9.9.9

dns_search

配置DNS搜索域。

1. dns_search:example.com
2. dns_search:
3.  - domain1.example.com
4.  - domain2.example.com

entrypoint

设置入口命令

1. entrypoint: /code/entrypoint.sh
2. entrypoint: ["php", "-d", "memory_limit=-1", "vendor/bin/phpunit"]
3. entrypoint: java -jar penngo_test.jar

env_file

从文件添加环境变量

1. env_file: .env
2. env_file:
3.  - ./common.env
4.  - ./apps/web.env
5.  - /opt/runtime_opts.env

environment

添加环境变量。

1. environment:
2.   RACK_ENV: development
3.   SHOW: 'true'
4.   SESSION_SECRET:
5. 
6. environment:
7.  - RACK_ENV=development
8.  - SHOW=true
9.  - SESSION_SECRET

external_links

链接到docker-compose.yml外部的容器

1. external_links:
2.  - redis_1
3.  - project_db_1:mysql
4.  - project_db_1:postgresql

cap_add

增加指定容器的内核能力(capacity)。

1. cap_add:
2.  - ALL

cap_drop

去掉指定容器的内核能力(capacity)。

1. cap_drop:
2.     - NET_ADMIN

cgroup_parent

创建了一个cgroup组名称为cgroups_1:

cgroup_parent: cgroups_1

devices

指定设备映射关系

1. devices:
2.     - "/dev/ttyUSB1:/dev/ttyUSB0"

expose

暴露端口,但不映射到宿主机,只允许能被连接的服务访问。

1. expose:
2.  - "3000"
3.  - "8000"

labels

为容器添加Docker元数据(metadata)信息。

1. labels:
2. - "com.example.description=Accounting webapp"
3. - "com.example.department=Finance"
4. - "com.example.label-with-empty-value"

links

链接到其它服务中的容器

1. links:
2.     - db
3.     - db:database
4.     - redis

log_driver

指定日志驱动类型。目前支持三种日志驱动类型:

1. log_driver: "json-file"
2. log_driver: "syslog"
3. log_driver: "none"

log_opt

日志驱动的相关参数。

net

设置网络模式。

1. net: "bridge"
2. net: "none"
3. net: "host"

实践操作

  • docker-compose.yml文件
1. version: "3"
2. services:
3.   mysql:
4.     image: mysql:latest
5.     container_name: mysql_slaver11
6.     restart: always
7.     privileged: true
8.     ports:
9.  - 3307:3306
10. environment:
11.       MYSQL_ROOT_PASSWORD: 123456
12.       TZ: Asia/Shanghai
13.     volumes:
14.  - /wuming/mysql/slaver11/data:/var/lib/mysql
15.  - /wuming/mysql/slaver11/log:/var/log/mysql
16.  - /wuming/mysql/slaver11/conf/my.cnf:/etc/mysql/my.cnf
17.   mycat:
18.     image: manondidi/mycat:latest
19.     container_name: mycat
20.     restart: always
21.     ports:
22.  - 8066:8066
23.     volumes:
24.  - /wuming/mycat/conf:/usr/local/mycat/conf
25.  - /wuming/mycat/logs:/usr/local/mycat/logs
26.   redis:
27.     image: redis:latest
28.     container_name: redis_master
29.
  • 端口测试
1. netstat -npl | grep 3306
2. netstat -npl | grep 3307
3. netstat -npl | grep 8066
  • 构建并后台启动

进入docker-compose对应的文件目录下,执行以下命令

1. # 对应目录下运行docker-compose文件
2. docker compose up -d

  • 测试端口是否可以访问以及容器是否启动
1. # 安装telnet
2. yum -y install telnet
3. # 查看对方端口是否开
4. telnet  192.168.10.143 3307
5. docker ps

目录
相关文章
kde
|
2月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
kde
897 4
|
3月前
|
人工智能 前端开发 Docker
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
在 AI 智能体开发中,开发者常面临本地调试与云端部署的矛盾。本文介绍如何通过 Docker Compose 与 Docker Offload 解决这一难题,实现从本地快速迭代到云端高效扩容的全流程。内容涵盖多服务协同、容器化配置、GPU 支持及实战案例,助你构建高效、一致的 AI 智能体开发环境。
346 2
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
kde
|
2月前
|
存储 搜索推荐 数据库
🚀 RAGFlow Docker 部署全流程教程
RAGFlow是开源的下一代RAG系统,融合向量数据库与大模型,支持全文检索、插件化引擎切换,适用于企业知识库、智能客服等场景。支持Docker一键部署,提供轻量与完整版本,助力高效搭建私有化AI问答平台。
kde
1813 8
|
3月前
|
运维 数据可视化 开发者
2025年 三个 Docker Compose 可视化管理器测评
本文对比了三款主流的 Docker Compose 可视化管理工具。随着 Docker 的普及,Compose 已成为多容器应用部署的标准,但 YAML 配置复杂、协作困难等问题也日益突出。三款工具各有侧重:Docker Desktop 适合个人本地开发,Portainer 适合小团队运维管理,而 Websoft9 则通过 GitOps 实现了强大的版本控制与团队协作能力。文章从可视化编辑、部署便捷性、版本管理等方面进行评测,为不同使用场景提供了推荐方案,展望了未来 Compose 管理向 GitOps 深度融合的发展趋势。
414 1
2025年 三个 Docker Compose 可视化管理器测评
kde
|
5月前
|
文件存储 数据安全/隐私保护 开发者
群晖NAS Docker镜像源加速配置教程
本教程介绍了群晖NAS用户如何通过配置轩辕镜像加速服务提升Docker镜像拉取速度。内容包括配置前准备、详细设置步骤及日常使用说明,帮助用户快速完成配置并享受高效稳定的镜像下载体验。
kde
3234 59
|
4月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
298 16
|
数据可视化 开发工具 git
GitOps 驱动的 Docker Compose 可视工具化来了,图形化编辑器上玩转容器编排
Docker Compose 简化了多容器应用的部署,但随着应用复杂度上升,文本配置方式逐渐暴露出维护难、协作效率低等问题。基于 GitOps 的可视化 Docker Compose 工具应运而生,通过图形界面降低使用门槛,提升配置准确性和团队协作效率。结合 GitOps,实现配置变更的版本追踪、自动化部署与环境一致性,为多容器应用管理提供高效、安全的解决方案。
kde
|
运维 关系型数据库 MySQL
宝塔面板 Docker 镜像加速教程
本文介绍了如何为宝塔面板中的 Docker 配置轩辕镜像加速。内容包括:安装 Docker 管理器、获取镜像加速地址、配置加速 URL 以及验证设置等步骤。通过使用免费版或专业版加速地址(如 docker.xuanyuan.me 或 xuanyuan.cloud),可显著提升镜像拉取速度。同时,还提供了日常使用方法和注意事项,帮助用户顺利完成配置并保障 Docker 服务稳定运行。
kde
251 0
|
5月前
|
NoSQL Redis Docker
使用Docker Compose工具进行容器编排的教程
以上就是使用Docker Compose进行容器编排的基础操作。这能帮你更有效地在本地或者在服务器上部署和管理多容器应用。
467 11