【云原生-Docker】使用 Docker Compose 管理容器

时间:2022-11-17 16:52:39

【云原生-Docker】使用 Docker Compose 管理容器
????博客主页:????@不会压弯的小飞侠
欢迎关注:????点赞????收藏留言
系列专栏:????Docker学习专栏
学习社区:????不会压弯的小飞侠
知足上进,不负野心。
????欢迎大佬指正,一起学习!一起加油!

【云原生-Docker】使用 Docker Compose 管理容器


????安装 Docker Compose

Docker Compose 目前也是由 Docker 官方主要维护,但其却不属于 Docker Engine 的一部分,而是一个独立的软件。所以要在 Linux 中使用它,还必须要单独下载使用。
Docker Compose 是一个由 Python 编写的软件,在拥有 Python 运行环境的机器上,可以直接运行它,不需要其它的操作。可以通过下面的命令下载 Docker Compose 到应用执行目录,并附上运行权限,这样 Docker Compose 就可以在机器中使用了。

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$
$ sudo docker-compose version
docker-compose version 1.21.2, build a133471
docker-py version: 3.3.0
CPython version: 3.6.5
OpenSSL version: OpenSSL 1.0.1t  3 May 2016

也能够通过 Python 的包管理工具 pip 来安装 Docker Compose。

$ sudo pip install docker-compose

????Docker Compose 的基本使用逻辑

如果将使用 Docker Compose 的步骤简化来说,可以分成三步。

  1. 如果需要的话,编写容器所需镜像的 Dockerfile;
  2. 编写用于配置容器的 docker-compose.yml;
  3. 使用 docker-compose 命令启动应用

????编写 Docker Compose 配置

配置文件是 Docker Compose 的核心部分,通过它去定义组成应用服务容器群的各项配置,而编写配置文件,则是使用 Docker Compose 过程中最核心的一个步骤。

Docker Compose 的配置文件是一个基于 YAML 格式的文件,YAML 是一种清晰、简单的标记语言。

与 Dockerfile 采用 Dockerfile 这个名字作为镜像构建定义的默认文件名一样,Docker Compose 的配置文件也有一个缺省的文件名,也就是 docker-compose.yml。

Docker Compose 配置文件:

version: '3'

services:

  webapp:
    build: ./image/webapp
    ports:
      - "5000:5000"
    volumes:
      - ./code:/code
      - logvolume:/var/log
    links:
      - mysql
      - redis

  redis:
    image: redis:3.2
  
  mysql:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=my-secret-pw

volumes:
  logvolume: {}

????启动和停止

最常使用的 Docker Compose 命令就是 docker-compose up 和 docker-compose down 了。

docker-compose up 命令类似于 Docker Engine 中的 docker run,它会根据 docker-compose.yml 中配置的内容,创建所有的容器、网络、数据卷等等内容,并将它们启动。与 docker run 一样,默认情况下 docker-compose up 会在“前台”运行,可以用 -d 选项使其“后台”运行。

$ sudo docker-compose up -d

docker-compose 命令默认会识别当前控制台所在目录内的 docker-compose.yml 文件,而会以这个目录的名字作为组装的应用项目的名称。如果需要改变它们,可以通过选项 -f 来修改识别的 Docker Compose 配置文件,通过 -p 选项来定义项目名

$ sudo docker-compose -f ./compose/docker-compose.yml -p myapp up -d

docker-compose up 相反,docker-compose down 命令用于停止所有的容器,并将它们删除,同时消除网络等配置内容,也就是几乎将这个 Docker Compose 项目的所有影响从 Docker 中清除

$ sudo docker-compose down

????容器命令

除了启动和停止命令外,Docker Compose 还提供了很多直接操作服务的命令。
Docker Engine 中,如果我们想要查看容器中主进程的输出内容,可以使用 docker logs 命令。而由于在 Docker Compose 下运行的服务,其命名都是由 Docker Compose 自动完成的,如果直接使用 docker logs 就需要先找到容器的名字,这显然有些麻烦了。可以直接使用 docker-compose logs 命令来完成这项工作。

$ sudo docker-compose logs nginx

过docker-compose create,docker-compose start 和 docker-compose stop 可以实现与 docker create,docker start 和 docker stop 相似的效果,只不过操作的对象由 Docker Engine 中的容器变为了 Docker Compose 中的服务。

$ sudo docker-compose create webapp
$ sudo docker-compose start webapp
$ sudo docker-compose stop webapp

【云原生-Docker】使用 Docker Compose 管理容器