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

相关文章
|
5月前
|
人工智能 前端开发 Docker
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
在 AI 智能体开发中,开发者常面临本地调试与云端部署的矛盾。本文介绍如何通过 Docker Compose 与 Docker Offload 解决这一难题,实现从本地快速迭代到云端高效扩容的全流程。内容涵盖多服务协同、容器化配置、GPU 支持及实战案例,助你构建高效、一致的 AI 智能体开发环境。
539 2
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
|
6月前
|
运维 Kubernetes 开发者
解锁现代开发与部署:Docker入门指南
解锁现代开发与部署:Docker入门指南
235 100
|
4月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
5月前
|
运维 数据可视化 开发者
2025年 三个 Docker Compose 可视化管理器测评
本文对比了三款主流的 Docker Compose 可视化管理工具。随着 Docker 的普及,Compose 已成为多容器应用部署的标准,但 YAML 配置复杂、协作困难等问题也日益突出。三款工具各有侧重:Docker Desktop 适合个人本地开发,Portainer 适合小团队运维管理,而 Websoft9 则通过 GitOps 实现了强大的版本控制与团队协作能力。文章从可视化编辑、部署便捷性、版本管理等方面进行评测,为不同使用场景提供了推荐方案,展望了未来 Compose 管理向 GitOps 深度融合的发展趋势。
741 1
2025年 三个 Docker Compose 可视化管理器测评
|
数据可视化 开发工具 git
GitOps 驱动的 Docker Compose 可视工具化来了,图形化编辑器上玩转容器编排
Docker Compose 简化了多容器应用的部署,但随着应用复杂度上升,文本配置方式逐渐暴露出维护难、协作效率低等问题。基于 GitOps 的可视化 Docker Compose 工具应运而生,通过图形界面降低使用门槛,提升配置准确性和团队协作效率。结合 GitOps,实现配置变更的版本追踪、自动化部署与环境一致性,为多容器应用管理提供高效、安全的解决方案。
|
7月前
|
NoSQL Redis Docker
使用Docker Compose工具进行容器编排的教程
以上就是使用Docker Compose进行容器编排的基础操作。这能帮你更有效地在本地或者在服务器上部署和管理多容器应用。
655 11
|
7月前
|
NoSQL 安全 Redis
Docker Compose :从入门到企业级部署
Docker Compose 是用于定义和运行多容器应用的工具,支持服务、网络和卷三大核心要素。通过简洁的 YAML 文件,可实现应用的快速部署与管理,适用于开发、测试及生产环境。
608 0
|
9月前
|
网络协议 Ubuntu Docker
Docker Compose--命令说明
Docker Compose--命令说明
1622 30
|
9月前
|
网络协议 NoSQL Redis
Docker Compose--模板文件
Docker Compose--模板文件
824 29

热门文章

最新文章