docker-compose常用命令介绍

Compose常用命令

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 docker-compose.yml 文件,你可以配置应用程序的服务、网络和卷。

注意:需要在包含 docker-compose.yml 文件的目录下执行它们,且下面的命令后面省略了 服务名,比如 docker-compose up myapp -d

1、docker-compose up

该命令会构建、创建、启动容器,并附加到它们上。使用 -d 参数可以使容器在后台运行。

docker-compose up -d

# 删除停止的服务容器
docker-compose rm

# 查看端口映射
docker-compose port [service_name] [private_port]
# 示例:docker-compose port web 80

2、docker-compose down

停止并移除容器、网络、镜像以及卷(如果使用默认配置)。

docker-compose down

注意:添加 --volumes 同时删除命名卷:docker-compose down --volumes

3、docker-compose start

docker-compose start

4、docker-compose stop

停止正在运行的容器而不删除它们,以便以后可以重新启动。

docker-compose stop

5、docker-compose restart

重启服务容器。

docker-compose restart

6、docker-compose build

构建或重建服务。此命令等同于执行 docker-compose up 时自动进行的构建步骤。

docker-compose build

注意:添加 --no-cache 不使用缓存:docker-compose build --no-cache

7、docker-compose logs

查看服务容器输出的日志信息。使用 -f 参数可以实时跟踪日志输出。

docker-compose logs -f

8、docker-compose exec

进入某个服务的容器中执行命令,类似于 Docker 的 exec 命令。

docker-compose exec [service_name] [command]

# 运行一次性命令
docker-compose run [service_name] [command]
# 示例:docker-compose run web python manage.py migrate

9、docker-compose config

查看服务配置。

docker-compose config

# 验证配置
docker-compose config -q

10、docker-compose pause

暂停服务。

docker-compose pause [service_name]

# 恢复暂停的服务
docker-compose unpause [service_name]

11、docker-compose scale

扩展服务。

docker-compose scale 命令原本是用来扩展 Docker Compose 文件中定义的服务实例数量的。例如,如果你定义了一个名为 web 的服务,使用 docker-compose scale web=3 可以启动三个该服务的实例。

docker-compose scale [service_name]=[num]

# 示例:docker-compose scale web=3 worker=2

不过,需要注意的是,scale 命令在Compose文件版本2.x中有效,从 Docker Compose 2.x 版本开始,docker-compose scale 命令已经被弃用,并且在最新的版本中被移除。取而代之的是通过修改 docker-compose.yml 文件来实现相同的功能。现在推荐的方式是在 Compose 文件中使用 scale 参数或者直接指定服务的数量。例如:

services:
  web:
    image: "example/webapp"
    deploy:
      replicas: 3
---
# 也可以使用环境变量(建议使用Docker自动命名)
services:
  app:
    container_name: myapp_${INSTANCE_NUMBER}
    image: my-image

在这个例子中,replicas: 3 表示将会启动三个 web 服务的实例。

版本v3+替代命令

docker-compose up -d --scale [service_name]=[num]

容器名称问题

如果直接这样使用,则会报错,也就是没有什么效果,这是因为 Docker 要求每个容器必须有唯一的名称。

所以我们只有在 docker-compose.yml 文件中,去掉或注释掉 container_name 指令,docker-compose 在使用 scale 的时候,会自动命令容器,默认格式为:

[project]_[service]_[index]
比如:myproject_app_1

如果您在应用中硬编码了容器名称进行服务发现,移除 container_name 后可能需要调整。

考虑使用 Docker 内置的 DNS 服务发现(通过服务名访问)。

其他容器可以通过服务名称(如 app)访问该服务,不需要知道具体容器名称。

Docker 会自动处理负载均衡。

容器端口问题

上述解决了容器命名的问题,还有一个端口问题,我们也建议让 Docker,随机映射端口,在 docker-compose.yml 文件中就需要写:

services:
  app:
    # container_name: myapp
    image: dockette/jdk8
    ports:
      - "8090"
      - "8080-8090:8090"  # 或者让Docker在范围内选择可用端口

上述就是通过仅指定容器端口而不指定主机端口来实现,这样,Docker 会自动为你选择一个可用的主机端口映射到容器的8090端口。

关于容器的负载均衡,后面单独来写。

12、docker-compose -f

指定配置文件。

docker-compose -f [file_name.yml] [command]

# 可以指定多个文件
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up

完毕。

### Docker Compose 常用命令及其用法 以下是 `docker-compose` 的一些常用命令以及它们的具体用法: #### 1. 启动服务 通过运行容器来启动定义的服务。如果不存在镜像,则会先构建镜像再启动。 ```bash docker-compose up ``` 此命令会在前台运行所有服务,并显示日志输出[^2]。可以通过 `-d` 参数让其以后台模式运行: ```bash docker-compose up -d ``` #### 2. 查看状态 查看当前正在运行的容器的状态。 ```bash docker-compose ps ``` 该命令能够展示每个服务对应的容器 ID、名称、状态以及其他相关信息[^1]。 #### 3. 停止服务 停止由 `up` 或者其他方式启动的服务。 ```bash docker-compose stop ``` 这将优雅地发送信号给容器中的进程,使其正常关闭。 #### 4. 强制终止服务 强制立即杀死并停止所有的服务。 ```bash docker-compose kill ``` 当某些情况下无法正常使用 `stop` 来结束时可以考虑使用这个方法。 #### 5. 删除已创建的容器 删除之前已经创建过的容器实例。 ```bash docker-compose rm ``` 注意,在执行前通常需要先调用 `down` 或者手动停止这些容器。 #### 6. 构建或者重新构建服务 根据配置文件中的设置重建所需的服务镜像。 ```bash docker-compose build ``` 也可以针对特定的一个或多个服务进行单独构建: ```bash docker-compose build web app ``` 这里假设存在名为 `web` 和 `app` 的两个不同服务。 #### 7. 重启服务 对指定的服务实施重启操作。 ```bash docker-compose restart ``` 还可以加上额外参数控制具体哪些服务被影响到,比如只重启某个叫作 `db` 的数据库服务: ```bash docker-compose restart db ``` 上述例子表明我们仅希望刷新与数据存储有关的部分而不干扰其余部分的工作流程[^3]。 #### 8. 下载依赖项(拉取最新镜像) 从远程仓库获取最新的基础镜像版本以便更新本地环境下的应用组件. ```bash docker-compose pull ``` 它适用于那些基于官方发布版或者其他第三方源所提供的预制包情况之下.[^1] --- ### 示例代码片段 下面提供了一个简单的 `docker-compose.yml` 文件示例用于演示如何组合以上提到的各种指令一起工作: ```yaml version: '3' services: web: image: nginx:latest ports: - "8080:80" redis: image: redis:alpine ``` 在这个场景下,我们可以这样操作: - **启动服务**:`docker-compose up -d` - **查看服务状态**:`docker-compose ps` - **停止服务**:`docker-compose stop` - **清理资源**:`docker-compose down --remove-orphans` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值