Docker Compose入门

简介: 本实验介绍了Docker Compose的安装和快速入门

Docker Compose入门

1. 创建资源

开始实验之前,您需要先创建实验相关资源。

  1. 在实验室页面,单击创建资源
  2. (可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、子用户信息等)。

说明:资源创建过程需要3~5分钟视资源不同开通时间有所差异,ACK等资源开通时间较长。完成实验资源的创建后,您可以在云产品资源列表查看已创建的资源信息,例如:子用户名称、子用户密码、AK ID、AK Secret、资源中的项目名称等。

实验环境一旦开始创建则进入计时阶段,建议学员先基本了解实验具体的步骤、目的,真正开始做实验时再进行创建。

资源创建成功,可在左侧的资源卡片中查看相关资源信息以及RAM子账号信息

2. Docker Compose的安装

在之前的实验中,我们在创建和管理容器的时候,都是用的是docker的命令行,但是随着docker   run参数的增多,命令行的长度会越来越长。再加上复杂的服务往往由多个不同的容器共同组成,这样在创建一个完整的服务的时候,就会输入多条超长的命令。这时候我们就可以考虑使用docker  compose。

docker compose 是一个用go语言开发的docker扩展程序,通过docker compose我可以使用配置文件的方式来同时管理多个容器。接下来我们先来学习docker compose的安装。

  1. 插件安装(推荐)

docker   compose的安装有两种方式,分别为作为docker插件和单独应用。在centos或者redhat系统中,我们可以通过yum以插件的方式安装docker  compose。这种方式在安装之后会将docker compose作为docker插件进行运行。我们可以通过docker compose命令进行调用。

yum install -y docker-compose-plugin
docker compose version

  1. 单独应用安装【两种任选其一即可】

另一种方式是直接下载安装包安装,这种方式将docker compose安装为独立的应用,注意此步骤会使用github数据源安装,如果速度较慢,可以省略。这种方式在安装之后使用docker-compose命令进行运行。

curl -SL https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose version

3. YML到JSON的转化工具

YML文件是一种适合人类阅读的配置文件格式,这种文件格式能够表示的数据结构和JSON格式配置文件类似。为了便于我们学习,我们先来制作一个YML和JSON的互相转换工具,以便于理解YML的格式。

  1. 创建转换镜像

我们基于python中的yaml和json模块来实现解析功能。首先我们来创建Dockerfile,在镜像中首先通过pip install安装pyyaml模块。接下来再添加两条py格式的脚本2json.py和2yml.py。我们使用vi来编辑Dockerfile,注意使用vim编辑器时:

  1. 需要先按i键进入编辑模式。
  2. 编辑完成之后按esc退出编辑模式。
  3. 然后按大写的ZZ保存并退出vim。
vi Dockerfile
FROM python:latest
RUN pip install pyyaml
RUN echo "import yaml, json, sys\n\
print(json.dumps(yaml.safe_load(sys.stdin.read()), indent=4))" > 2json.py
RUN echo "import yaml, json, sys\n\
print(yaml.safe_dump(json.load(sys.stdin), sort_keys=False))" > 2yml.py

Dockerfile编写好之后,我们生成容器镜像

docker build -t yml/py . 
docker images

  1. YML转化为JSON

接下来我们使用刚才创建好的镜像,将yml文件转化为json格式。首先我们创建一个最简单的YML文件demo.yml。内容为id: '10'

接下来在这里我们在执行docker run创建容器时使用--rm参数。该参数创建的容器在退出后会自动被删除,一般用于执行一次性任务的容器的创建。同时在命令中使用了< 重定向符号,将宿主机中的文件作为参数传递给容器中。

echo id: '10' > demo.yml
docker run -i --rm yml/py python 2json.py < demo.yml

  1. JSON转化为YML

然后我们再来尝试将JSON格式文件转化为YML格式。首先创建一个简单的JSON文件,然后使用下面命令执行容器中的2yml.py即可。

