2022-04-27 17:16阅读: 14367评论: 1推荐: 1

Docker Compose 的介绍、安装与使用

一、什么是 Docker Compose

ComposeDocker 官方的开源项目,负责实现Docker容器集群的快速编排,开源代码在 https://github.com/docker/compose 上。

我们知道使用 Dockerfile 模板文件可以让用户很方便的定义一个单独的应用容器,其实在工作中,经常会碰到需要多个容器相互配合来完成的某项任务情况,例如工作中的web服务容器本身,往往会在后端加上数据库容器,甚至会有负责均衡器。

Compose 就是来做这个事情的,它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML格式)来定义一组相关联的应用容器为一个项目( project )

Compose 中有两个重要的概念:

  • 服务( service ):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例

  • 项目( project ):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 中定义

Compose 项目是由Python编写的,实际上就是调用了Docker服务提供的API来对容器进行管理,因此,只要所在的操作系统的平台支持Docker API,就可以在其上利用Compose来进行编排管理。

二、为什么要使用 Docker Compose

假如有几十上百个容器,并且容器之间还存在依赖,光是忙着搭建容器都耗掉一天了,还谈什么Devops,那有没有什么方便快捷的组建,可以让我们通过一个配置就搞定容器编排和运行呢?

Docker Compose 的特点

Docker Compose 就是为了简化多容器配置和管理工作而生的,可以简化大量重复的手动工作,具有以下主要特点:

  • 提供工具用于定义和运行多个docker容器应用

  • 使用yaml文件来配置应用服务( docker-compse.yml )

  • 可以通过一个简单的命令 docker-compse up 可以按照依赖关系启动所有服务

  • 可以通过一个简单的命令 docker-compose down 停止所有服务

  • 当一个服务需要的时候,可以很简单地通过 --scale 进行扩容

Docker Compose 的考虑理由

  • 可移植性

    Docker Compose仅需一个命令即可提供完整的开发环境:docker-compose up,然后使用 docker-compose down 轻松将其拆解。 这使我们的开发人员可以将开发环境保持在一个中立位置,并帮助我们轻松地部署应用程序。

  • 测试

    Compose的另一个重要功能是通过将其置于自己的环境中,以快速可重复的方式支持运行单元和E2E测试。这意味着,您可以运行与生产环境非常相似的环境,而不是在本地/主机系统上测试应用程序。

  • 单个主机上的多个隔离环境

    Compose使用项目名称将环境彼此隔离,这带来了以下好处:

    • 您可以在一台计算机上运行同一环境的多个副本
    • 它可以防止不同的项目和服务相互干扰

三、Docker Compose 的使用场景

  • 单主机部署

    传统上,Compose专注于开发和测试,但现在可用于在单个主机系统上进行部署和管理容器的整个部署过程。

  • 开发环境

    Compose提供了在孤立的环境中运行应用程序的能力,该环境可以在安装了Docker的任何计算机上运行。 这使测试你的应用程序变得非常容易,并提供了一种尽可能接近生产环境的工作方式。

    Compose文件管理应用程序的所有依赖项(数据库,队列,缓存等),并且可以使用单个命令创建每个容器。

  • 自动化测试环境

    持续集成和整个开发过程的重要组成部分是自动化测试套件,该套件要求可以在其中执行测试的环境。Compose提供了一种方便的方法来创建和销毁与您的生产环境接近的隔离测试环境。

四、安装 Docker Compose

  • 可以参考官方网站:https://docs.docker.com/compose/install/

  • 基本只要两步:

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
    sudo chmod +x /usr/local/bin/docker-compose
    
  • Ubuntu 建议使用 apt 命令快速安装:

    sudo apt  install docker-compose  # version 1.25.0-1
    

  • 测试安装版本:

    docker-compose --version
    

五、如何使用 Docker Compose

使用 Compose 基本上只要三步:

  1. 通过编辑 Dockerfile 定义应用程序发布所需的运行环境
  2. 通过编辑 docker-compose.yml 文件定义多个容器一起运行的环境和相互关系
  3. 运行 docker-compose up 开始你的整个应用系统

Docker Compose 命令

Compose 大部分命令的对象即可以是项目的本身,也可以是指定为项目中的服务或者容器。

执行 docker-compose [COMMAND] --help 或者 docker-compose help [COMMAND] 可以查看命令的帮助信息

  • 具体的使用格式

    docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS]

  • 参数选项

    -f,--file file指定模板文件,默认是docker-compose.yml模板文件,可以多次指定

    -p,--project-name name指定项目名称,默认使用所在目录名称作为项目名称

    --x-networking 使用Docker的后端可插拔网络特性

    --x-networking-driver driver指定网络的后端驱动,默认使用bridge

    --verbose 输入更多的调试信息

    -v,--version 输出版本信息

官方链接:https://docs.docker.com/compose/reference/build/

模版文件

模板文件是 Compose 的核心,涉及的指令关键字比较多,但是大部分的指令与docker run相关的参数的含义是类似的。

本文作者:stu(dying)

