docker compose详细使用教程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 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

目录
相关文章
|
10天前
|
机器人 网络安全 数据安全/隐私保护
autMan奥特曼机器人-对接Docker版本NTQQ详细教程
本文介绍了如何在服务器上搭建NTQQ机器人,通过官方NTQQ对接各框架,实现QQ登录的稳定运行。文章提到了需要准备一台服务器和相应的软件,并详细描述了通过SSH链接服务器、创建文件夹和配置文件、编辑配置文件地址端口、运行容器等步骤。同时,文章还介绍了VNC连接的使用和配置,以及使用watchtower进行NTQQ的更新。文章总结起来就是在服务器上搭建NTQQ机器人,实现QQ登录的稳定性和自动登录功能,同时提供了更新和维护的方法。
39 3
autMan奥特曼机器人-对接Docker版本NTQQ详细教程
|
10天前
|
缓存 监控 持续交付
|
5天前
|
负载均衡 监控 开发者
深入浅出:掌握 Docker Compose 的高级用法
【10月更文挑战第22天】本文深入探讨了 Docker Compose 的高级用法,包括环境变量、服务扩展、网络配置和数据卷管理。通过实例详细介绍了如何利用这些功能提升开发效率和应用部署的灵活性。适合希望深入了解 Docker Compose 的开发者阅读。
|
29天前
|
Linux Docker 容器
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
本篇博客重在讲解Centos安装docker,经博主多次在不同服务器上测试,极其的稳定,尤其是阿里的服务器,一路复制命令畅通无阻。
166 4
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
|
28天前
|
资源调度 关系型数据库 MySQL
docker制作compose
本文介绍了Docker Compose的基本使用,包括安装、创建`docker-compose.yml`文件定义服务,以及如何使用环境变量和卷来配置多容器应用的步骤。
23 1
docker制作compose
|
9天前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
97 2
|
17天前
|
数据可视化 数据挖掘 Docker
Docker Desktop 安装 ClickHouse 超级简单教程
Docker Desktop 安装 ClickHouse 超级简单教程
35 1
|
17天前
|
Ubuntu Linux 网络安全
Docker&Docker Compose安装(离线+在线)
Docker&Docker Compose安装(离线+在线)
128 1
|
24天前
|
存储 Kubernetes 持续交付
Docker Compose
【10月更文挑战第3天】
39 6
|
21天前
|
存储 Kubernetes 调度
掌握 Docker Compose
【10月更文挑战第6天】
16 1