docker compose
- 什么是docker compose
- 为什么需要docker compose?
- docker compose 的功能
- docker compose 使用场景
- docker compose 文件
- docker compose常见命令
- 基本操作练习
什么是docker compose
为什么需要docker compose?
docker compose 的功能
- docker compose 是具备管理应用程序整个生命周期的命令:
docker compose 使用场景
docker compose 文件
文件基本结构及常见标签
文件基本结构:
version: 3.8 #定义当前docker compose.ymal文件所采用的语法版本
services: # 顶级标签,表示这个项目下的所有服务,也就是列举组成这个项目的具体服务:
serviceName1: # 具体服务的名称,他也是内部bridge网络可以使用的dns name,如果不是集群模式,那么就相当于docker run的时候指定的一个名称;
image: xxxx:tag # 必选,镜像的名字,可以是xxxx:tag模式,也可以是哈希摘要;
command: # 可选,如果设置,则会覆盖镜像里面的默认CMD启动命令;
environment: # 可选,设置环境变量;
volumes: # 设置存储卷
networks: # 指定当前容器加入的网络
ports: # 指定当前容器的映射端口
expose: # 可选,指定容器暴露的端口;
build: # 构建目录
depends_on: # 服务依赖配置
env_file: # 环境变量配置文件
serviceName2:
image:
command:
environment:
volumes:
serviceName3:
image:
command:
networks:
ports:
volumes: # 相当于docker volume create
networks: # 相当于docker network create
# 文件名:
docker-compose.yaml / docker-compose.yml
compose.yaml / compose.yml
# 任选其中一个即可
docker compose常见命令
-f: 指定配置文件的位置,可以多次指定,但是多次指定的配置文件最终会合并成一个配置文件;如果后一个配置文件中和前一个配置文件中在同层具有相同标签,则会覆盖,否则则会新增;
-p: 指定项目名称;
- 通过顶级标签:
name: xxx
来设置 - 指定的配置文件的目录名
- 如果没有指定配置文件,那么就是当前目录名
docker compose up
语法:docker compose up [OPTIONS] [SERVICE…]
功能: 构建镜像、创建容器、重新创建容器、启动容器并关联服务相关的一些操作。可以直接通过该命令来启动一个项目;
经试验发现,如果该命令什么参数都不带的情况下启动,那么它会查看.ymal
文件如果在这个文件中对应的服务存在容器,并且配置项没有改变,那么就会直接启动这个容器,不会新建容器;如果配置文件中某个服务的配置更改了,那么是需要重新创建容器在启动的,无论这个容器是否已经存在;
参数:
-d: 后台运行服务;
–force-recreate: 强制重新创建容器,不能与--no-recreate
同时使用;
–no-recreate: 如果容器已经存在,则不需要重新创建,直接启动容器,无论这个容器服务对应的配置文件是否修改!
实战:
首先来看看docker -compose.ymal
文件:
docker compose down
语法: docker compose down [OPTIONS] [SERVICES]
功能: 停止并删除容器、网络、存储卷以及创建出来的镜像;
默认会删除的东西有:
- 某个服务对应的容器;
- 在
.ymal
文件中创建的网络 - Docker Compose在默认情况下会创建一个名为default的网络,用于连接在同一个docker-compose.yml文件中定义的服务。除非在docker-compose.yml文件中明确指定了其他网络,否则服务会默认连接到这个default网络。当您运行docker-compose down时,这个默认的default网络(如果它被使用了)通常也会被移除,除非它被显式地标记为external或者通过其他方式被外部管理。
参数:
-v: 删除命名卷和匿名卷
–rmi:删除被服务使用的镜像,一般会有两个选项:local: 表示删除没有标签的镜像,比如: <none>:<none>
而all: 表示删除所有镜像
实战:
docker compose run
语法: docker compose run [OPTIONS] SERVICES [COMMAND] [ARGS…]
功能:对服务运行一次性命令,简而言之就是启动SERVICES服务,并以COMMAND作为服务的启动命令;
如果服务未启动,那么该run命令会启动服务,并运行指定的命令;如果服务以及启动,那么该run命令会直接执行指定命令;
参数:
-d: 后台运行服务;
–name : 指定容器的名字
–entrypoint: 覆盖默认的容器启动指令
-e key=val: 设置环境变量;
-u :指定容器运行的用户名
–rm : 运行完命令过后自动删除容器;
-p:端口映射;
实战: