本文最后更新于 2024-05-26,文章内容可能已经过时。

1、关于配置文件名

默认:docker-compose.yml

自定义例如:web.yml

启动命令就应该加参数:-f

docker-compose -f web.yml up -d

2、文件包含了4个一级Key

Version:

services:

networks:

volumes:

2-1、Version

首先确认docker 版本,运行下面指令,返回值即为版本号

docker -v

只要docker版本大于19.63就都可以写成3.8或者3,通常写3即可

2-2、services

定义服务容器的关键内容(最关键内容),包含以下几个内容

  • image

iamge:naginx:latest //Dockerhub官方镜像

image:nginx:1.24.0 //定制版本

birnami/nginx:latest //使用某个用户在Docker-Hub发布的镜像

  • build

构建镜像的路径和参数

如果你想从一个Dockerfile构建镜像

而不是使用预构建的镜像

可以使用此选项

  • ports

端口映射

将容器内的端口映射到宿主机的端口

例如:“8080:80”

表示将容器的80端口

映射到宿主机的80端口

  • volumes

卷挂载

用于数据持续久化和数据共享

dbdata:/var/lib/mysql

格式也是冒号左右分开,右边是容器内部的目录,冒号左边是要映射的目录或者挂在卷

  • environment

环境变量

可以设置环境变量供容器内应用使用

比如在配置mysql数据库时,

初始化时要进行root密码的设置

就可以通过环境变量来给出

例如:

environment:
	MYSQL_ROOT_PASSWORD:admin
  • depends_on

依赖关系

指定服务之间的依赖关系,

确保服务按顺序启动

  • command

容器启动后执行的命令

  • networks

网络设置

定义服务所使用的网络

  • restart:always

随宿主机启动

2-3、networks

常见驱动类型

bridge、overlay、host

格式

driver:host

2-4、volumes

  • 外部卷

External Volumes

外部卷,已存在的卷

由Docker外部创建和管理

可以被容器使用

示例:external:ture

  • 命名卷

Named Volumes

随容器服务创建过程中,创建的卷

有固定名称存储在宿主机的预定义路径下

示例:

volumes:
	dbdata:
  • 匿名卷

Anonymous Volumes

自动生成的没有指定名称的卷。

用于临时存储

示例:

/var/lib/mysql
  • 主机卷

Host Volumes

将宿主机的文件系统直接挂载在容器中

示例:

/path/in/host:/path/in/container