docker compose
docker compose 是什么
Docker Compose 是一个用于定义和运行多个 Docker 容器的工具,它允许你使用一个 YAML 文件来配置和管理 Docker 容器。
如果你已经下载了docker图形化界面,那么你就可以直接使用了,里面内嵌了这个。
如果没有下载,你可以去Install the Compose plugin | Docker Documentation
Docker Compose 可以帮助我们快速地部署和管理多个 Docker 容器,并提供了一种简单而强大的方式来定义和管理多个容器之间的依赖关系、网络配置和数据卷等。
Docker Compose 文件可以包含一个或多个服务,每个服务都是一个Docker 容器。
可以在 Docker Compose 文件中定义容器的镜像、环境变量、端口映射、依赖关系等属性,以及容器之间的网络和数据卷等配置。当我们使用 Docker Compose 启动容器时,它会自动创建和启动定义的容器,并配置它们之间的网络和数据卷等关系。
docker compose 作用
使用 Docker Compose 可以帮助你简化容器的部署和管理过程,当需要部署一个包含多个容器的应用程序时。
你可以使用 Docker Compose 来管理这些容器之间的依赖关系和配置,使得整个应用程序的部署和管理更加容易和可靠。
另外,Docker Compose 还提供了一些实用的命令和工具,例如 docker-compose up
、docker-compose down
、docker-compose ps
等,可以帮助我们轻松地启动、停止和管理 Docker 容器。
docker compose 使用实例
这里依旧是使用官网的例子:
- 下面是我们之前启动前端容器的命令
我们现在就是将它使用docker-compose.yml去配置。
- 配置docker-compose.yml:
- 现在就可以启动它了,
docker compose up -d
, 后台启动。
启动之后,会发现它帮我们创建了一个network,然后也自己创建了一个卷:
-
当我们使用
docker-compose up
启动容器时,Docker Compose 会自动创建一个默认网络,并将所有服务连接到这个网络中。这个默认网络的名称由 Docker Compose 自动生成,通常是以当前目录的名称为前缀,加上一个随机字符串作为后缀。 -
默认网络可以理解,但是创建了一个新卷,很离谱; 因为docker compose 是以名称来引用卷,里面我只是指定了volume在该配置文件中的名称,而没有指定它去哪里寻找卷,docker就为我们新建了一个卷。
那要是我们不想要新建这个卷该怎么办,答案是指定卷的名称,类似这样:
这样docker就可以去docker主机里去寻找name为todo-mysql-data的卷。
- 容器正常启动。
下面介绍一些 docker compose up用法
根据docker-compose.yml文件起步应用
docker-compose up
命令用于启动 Docker Compose 中定义的服务。它会根据 docker-compose.yml
文件中的定义,启动服务并创建容器。
运行 docker-compose up
命令时,Docker Compose 会启动您在 docker-compose.yml
文件中定义的所有服务, 因此你要保证该命令执行时docker-compose.yml文件在当前目录下,或者使用-f
去指定文件。
现场构建镜像
它会首先构建缺少的镜像(如果你不指定iamge的话)。
要自主构建镜像的话你需要指定构建镜像的Dockerfile文件位置,像:
services:
web:
build: ./webfile
ports:
- "8080:80"
前台启动
在启动服务时,docker-compose up
命令将会在前台运行,同时会输出服务的日志信息。可以使用ctrl + c 退出。
后台启动
docker-compose up -d
, 这个命令将会让该服务在后台启动。
关闭应用
docker compose down
该命令将会查找该目录中的 docker-compose.yml
文件,并停止并删除所有在该文件中定义的服务包括network,但是卷不会被删除,要想删除卷 需要 加上 –volumes
docker compose down需要在docker-compose.yml的同级目录下运行 或者 使用 -f 指定docker-compose.yml文件的位置。