1、前言

  • Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。

  • Compose 是一个用于定义和运行多个 Docker 应用程序的工具。使用 Compose,您可以使用 YAML 文件来配置应用程序。然后,使用一个命令,您可以从您的配置中创建并启动所有服务。

  • Dockerfile 可以让用户管理一个单独的应用容器;而 Compose 则允许用户在一个模板(YAML 格式)中定义一组相关联的应用容器(被称为一个 project,即项目),例如一个 Web 服务容器再加上后端的数据库服务容器等。

首先介绍几个术语

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

  • 项目(project):由一组关联的应用容器组成的一个完整业务单元。

可见,一个项目可以由多个服务(容器)关联而成,Compose 面向项目进行管理。

2、安装

官方文档在这里

我才用 curl 方式为所有用户安装。(也可以用 apt-get 方式,具体参考文档

  1. # 下载 Docker Compose 的当前稳定版本(安装给所有服务器用户:/usr/local/bin)
  2. 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
  3. # 查看是否安装成功
  4. docker-compose -h
  5. docker-compose --version # docker-compose version 1.29.2, build 5becea4c
  6. # 对二进制文件应用可执行权限
  7. chmod +x /usr/local/bin/docker-compose

3、卸载

通过 curl 安装 Compose CLI 插件,使用下面命令卸载

  1. rm /usr/local/bin/docker-compose

4、常用命令

  1. docker-compose up # 启动
  2. docker-compose up -d # 后台启动
  3. # 停止应用程序,方法是docker-compose down 在第二个终端的项目目录中运行,或者在启动应用程序的原始终端中按 CTRL+C。
  4. docker-compose down / CTRL + C
  5. docker-compose stop
  6. # 使用以下down 命令关闭所有内容,完全删除容器。传递--volumes给 Redis 容器使用的数据卷
  7. docker-compose down --volumes

5、官网示例启动效果

示例配置在这里

  • 启动日志

  • 查看镜像

  • 浏览器运行效果

说明:

  1. # 默认命名规则
  2. # 默认的服务名: 文件名_服务名_num
  3. # _num 代表副本,多个服务器,集群,高可用,高并发,负载均衡
  4. composetest_redis_1
  5. composetest_web_1
  6. docker service ls
  7. Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.

6、docker-compose网络

通过docker-compose启动的项目(包含多个服务),都在同一个网络下,可以通过服务名字访问

  • 查看 docker-compose 网络
  1. [root@--- ~]# docker network ls
  2. NETWORK ID NAME DRIVER SCOPE
  3. 8d10d0e8db5e bridge bridge local
  4. 3fa1e11e2050 composetest_default bridge local # docker-compose生成的
  5. e8bf4fced9e2 host host local
  6. 0096a971fd2c mynet bridge local
  7. 6263db0933b9 none null local
  8. 0350d84612be redis bridge local
  9. 799426d70aa2 test-network bridge local
  10. c143092e025f todo-app bridge local
  11. [root@--- ~]# docker network inspect 3fa1e11e2050
  12. [
  13. {
  14. "Name": "composetest_default",
  15. "Id": "3fa1e11e2050b81eb69691487789dd545d6ce3c36e686035c0a49db54f86b2f7",
  16. "Created": "2021-10-10T15:46:29.084459645+08:00",
  17. "Scope": "local",
  18. "Driver": "bridge",
  19. "EnableIPv6": false,
  20. "IPAM": {
  21. "Driver": "default",
  22. "Options": null,
  23. "Config": [
  24. {
  25. "Subnet": "172.21.0.0/16",
  26. "Gateway": "172.21.0.1"
  27. }
  28. ]
  29. },
  30. "Internal": false,
  31. "Attachable": true,
  32. "Ingress": false,
  33. "ConfigFrom": {
  34. "Network": ""
  35. },
  36. "ConfigOnly": false,
  37. "Containers": {
  38. "57876e08abc657e884e2f527d930e0ffc34d632928d38ae2e29efa03c91b1980": {
  39. "Name": "composetest_redis_1",
  40. "EndpointID": "b1803007038c048525602a20da0c2aac73f8a87741ce127e84f89084fd2b75f0",
  41. "MacAddress": "02:42:ac:15:00:03",
  42. "IPv4Address": "172.21.0.3/16",
  43. "IPv6Address": ""
  44. },
  45. "994a3c48416ace662a09b1179a695ee63c9a3c33fccefbb0886374260fcd6aab": {
  46. "Name": "composetest_web_1",
  47. "EndpointID": "cd7e479a22bd251c87214e27d033af3a1bf4164664457e9ceb8cf32f690cded7",
  48. "MacAddress": "02:42:ac:15:00:02",
  49. "IPv4Address": "172.21.0.2/16",
  50. "IPv6Address": ""
  51. }
  52. },
  53. "Options": {},
  54. "Labels": {
  55. "com.docker.compose.network": "default",
  56. "com.docker.compose.project": "composetest",
  57. "com.docker.compose.version": "1.29.2"
  58. }
  59. }
  60. ]
  61. [root@--- ~]#

7、docker-compose 启动容器常见问题

7.1、镜像更新之后容器服务没有更新

可以通过 docker inspect containerName 查看容器信息

启停容器并不会拉取最新镜像

  1. docker-compose up -d
  2. 或者
  3. docker-compose up -d 服务名

本篇完,后面接着分享 docker-compose 1分钟搭建WordPress,有兴趣的话,麻烦看官点个赞,支持一下,谢谢啦


持续更文,关注我,你会发现一个踏实努力的宝藏前端,让我们一起学习,共同成长吧。

喜欢的小伙伴记得点赞关注收藏哟,回看不迷路

欢迎大家评论交流, 蟹蟹

Docker Compose之容器编排开发初探的更多相关文章

  1. Docker系列10—容器编排工具Docker Compose详解

    本文收录在容器技术学习系列文章总目录 1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置 ...

  2. Docker深入浅出系列 | Docker Compose多容器实战

    目录 前期准备 Docker Compose是什么 为什么要用Docker Compose Docker Compose使用场景 Docker Compose安装 Compose Yaml文件结构 C ...

  3. Docker学习笔记之使用 Docker Compose 管理容器

    0x00 概述 通过之前的介绍,我们已经基本掌握了构建.运行容器的方法,但这还远远不够,由于 Docker 采用轻量级容器的设计,每个容器一般只运行一个软件,而目前绝大多数应用系统都绝不是一个软件所能 ...

  4. docker kubernetes Swarm容器编排k8s CICD部署

    1docker版本 docker 17.09 https://docs.docker.com/ appledeAir:~ apple$ docker version Client: Docker En ...

  5. Docker Compose 多容器应用

    Docker Compose是一个用来定义并运行复杂应用程序的工具.用Compose,你可以在一个文件中定义多个容器应用程序,然后只需一条命令就可以完成使其运行所需的所有操作. 一个使用Docker容 ...

  6. [Docker6] Docker compose多容器运行与管理

    六.Docker compose docker compose就是通过yml文件来定义和运行多个容器docker应用程序的工具,三步过程就能跑起一个compose: 定义应用程序的环境(yml中) 定 ...

  7. .Net Core微服务入门全纪录(八)——Docker Compose与容器网络

    Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章. 前言 上一篇[.Net Core微服务入门全纪录(七)--IdentityServer4-授权认证]中使用IdentityServer4 ...

  8. 基于Docker Compose的.NET Core微服务持续发布

    是不是现在每个团队都需要上K8s才够潮流,不用K8s是不是就落伍了.今天,我就通过这篇文章来回答一下. 一.先给出我的看法和建议 我想说的是,对于很多的微小团队来说,可能都不是一定要上K8s,毕竟上K ...

  9. Docker 三剑客之 Docker Compose

    Docker Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排,开源地址:https://github.com/docker/compose Dock ...

随机推荐

  1. Android开发“HelloWorld”项目

    运行截图; 注:在activity_hello_world.xml文件中·可以改变显示内容,如图: 运行截图;

  2. 用python解决打标签时将xml文件的标签名打错

    用python解决打标签时将xml文件的标签名打错 问题描述:再进行达标签时将magnetic_tile的标签名错误的打成了magnetic_title,又不想一张一张的修改 出现问题的xml文件 & ...

  3. 「POI2012」井 Well

    description 你要挖井,\(n\)个地面的高度可视为\(h_i\),每次操作你可以将一个\(h_i-1\),你最多可执行\(m\)次操作. 你要任选其中一个\(h_i\)挖到\(0\),问你 ...

  4. Camunda BPM的总体架构介绍

    前言    Camunda是一个基于Java的框架,支持用于工作流和流程自动化的BPMN.用于案例管理的CMMN和用于业务决策管理的DMN.   本篇文章我们仅考虑BPMN流程引擎,先不涉及CMMN和 ...

  5. 从Mpx资源构建优化看splitChunks代码分割

    背景 MPX是滴滴出品的一款增强型小程序跨端框架,其核心是对原生小程序功能的增强.具体的使用不是本文讨论的范畴,想了解更多可以去官网了解更多. 回到正题,使用MPX开发小程序有一段时间了,该框架对不同 ...

  6. Java中Double类型数据比较大小

    方法一:转成字符串之后比较 如果要比较的两个double数据的字符串精度相等,可以将数据转换成string然后借助string的equals方法来间接实现比较两个double数据是否相等.注意这种方法 ...

  7. Electron学习(三)之简单交互操作

    写在前面 最近一直在做批量测试工具的开发,打包的exe,执行也是一个黑乎乎的dos窗口,真的丑死了,总感觉没个界面,体验不好,所以就想尝试写桌面应用程序. 在技术选型时,Java窗体实现使用JavaF ...

  8. Linux查看内网服务器的出口IP

    查看内网服务器的出口IPcurl ifconfig.me [root@vpnserver ~]# curl ifconfig.me111.10.100.100 [root@vpnserver ~]#

  9. [ 1 x 1 ] Convolution-1*1卷积的作用

    一.卷积神经网络中的卷积(Convolution in a convoluted neural network) 具体内容亲参考<深度学习>. 二.1*1卷积(one by one con ...

  10. Optional 类

    @Test public void test2(){ Girl girl = new Girl(); // girl = null; //ofNullable(T t):t可以为null Option ...