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

「这是我参与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 创建并启动容器

Guess you like

Origin juejin.im/post/7034322893202784286