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

相关文章
|
15天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
56 2
|
21天前
|
关系型数据库 MySQL API
|
9天前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
2月前
|
缓存 监控 持续交付
|
17天前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
17天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
17天前
|
Docker 微服务 容器
使用Docker Compose实现微服务架构的快速部署
使用Docker Compose实现微服务架构的快速部署
36 1
|
23天前
|
运维 持续交付 虚拟化
docker入门详解!!!
本文介绍了容器技术的发展历程,从物理机到虚拟化再到容器化,重点讲解了Docker的诞生及其优势。Docker通过轻量级的容器技术,实现了资源的高效利用、快速启动、环境一致性、持续交付和部署等优点。文章还详细解析了Docker的架构和工作原理,包括Docker Daemon、REST接口、Docker Client等组件,以及容器与虚拟机的差异。
58 2
|
29天前
|
负载均衡 监控 开发者
深入浅出:掌握 Docker Compose 的高级用法
【10月更文挑战第22天】本文深入探讨了 Docker Compose 的高级用法,包括环境变量、服务扩展、网络配置和数据卷管理。通过实例详细介绍了如何利用这些功能提升开发效率和应用部署的灵活性。适合希望深入了解 Docker Compose 的开发者阅读。
|
1月前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
43 3
下一篇
无影云桌面