Docker的应用程序工具——Docker Compose

489 阅读4分钟

「这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战」。

思考

当我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build、docker run -d --name -p等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知。使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具

描述

Compose项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 OpenStack 中的 Heat 十分类似。其代码目前在github.com/docker/comp… 上开源。其前身是开源项目 Fig。

Compose 允许用户通过一个单独的docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。有效解决工作中需要多个容器相互配合来完成某项任务的情况。

Compose 中有两个重要的概念:

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

Docker Compose安装与卸载

(Compose 支持 Linux、macOS、Windows 10 三大平台。)

安装

#1 github官方网站 搜索Docker compose

#2 根据如下动态图片示例,找到下载好的二进制文件

github.com/docker/comp…

#2.1将下载好的文件拖入Linux 并剪切到 /usr/local目录下

mv docker-compose-Linux-x86_64 /usr/local
#2.2 修改名称(为后面方便调用) 并 修改其为可执行文件

mv docker-compose-Linux-x86_64  docker-compose

chmod 777 docker-compose

mv docker-compose  /usr/local/bin/
#3 运行以下命令以下载Docker Compose的当前稳定版本:

sudo curl -L 

"https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 4将可执行权限应用于二进制文件:
sudo chmod +x /usr/local/bin/docker-compose
#5测试是否安装
$ docker-compose --version
docker-compose version 1.25.5, build 1110ad01

卸载

#如果是 二进制包方式安装的,删除二进制文件即可
sudo rm /usr/local/bin/docker-compose

#如果是通过 pip 安装的,则执行如下命令即可删除。
sudo pip uninstall docker-compose

Docker Compose使用

用compose的方式管理一个Tomcat容器和MySQL

1、管理文件夹,创建相应的目录

mkdir -p /opt/docker_mysql_tomcat/

2、在如上目录中 编写创建 docker-compose.yml配置文件

编写 docker-compose.yml 文件,这个是 Compose 使用的主模板文件。

version: '1.0'
services: 
  mysql:                                        # 服务的名称
    restart: always                             # 只要docker启动,容器会随着启动
    image: daocloud.io/library/mysql:5.7.6      # 指定镜像路径信息(默认官方镜像地址)
    container_name: mysql-3306                   # 指定容器名称 --name
    ports:
      - 3306:3306                              #指定端口号映射
    environment: 
      MYSQL_ROOT_PASSWORD: root                 #指定MYSQL ROOT用户的密码
      TZ: Asiz/Shanghai                         #指定时区
    volumes:
      - /opt/docker_mysql_tomcat/mysql/data:/var/lib/mysql #映射mysql的数据目录到宿主机,保存数据
      - /opt/docker_mysql_tomcat/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
      #把mysql的配置文件映射到容器的相应目录
  tomcat:
    restart: always
    image: daocloud.io/library/tomcat:8.5.15-jre8
    container_name: tomcat-8080
    ports:
      - 8080:8080
    environment:   
      TZ: Asiz/Shanghai  
    volumes:
      - /opt/docker_mysql_tomcat/tomcat/webapps:/usr/local/tomcat/webapps
      - /opt/docker_mysql_tomcat/tomcat/logs:/usr/local/tomcat/logs

补充:yml格式描述

1、yml文件以缩进代表层级关系

2、缩进不允许使用tab只能使用空格

3、空格的个数不重要,只要相同层级的元素左对齐即可(建议2个)

4、大小写敏感

5、数据格式为,名称:(空格)值

6、支持对象,数组,基本数据类型三种数据格式 例如:

#一、 k: (空格)v:表示一对键值对(空格不能省略),以空格控制层级关系,只要是左对齐的数据,都是同一级别;
server:
  port: 8080
  path: /hello
#二、数组(用-表示数组中的一个元素):
animal:
- cat
- dag

3、启动管理容器

docker-compose up -d

Docker-compose 常用命令

build 构建或重建服务

help 命令帮助

kill 杀掉容器

logs 显示容器的输出内容

port 打印绑定的开放端口

ps 显示容器

pull 拉取服务镜像

restart 重启服务

rm 删除停止的容器

run 运行一个一次性命令

scale 设置服务的容器数目

start 开启服务

stop 停止服务

up 创建并启动容器