本文链接:https://www.cnblogs.com/DingyLand/p/yunjisuan_02_.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   stu(dying)  阅读(14367)  评论(1编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑
  1. 1 Dancing with my phone (Explicit) HYBS
  2. 2 Catch (Feat. Hwa Sa) Epik High (에픽하이)
  3. 3 건물 사이에 피어난 장미 (Rose Blossom) H1-KEY
  4. 4 The Weekend 88rising,BIBI
  5. 5 天气未报 余佳运
  6. 6 和你 余佳运
  7. 7 九月底 余佳运
  8. 8 POP/STARS K/DA,Madison Beer,(G)I-DLE,Jaira Burns
  9. 9 Uh-Oh (G)I-DLE
  10. 10 For You (G)I-DLE
  11. 11 데이지(雏菊) PENTAGON
  12. 12 BAD PENTAGON
Catch (Feat. Hwa Sa) - Epik High (에픽하이)
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

Catch (Feat. Hwa Sa) - Epik High (에픽하이)

词:Tablo/Mithra Jin

曲:Tukutz/Tablo/Will Leong/Anthony Watts

Produced by:Tukutz/Tablo/Will Leong/Anthony Watts

Vocals by:Hwa Sa/Tablo

Recorded by:Tukutz @Knowhere, Seoul

Mixed by:mr.sync @JD Studio, Seoul

Mastered by:Chris Gehringer @Sterling Sound, NYC

Executive Produced by:Epik High

发行:RYCE MUSIC GROUP 白米范(北京)文化传播有限公司

I can never lose

Whatchu haters gon do

Whatchu haters gon do

Doobi doobi do

Doobi doobi do

Doobi doobi do

I don't make the rules

You'll never catch me putting on a noose

God is real

God is real

I'm the living proof

Wishin' that we fail

Wishin' that we fail

그건 망상증

그건 망상증

Epik High new **** to make your car sound good

It's all time high

Baby I've been on one

My whole life

활짝 피어있는 동공

쉽지 않아도 해냈네

난 그저 self-made 아닌 handmade

내 손이 만든 성공

다들 본 적 없는 나의 성격 지적하네

내 MBTI는 IDGAF

한때 날 지지했대

그래 thank u very much

And **** you

I cannot complain tho

Cuz they know

자꾸 날 찔러대도

자꾸 날 찔러대도

시간만 낭비라고

'K' thanks tho

Oo oh oh

Bye bye

Bye bye

그럼 잘 지내고

Bye bye 멀리 안 나와도 돼

좀 천천히 가도

숨이 차 멈춰 서도

숨이 차 멈춰 서도

잠시 넘어져도

잠시 넘어져도

You'll never catch me

You'll never catch me

내 걱정 말고

어둠 속에서도

어둠 속에서도

I'll shine like a diamond

I'll shine like a diamond

You'll never catch me

You'll never catch me

우리는 실패를 배팅해도

시비 거는 너보다

성공할 확률이 높아

굳이 눈 가려 봤자

네 앞길만 가려

우리 발자국 밟고 뒤쫓아

내리막길 걸을 때는

구름 위로 slide

적대 시기 질투

위로 근두운 타

발 헛디뎌 바닥으로 떨어질 때도

절망 안에 춤춰 boom boom pow

날 때부터 길이 정해진 듯

See me

무대와는 어느새 20년 지기

그 어느 때보다 가벼워

어깨 위 짐이

이제서야 음악이

내 직업 아닌 취미

잊어버렸지 삶의 고단함

행복 안에 현실감이 고장 나

무심한 세월이

기억을 덮어버린대도

우린 여전히 all time high

I cannot complain tho

Cuz they know

자꾸 날 찔러대도

자꾸 날 찔러대도

시간만 낭비라고

'K' thanks tho

Oo oh oh

Bye bye

Bye bye

그럼 잘 지내고

Bye bye 멀리 안 나와도 돼

좀 천천히 가도

숨이 차 멈춰 서도

숨이 차 멈춰 서도

잠시 넘어져도

잠시 넘어져도

You'll never catch me

You'll never catch me

내 걱정 말고

어둠 속에서도

어둠 속에서도

I'll shine like a diamond

I'll shine like a diamond

You'll never catch me

You'll never catch me

Call me

When you're feelin' down

When you're feelin' down

Before u hit the ground

Before u hit the ground

I'll be there to catch you

I'll be there to catch you

Call me

When you're feelin' down

When you're feelin' down

Before u hit the ground

Before u hit the ground

I'll be there to catch you

I'll be there to catch you

Call me

When you're feelin' down

When you're feelin' down

Before u hit the ground

Before u hit the ground

I'll be there to catch you

I'll be there to catch you

Baby

When you're feelin' down

When you're feelin' down

I'll always be around

I'll always be around

To catch u when u fall

To catch u when u fall

I cannot complain tho

Cuz they know

자꾸 날 찔러대도

자꾸 날 찔러대도

시간만 낭비라고

'K' thanks tho

Oo oh oh

Bye bye

Bye bye

그럼 잘 지내고

Bye bye 멀리 안 나와도 돼

Catch

Catch

Catch