Docker Compose介绍及使用

1. Docker Compose介绍

Docker Compose是一个用于定义和运行多容器Docker应用程序的工具

它可以使用一个YAML文件来配置应用程序的服务,然后,只需使用一个命令,就可以从你的配置中创建并启动所有服务。

在yaml文件中,可以定义服务、网络和卷。服务定义了应用程序的哪些部分应该在哪些容器中运行,网络定义了如何将容器连接在一起,而卷则用于持久化和共享数据。

nginx举例:

version: '3'

services:
  nginx:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
    # 静态资源文件
      - ./html:/usr/share/nginx/html
    # 配置文件
      - ./nginx.conf:/etc/nginx/nginx.conf

2. 使用步骤

1. 编写Dockerfile

为每个服务编写一个Dockerfile,以定义如何构建容器的镜像。

2. 编写docker-compose.yml

在这个文件中,你会指定哪些服务需要运行、它们之间如何相互关联,以及它们使用哪些网络和卷。

3. 运行docker-compose up命令

这个命令会根据docker-compose.yml文件启动和运行你的整个应用程序。

Docker Compose特别适用于开发环境、自动化测试和小型生产部署。它简化了多容器Docker应用程序的管理和运行过程。

3. 常用命令

1. 服务镜像构建

构建docker-compose.yml文件定义的所有的服务镜像,如果你的 docker-compose.yml 文件中定义了多个服务,并且每个服务都有自己的 Dockerfile。

docker-compose build

那么当你运行 docker-compose build 命令时,Docker Compose 会查看 docker-compose.yml 文件,找到所有带有 build 配置的服务,并执行所需的步骤来构建这些服务的 Docker 镜像。

services:
  myservice:
    build:
      context: ./path/to/build/context
      dockerfile: Dockerfile-alternate
      args:
        build_arg: value
  • context 指定了 Docker 构建上下文的路径,这通常是包含 Dockerfile 和应用代码的目录。
  • dockerfile 指定一个自定义的 Dockerfile 名称,如果你没有使用默认的 Dockerfile 名称。
  • args 允许你指定构建参数,这些参数可以在 Dockerfile 中作为变量使用。

构建与 web 服务相关的镜像

docker-compose build web
2. 指定yml文件和项目名称
docker-compose -f docker-compose.yml -p dongodng up -d
3. 输出处理和解析后的 docker-compose.yml 文件的内容
docker-compose config
4. 创建容器但是不运行
docker-compose create
5. 停掉服务,删除容器,不删除镜像
docker-compose down
6. 监控和调试
docker-compose events
7. 对某个容器执行命令
docker-compose exec 容器名称 服务的命令
  • 为了使用 docker-compose exec,相应的服务的容器必须已经在运行中。
  • 如果你的 docker-compose.yml 定义了多个相同服务的实例(例如,使用了 scale),你可能需要使用 --index 选项来指定具体的容器实例。
  • 这个命令在开发和调试容器化应用程序时非常有用,但在生产环境中应谨慎使用,以避免意外的更改或安全问题。
8. 对某个服务查看日志
docker-compose logs -ft mysql
9. 查看服务状态
docker-compose ps [options] [SERVICE...]
  • [SERVICE…] 是可选的,用于指定你想查看状态的特定服务。如果省略,将显示所有服务的状态。
    选项
  • -q:静默模式。仅打印容器ID。
  • –services:显示服务名称,而不是容器。
  • –filter “status=running”:按特定状态筛选容器,例如运行中(running)或已停止(stopped)。
10. 重启服务
docker-compose restart/start/stop [服务名称]
11. 运行某个服务
docker-compose run [服务名称]
12. 查看服务中使用的镜像
docker-compose images [服务名称]
13. 强制停止容器

强制停止 Docker Compose 管理的一个或多个运行中的服务容器。

docker-compose kill [options] [SERVICE...]

运行以下命令来立即停止所有由当前 docker-compose.yml 管理的服务的容器。

docker-compose kill

如果你只想停止一个特定的服务(比如 web)

docker-compose kill web
  • 在重启服务之前,可能需要使用 docker-compose up 或其他命令来重新启动已停止的容器。
14. 删除停止的容器

将删除所有由当前 docker-compose.yml 文件定义的、已停止的服务容器。运行此命令时,通常会提示你确认是否删除每个容器。

docker-compose rm [options] [SERVICE...]

要强制删除而不进行确认,可以使用 -f 选项。

docker-compose rm -f

如果想先停止然后移除特定服务的容器(例如 web),可以结合使用 -s 和 -f 选项。

docker-compose stop web && docker-compose rm -f web
15. 想要重启单个服务容器
#先进行停掉服务
docker-compose stop web
#然后删除容器
docker-compose rm web
#再次启动该服务
docker-compose up -d  web

你可能感兴趣的:(docker)