echo \{\"name\":\"aliyun\",\"age\":100} > demo.json
docker run -i --rm yml/py python 2yml.py < demo.json

4. YML格式配置文件

在docker compose安装完毕后,我们需要编写YML格式的配置文件配合该工具进行使用。在本小节中我们先来学习YML格式配置文件的用法。

YML文件中包括了纯量,Key/Value对象,数组三种形式。但是和JSON使用{}表示层次关系不同的是,YML通过行前的空格来表明内容之间的层次关系。

  1. YML的对象

接下来我们先来看YML中的第一种数据结构对象。对象是由多个Key/Value属性对对组成,属性对的格式为key: value。注意和JSON不同的是,一行中只包含一个属性对。

如果属性对的Value值为对象或者数组时,Value的内容需要新起一行,同时新起的一行要比上一行更多的空格(一般使用4个空格)缩进来表示。

接下来我们使用vi构建一个demo.yml文件来演示对象结构,并且转化成JSON结构和YML结构进行对比。注意使用vi编辑器时:

  1. 需要先按i键进入编辑模式。
  2. 编辑完成之后按esc退出编辑模式。
  3. 然后按大写的ZZ保存并退出vim。
vi demo1.yml
name: "aliyun"
attr: 
    age: 10
    addr: "HANGZHOU"
cat demo1.yml
docker run -i --rm yml/py python 2json.py < demo1.yml

  1. YML中的纯量

纯量是指对象的Value或者数组中不可分割的量,换句说话就是简单属性类型。YML的纯量包括:字符串,数字,布尔,日期,时间等类型。接下来我们编辑demo.yml来做演示。需要注意的是python默认的JSON编码模块不支持日期时间。因此我们使用# 注释日期时间属性对。

vi demo2.yml
string: "aliyun"
number1: 10
number2: 10.01
boolean: true
# datatime: 2000-01-01 23:59:59
cat demo2.yml
docker run -i --rm yml/py python 2json.py < demo2.yml

  1. YML中的数组

YML中的数组不需要前后缀,只需要将数组中的元素前加入- 即可,一行中只包含一个元素。

vi demo3.yml
scores: 
    - 100
    - 90.5
    - 78
cat demo3.yml
docker run -i --rm yml/py python 2json.py < demo3.yml

5. Docker Compose快速上手

  1. 编写配置文件

docker compose使用YML格式的配置文件代替docker run命令的各种参数,配置文件默认名称为docker-compose.yml。接下来我们使用vi构建该文件,注意使用vim编辑器时:

  1. 需要先按i键进入编辑模式。
  2. 编辑完成之后按esc退出编辑模式。
  3. 然后按大写的ZZ保存并退出vim。
vi docker-compose.yml
version: "3.9"
services:
    busy:
        container_name: busy1
        image: "busybox:latest"
        stdin_open: true
        tty: true
  1. 启动容器

配置文件编写完成之后,我们就可以使用docker compose up来启动配置文件中描述的容器。一般在执行docker compose up时会加入-d参数,其功能类似于docker run中的-d,表示容器在后台运行。

docker compose up -d

  1. 验证容器启动

命令执行成功后,我们使用docker ps查看,会发现容器已经启动。相比较使用复杂的docker run命令,使用docker compose的方式管理容器,命令简单统一。

docker ps

实验地址:https://developer.aliyun.com/adc/scenario/3043989082784568b6e2fee9d0881cab

相关文章
|
3天前
|
JSON JavaScript 开发者
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
【8月更文挑战第7天】Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
|
4天前
|
存储 Ubuntu Linux
如何安装和使用 Docker:入门指南
如何安装和使用 Docker:入门指南
25 1
|
4天前
|
Ubuntu Shell 应用服务中间件
在Ubuntu 14.04上安装和使用Docker Compose的方法
在Ubuntu 14.04上安装和使用Docker Compose的方法
9 1
|
7天前
|
Ubuntu Linux Docker
弃用Docker Desktop:在WSL2中玩转Docker之Docker Engine 部署与WSL入门
弃用Docker Desktop:在WSL2中玩转Docker之Docker Engine 部署与WSL入门
46 4
|
7天前
|
Docker 容器
Docker 入门常用命令
Docker 入门常用命令
14 1
|
4天前
|
Ubuntu Linux 测试技术
在Ubuntu 18.04上安装Docker Compose的方法
在Ubuntu 18.04上安装Docker Compose的方法
17 0
|
4天前
|
Ubuntu Linux 持续交付
在Ubuntu 16.04上安装Docker Compose的方法
在Ubuntu 16.04上安装Docker Compose的方法
7 0
|
4天前
|
Ubuntu 应用服务中间件 nginx
如何在 Ubuntu 20.04 上安装和使用 Docker Compose
如何在 Ubuntu 20.04 上安装和使用 Docker Compose
20 0
|
4天前
|
Linux 应用服务中间件 Shell
在CentOS 7上安装和使用Docker Compose的方法
在CentOS 7上安装和使用Docker Compose的方法
20 0
|
10天前
|
存储 Docker 容器
Docker精华篇(一)-常用命令大全,入门到精通
Docker精华篇(一)-常用命令大全,入门到精通