docker compose使用
2024-01-21 01:20 youxin 阅读(502) 评论(0) 编辑 收藏 举报docker compose常用命令
# 默认使用docker-compose.yml构建镜像 $ docker-compose build $ docker-compose build --no-cache # 不带缓存的构建 # 指定不同yml文件模板用于构建镜像 $ docker-compose build -f docker-compose1.yml # 列出Compose文件构建的镜像 $ docker-compose images # 启动所有编排容器服务 $ docker-compose up -d # 查看正在运行中的容器 $ docker-compose ps # 查看所有编排容器,包括已停止的容器 $ docker-compose ps -a # 进入指定容器执行命令 $ docker-compose exec nginx bash $ docker-compose exec web python manage.py migrate --noinput # 查看web容器的实时日志 $ docker-compose logs -f web # 停止所有up命令启动的容器 $ docker-compose down # 停止所有up命令启动的容器,并移除数据卷 $ docker-compose down -v # 重新启动停止服务的容器 $ docker-compose restart web # 暂停web容器 $ docker-compose pause web # 恢复web容器 $ docker-compose unpause web # 删除web容器,删除前必需停止stop web容器服务 $ docker-compose rm web # 查看各个服务容器内运行的进程 $ docker-compose top
# 前台启动, 启动项目中的所有服务。 $. docker-compose up # 后台启动, 启动所有服务并在后台运行。 $. docker-compose up -d # 停止所有服务。 $. docker-compose stop restart docker-compose restart重启服务容器。 docker-compose restart # 重启工程中所有服务的容器 docker-compose restart nginx # 重启工程中指定服务的容器 start docker-compose start启动服务容器。 docker-compose start # 启动工程中所有服务的容器 docker-compose start nginx # 启动工程中指定服务的容器 stop docker-compose stop停止服务容器。 docker-compose stop # 停止工程中所有服务的容器 docker-compose stop nginx # 停止工程中指定服务的容器
停止并删除容器
docker-compose down nginx
-
docker-compose stop
docker-compose stop
命令将停止运行的容器,但不会删除它们。 -
docker-compose down
docker-compose down
命令将停止运行的容器,并且会删除已停止的容器以及已创建的所有网络。 我们可以down进一步迈出第一步,并添加-v
标记以删除所有卷。这对于通过运行在环境中进行完全重置非常有用docker-compose down -v
。
Usage: docker compose down
Stop and remove containers, networks
Options:
--remove-orphans Remove containers for services not defined in the Compose file.
--rmi string Remove images used by services. "local" remove only images that don't have a
custom tag ("local"|"all")
-t, --timeout int Specify a shutdown timeout in seconds (default 10)
-v, --volumes volumes Remove named volumes declared in the volumes section of the Compose file
and anonymous volumes attached to containers.
docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]
命令选项[options]
-d
指定在后台以守护进程方式运行服务容器-no-color
设置不使用颜色来区分不同的服务器的控制输出-no-deps
设置不启动服务所链接的容器-force-recreate
设置强制重新创建容器,不能与--no-recreate
选项同时使用。--no-create
若容器已经存在则不再重新创建,不能与--force-recreate
选项同时使用。--no-build
设置不自动构建缺失的服务镜像--build
设置在启动容器前构建服务镜像--abort-on-container-exit
若任何一个容器被停止则停止所有容器,不能与选项-d
同时使用。-t, --timeout TIMEOUT
设置停止容器时的超时秒数,默认为10秒。--remove-orphans
设置删除服务中没有在compose
文件中定义的容器--scale SERVICE=NUM
设置服务运行容器的个数,此选项将会负载在compose
中通过scale
指定的参数。
Docker Compose 配置文件 docker-compose.yml 详解
-
Version 3.x
最新版本,也是推荐使用版本,推出该版的目的是为了在Compose和Docker Engine的swarm模式之间形成交叉兼容。
通过YAML的根配置项version来指定,具体配置如version: '3'或version: '3.1'等。
V3删除了多个配置项,但也新增了更多配置项。
关于Compose配置文件版本的常见注意事项:
Compose配置文件格式版本与Docker的兼容性关系
Compose配置文件格式具有多种版本。其中Compose配置文件格式版本与Docker的兼容性关系如下表所示:
Compose配置文件格式版本 Docker Engine 版本
3.8 19.03.0+
3.7 18.06.0+
3.6 18.02.0+
3.5 17.12.0+
3.4 17.09.0+
3.3 17.06.0+
3.2 17.04.0+
3.1 1.13.1+
3.0 1.13.0+
2.4 17.12.0+
2.3 17.06.0+
2.2 1.13.0+
2.1 1.12.0+
2.0 1.10.0+
1.0 1.9.1.+
如果使用的较旧版本的Docker,可以参考官方的Compose版本发布列表。其中的每组发行说明都详细说明了支持的Docker Engine版本和兼容的Compose配置文件格式版本。
build选项
简单使用
作用: compose启动时,构建一个新镜像并使用。
示例:
可以是绝对路径
build: /path/to/build/dir
也可以是相对路径
build: ./dir
2 context
说明:可以是git仓库的url也可以是绝对/相对路径
build:
context: ./dir
3. dockerfile
如果dockerfile文件名不是默认名,需要指定
build:
context: ./
dockerfile: Dockerfile-alternate
---
也可以使用context指定上下文路径,使用dockerfile基于上下文路径指定Dockerfile文件,使用args指定构建参数。例如:
version: "3.8" services: webapp: build: context: ./dir dockerfile: Dockerfile-alternate args: buildno: 1
如果同时指定了build和image。例如:
build: ./dir
image: webapp:tag
Compose会在./dir目录下构建一个名为webapp,标签为tag的镜像。
使用docker stack deploy时的注意事项:在swarm mode下部署堆栈时,build配置项被忽略。因为docker stack命令不会在部署之前构建镜像。
docker cp from使用
在 Docker 中,可以使用 Dockerfile 来定义如何构建一个镜像。其中,使用 COPY 指令可以将文件或目录从 Docker 宿主机复制到镜像中。
而在构建一个多阶段构建的 Docker 镜像时,可以在 Dockerfile 中使用另一个构建阶段的文件,例如可以从 builder 阶段的 Docker 镜像中复制文件或目录到当前阶段的镜像中。
具体步骤如下:
- 在 Dockerfile 中定义 builder 阶段
# builder 阶段
FROM xxx AS builder
WORKDIR /app
COPY . .
RUN build_command
- 在 Dockerfile 中定义当前阶段,使用 builder 阶段中的文件或目录
# 当前阶段
FROM yyy
WORKDIR /app
COPY --from=builder /app/dist /app
在第二步中,COPY --from=builder
指令表示从 builder 阶段的 Docker 镜像中复制文件或目录到当前阶段的镜像中。/app/dist
是 builder 阶段中生成的文件或目录,/app
是当前阶段中的目标路径。
使用这种方式,可以将 builder 阶段中生成的文件或目录复制到当前阶段的镜像中,从而避免了在当前阶段重新构建的过程中重复生成文件或目录,提高了构建效率。
depends_on
指定服务之间的依赖关系,解决服务启动先后顺序问题。指定服务之间的依赖关系,将会导致以下行为:
docker-compose up以依赖顺序启动服务。
docker-compose up SERVICE会自动包含SERVICE的依赖项。
docker-compose stop以依赖顺序停止服务。
例如以下示例:
version: "3.8" services: web: build: . depends_on: - db - redis redis: image: redis db: image: postgres
启动时会先启动db和redis,最后才启动web。在使用docker-compose up web启动web时,也会启动db和redis,因为在web服务中指定了依赖关系。在停止时也在web之前先停止db和redis。
使用depends_on时的注意事项:
服务不会等待该服务所依赖的服务完全启动之后才启动。例如上例,web不会等到db和redis完全启动之后才启动。
V3版不再支持的condition形式的depends_on。
V3版中,在swarm mode下部署堆栈时,depends_on配置项将被忽略。
volumes
指定所挂载的主机路径或数据卷名称。支持short和long两种格式的语法。可以将主机路径作为单个服务的一部分进行挂载,而无需在顶层volumes配置项中定义。但是如果想要在多个服务之间重用数据卷,需要在顶层volumes配置项中定义一个数据卷名称。
在3版的配置文件格式中的变化:在顶层volumes配置项中定义了数据卷名称并从每个服务的volumes列表中引用了该数据卷。这将替代早期版本的Compose配置文件格式中的volumes_from配置项。
short语法使用通用的[SOURCE:]TARGET[:MODE]格式,SOURCE可以是主机路径或数据卷名称,TARGET为挂载数据卷的容器路径,MODE可以为ro只读模式或rw读写模式(默认)。可以在主机上挂载相对路径,该路径相对于正在使用的Compose配置文件的目录进行扩展,相对路径应始终以.或..开头。例如:
volumes: #只指定一个路径,Docker会自动在创建一个数据卷(这个路径是容器内部的) - /var/lib/mysql #使用绝对路径挂载数据卷 - /opt/data:/var/lib/mysql #使用基于Compose配置文件的相对路径作为数据卷挂载到容器 - ./cache:/tmp/cache #使用基于root用户的相对路径作为数据卷挂载到容器 - ~/configs:/etc/configs/:ro #使用已经存在命名的数据卷挂载到容器 - datavolume:/var/lib/mysql
long语法支持配置以下short语法中不支持的附加字段:
当你的项目内容发生变化,特别是源代码或 Dockerfile,你可能想重新构建和启动你的 Docker Compose 服务。以下是几种常用的方法:
重新构建并启动所有服务
停止当前运行的 Docker Compose 服务:
docker-compose down
重新构建镜像:
docker-compose build
重新启动服务:
docker-compose up
或者,你也可以用单个命令完成这三个步骤:
docker-compose up --build
这个命令会自动重新构建镜像并重新启动服务。
仅重新构建并启动特定服务
如果你只想重新构建和启动一个特定的服务,你可以像这样做:
停止服务:
docker-compose stop <service_name>
1
重新构建服务:
docker-compose build <service_name>
1
重新启动服务:
docker-compose up -d <service_name>
1
其中,<service_name> 是你在 docker-compose.yml 文件中定义的服务名称。
或则一条命令:docker-compose up --build <service_name>
https://www.jianshu.com/p/c51d92a9f91d