Docker Compose

简介

Docker Compose 是Docker官方的开源项目, 其目的是为了简化我们使用Docker的操作

使用 Dockerfile 模板文件,可以快速部署一个单独的应用。

然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器(MySQL),甚至还包括负载均衡容器(Nginx)等。

Compose 可以满足这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(Project)。Compose 中有两个重要的概念:

  • 服务 (Service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目 (Project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。

总结: Docker Compse安装完成之后, 通过编写docker-compose.yml文件, 可以一次性启动/部署多个容器/服务 , 不用再一个个启动容器了, 就是为了简化操作

安装 Docker Compose

安装Docker Cpmpose

从 官方 GitHub Release 处直接下载编译好的二进制文件即可。

# 下载指令
curl -L https://github.com/docker/compose/releases/download/1.26.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 下载完成后没有执行权限, 添加执行权限
chmod +x /usr/local/bin/docker-compose

验证

# 查看版本指令
[root@worker ~]# docker-compose version
# 输出内容
docker-compose version 1.26.0, build d4451659
docker-py version: 4.2.1
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

Docker Compose 部署Tomcat

创建 tomcat 的Docker Compose 文件

创建docker-compose.yml文件,路径可以随意指定,文件名只能是 docker-compose.yml,但是执行docker-compose命令时必须要在该文件所在路径中

docker-compose.yml 文件内容

version: '2.0'
services:
  tomcat:
    restart: always 
    image: tomcat
    container_name: tomcat
    ports:
      - 8080:8080
    volumes:
      - ./webapps:/usr/local/tomcat/webapps.dist
    environment:
      TZ: Asia/Shanghai

启动Docker Compose

# 如果配置文件没有出错,执行如下命令(在docker-compose.yml当前目录)
docker-compose up -d 

停止Docker Compose

docker-compose down 

docker-compose.yml 内容解释

# 版本号
version: '2.0'
# 服务列表
services:
  # 服务名 随便起,不重名就行
  tomcat:
  	# 开机启动
    restart: always 
    # 镜像名 (本地拥有的镜像或者公共仓库的镜像)
    image: tomcat
    # 容器名
    container_name: tomcat
    # 端口映射规则
    ports:
      - 8080:8080
    # 数据卷配置,和端口规则一样 冒号左边是宿主机, 右边是容器
    volumes:
      - ./webapps:/usr/local/tomcat/webapps.dist
    # 环境变量
    environment:
      TZ: Asia/Shanghai

数据卷解释:就是将 宿主机和容器中的一个文件夹进行同步
例如:

volumes:
  - ./webapps:/usr/local/tomcat/webapps

冒号左边是宿主机的文件夹 ./webapps 也是是当前目录下的 webapps 文件夹和冒号右边的容器内的 /usr/local/tomcat/webapps 文件夹关联起来

Docker Compose常用命令

# 查看容器运行状态
docker-compose ps
# 停止容器(说明:docker-compose stop,如果没有指定容器,则会把docker-compose.yml文件中配置的所有容器停止。如果只想停止某个容器,则需要指定容器名)
docker-compose stop (docker-compose stop tomcat)
# 删除容器
docker-compose rm tomcat
# 如下这个,容器名是nginx,注意,是nginx,不是nginx_nginx_1
# docker-compose ps
    Name              Command          State                     Ports                    
-----------------------------------------------------------------------------------------
nginx_nginx_1   nginx -g daemon off;   Up      0.0.0.0:443->443/tcp, 0.0.0.0:8086->80/tcp 
Commands:
  build              Build or rebuild services
  config             Validate and view the Compose file
  create             Create services
  down               Stop and remove containers, networks, images, and volumes
  events             Receive real time events from containers
  exec               Execute a command in a running container
  help               Get help on a command
  images             List images
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pull service images
  push               Push service images
  restart            Restart services
  rm                 Remove stopped containers
  run                Run a one-off command
  scale              Set number of containers for a service
  start              Start services
  stop               Stop services
  top                Display the running processes
  unpause            Unpause services
  up                 Create and start containers
  version            Show the Docker-Compose version information

docker-compose 常用命令:

// up 该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作
docker-compose up [options] [SERVICE...]   // -d 比较常用,不会打印过程。

//down 停止 up 命令所启动的容器,并移除网络。——这里需要特别注意,up 启动的,不应该使用rm 去删除,因为这样无法删除网络
docker-compose down

// run 命令
docker-compose run [options] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]

// ps 查看项目中的所有容器
docker-compose ps

// restart 重启服务
docker-compose restart [options] [SERVICE...]。

// stop start 停止和开启容器
docker-compose stop xxx
docker-compose start xxx

// kill 强制停止某容器
docker-compose kill -s SIGINT

// rm 删除指定或所有的服务容器
docker-compose rm -f [service]

// build 重建某个容器,在 Dockerfile 发生了改变的时候,可以重建image。然后再 up 运行起来所有的容器
docker-composer build    //重建所有容器
docker-compose build xxx   //重建指定容器

//exec 进入某个容器
docker-compose exec -it ct-phpfpm /bin/bash

// images 查看compose文件中包含的镜像
docker-compose images

// pull 拉取依赖
docker-compose pull [options] [SERVICE...]

// push 推送服务依赖的镜像到 Docker 镜像仓库。
docker-compose push

// port 打印某容器的映射端口
docker-compose port xxx

// config 验证 docker-compose 文件格式是否正确
docker-compose config// top 查看所有容器的进程
docker-compose top

说明

使用docker-compose创建的容器,在Portainer中也能够看到
Docker Compose_第1张图片
Docker Compose_第2张图片
Docker Compose_第3张图片
Docker Compose_第4张图片

你可能感兴趣的:(Docker Compose)