目录

简介

一.快速开始

二.运行多个服务

命令扩充

三.内容补充


简介

Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a Compose file to configure your application's services. Then, using a single command, you create and start all the services from your configuration.

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

我们从logo上可以看出来, 说白了, 这个东西就是一个管理容器的工(zhang)具(yu), 我们可以方便的使用它来管理我们的docker容器, 可以极大程度的简化命令行的复杂操作.

一.快速开始

如果你是MacWindows用户使用桌面版本的Docker应用默认就会替你安装docker-compose(下文中用dc代替), 如果是centos的话可以使用命令yum -y install docker-compose太简单了不做过多说明.

查看版本,能显示出来证明安装成功了

lianying@lianyingdeiMac ~ % docker-compose version
docker-compose version 1.27.2, build 18f557f9
docker-py version: 4.3.1
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.1g  21 Apr 2020

接下来我们有需求了, 运行一个service-a挂载到/usr/local, 映射端口为8082并添加servicehost域名映射内网ip,很多人可以想到那应该是一条冗长docker命令

docker run -idt -p 8082:8082 -v /Users/objcat/jar/service-a.jar:/usr/local/service-a.jar --name service-a java sh -c "echo 192.168.1.126 servicehost >> /etc/hosts && java -jar /usr/local/service-a.jar"

这么一大坨,看起来十分不方便,那么我们就是用docker-compose来优化一下

首先创建一个名为docker-compose.yml的文件

lianying@lianyingdeiMac SpringBoot01 % touch docker-compose.yml
lianying@lianyingdeiMac SpringBoot01 % ls
docker-compose.yml

之后随便是用一个文本编辑器打开,写入下面内容

version: '2'
services:service-a: image: javavolumes:- /Users/objcat/jar/service-a.jar:/usr/local/service-a.jarports:- 8082:8082command:- /bin/sh- -c- |echo 192.168.1.126 servicehost >> /etc/hostsjava -jar /usr/local/service-a.jar

这样看起来是不是思路清晰多了呢,我们接下来运行一下

lianying@lianyingdeiMac SpringBoot01 % docker-compose up -d
Starting springboot01_service-a_1 ... done

-d后台运行,否则运行log就会出现在你的屏幕上。。。

然后查看一下运行状态

zhangyideMacBook-Pro:jar objcat$ docker-compose psName                   Command           State           Ports
--------------------------------------------------------------------------------
jar_service-             /bin/sh -c echo          Up      0.0.0.0:8082->8082/tcp
a_1_5827fa3204e8         192.168.1. ...

我们可以看到服务已经运行起来了,我们试着访问一下
http://localhost:8082/hello

成功,这一部分告一段落。

二.运行多个服务

有的人会问,多个服务怎么运行呢?很简单,我们这里就来做一下。

下面我要做的是开启三个服务service-a, service-b, service-eureka,分别是一个注册中心和两个服务。

我们来完善一下docker-compose.yml

version: '2'services:service-eureka: image: javavolumes:- /Users/objcat/jar/service-eureka.jar:/usr/local/service-eureka.jarports:- 8081:8081command:- /bin/sh- -c- |echo 192.168.1.126 servicehost >> /etc/hostsjava -jar /usr/local/service-eureka.jarservice-a: image: javavolumes:- /Users/objcat/jar/service-a.jar:/usr/local/service-a.jarports:- 8082:8082command:- /bin/sh- -c- |echo 192.168.1.126 servicehost >> /etc/hostsjava -jar /usr/local/service-a.jarservice-b: image: javavolumes:- /Users/objcat/jar/service-b.jar:/usr/local/service-b.jarports:- 8083:8083command:- /bin/sh- -c- |echo 192.168.1.126 servicehost >> /etc/hostsjava -jar /usr/local/service-b.jar

我们来运行一下

zhangyideMacBook-Pro:jar objcat$ docker-compose up -d
jar_service-a_1_5827fa3204e8 is up-to-date
Creating jar_service-b_1_f7d01c317fab      ... done
Creating jar_service-eureka_1_57bb1a079e9b ... done
zhangyideMacBook-Pro:jar objcat$ docker-compose psName                             Command               State           Ports
---------------------------------------------------------------------------------------------------
jar_service-a_1_5827fa3204e8        /bin/sh -c echo 192.168.1. ...   Up      0.0.0.0:8082->8082/tcp
jar_service-b_1_be87c0458e53        /bin/sh -c echo 192.168.1. ...   Up      0.0.0.0:8083->8083/tcp
jar_service-eureka_1_933d5a60af31   /bin/sh -c echo 192.168.1. ...   Up      0.0.0.0:8081->8081/tcp
zhangyideMacBook-Pro:jar objcat$

注册中心

访问service-a

访问service-b

到这里我们已经可以运行起来多个服务了!!!!下课 - -

命令扩充

停止服务

zhangyideMacBook-Pro:jar objcat$ docker-compose stop
Stopping jar_service-eureka_1_933d5a60af31 ... done
Stopping jar_service-b_1_be87c0458e53      ... done
Stopping jar_service-a_1_5827fa3204e8      ... done

停止单个服务

zhangyideMacBook-Pro:jar objcat$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
94c3472638c8        java                "/bin/sh -c 'echo 19…"   16 minutes ago      Up 6 seconds        0.0.0.0:8081->8081/tcp   jar_service-eureka_1_933d5a60af31
8d1dfa0ec642        java                "/bin/sh -c 'echo 19…"   16 minutes ago      Up 6 seconds        0.0.0.0:8083->8083/tcp   jar_service-b_1_be87c0458e53
6be5f9d8f423        java                "/bin/sh -c 'echo 19…"   33 minutes ago      Up 6 seconds        0.0.0.0:8082->8082/tcp   jar_service-a_1_5827fa3204e8
zhangyideMacBook-Pro:jar objcat$ docker stop 6be5f9d8f423
6be5f9d8f423

重新运行服务

zhangyideMacBook-Pro:jar objcat$ docker-compose up -d
jar_service-b_1_be87c0458e53 is up-to-date
Starting jar_service-a_1_5827fa3204e8 ...
Starting jar_service-a_1_5827fa3204e8 ... done
zhangyideMacBook-Pro:jar objcat$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
94c3472638c8        java                "/bin/sh -c 'echo 19…"   19 minutes ago      Up 3 minutes        0.0.0.0:8081->8081/tcp   jar_service-eureka_1_933d5a60af31
8d1dfa0ec642        java                "/bin/sh -c 'echo 19…"   19 minutes ago      Up 3 minutes        0.0.0.0:8083->8083/tcp   jar_service-b_1_be87c0458e53
6be5f9d8f423        java                "/bin/sh -c 'echo 19…"   36 minutes ago      Up 13 seconds       0.0.0.0:8082->8082/tcp   jar_service-a_1_5827fa3204e8

我们可以看到docker-compose会自动识别容器的开启状态,替我们开启需要开启的那一个

三.内容补充

1.可能很多人对我的echo 192.168.1.126 servicehost >> /etc/hosts不是很理解

这里说一下,这句命令的意思是,把servicehost域名加入到hosts文件,目的是为了能让我的eureka发现我的服务,而不是把地址写死在配置文件中,这句命令对应的服务配置为

server:#服务端口号port: 8082
spring:application:#服务名称 - 服务之间使用名称进行通讯name: service-objcat-a
eureka:client:service-url:#填写注册中心服务器地址defaultZone: http://servicehost:8081/eureka#是否需要将自己注册到注册中心register-with-eureka: true#是否需要搜索服务信息fetch-registry: trueinstance:prefer-ip-address: trueinstance-id: ${spring.cloud.client.ip-address}:${server.port}
management:endpoints:web:exposure:include: "*"

(六)docker-compose使用教程相关推荐

  1. Docker最全教程——从理论到实战(六)

    Docker最全教程--从理论到实战(六) 原文:Docker最全教程--从理论到实战(六) 托管到腾讯云容器服务 托管到腾讯云容器服务,我们的公众号"magiccodes"已经发 ...

  2. Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  3. Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  4. Docker最全教程之树莓派和Docker(十六)

    前言 树莓派(Raspberry Pi)是一台卡片电脑(只有信用卡大小),我们可以使用树莓派做很多事情,比如智能家居的中控.航空器.BT下载器.挖矿机.智能机器人.小型服务器(花生壳+网站)等等. 目 ...

  5. Docker 及 Docker Compose 安装及使用教程 (2020版)

    文章目录 图文详细教程 1 Docker原理 2 Docker安装 3 镜像(Image) 3.1 获取镜像 3.2 查找拖取镜像 3.3 列出镜像 3.4 删除镜像 3.5 创建的镜像 4 容器(C ...

  6. Docker系列教程20-安装Docker Compose

    为什么80%的码农都做不了架构师?>>>    原文:http://www.itmuch.com/docker/20-docker-compose-install/ ,转载请说明出处 ...

  7. Docker学习(六):docker compose容器编排

    Docker-compose 实现对容器集群的快速编排 多服务部署的管理工具 定义docker-compose.yml文件,写好容器之间的调用关系,通过命令完成多个容器的同时启动关闭 解决了容器与容器 ...

  8. Docker学习(六):Docker Compose和Docker Stack区别

    作者:water_lang 链接:https://www.jianshu.com/p/05be80475bff 在最近的发布版本中,Docker圈发生了一些事情. Swarm模式已经在1.12中集成到 ...

  9. 3.8 Docker最新入门教程-Docker入门-使用 Docker Compose

    3.8 使用 Docker Compose Docker Compose是一种旨在帮助定义和共享多容器应用程序的工具.使用 Compose,我们可以创建一个 YAML 文件来定义服务,并使用一个命令, ...

  10. Docker最全教程之使用 Visual Studio Code玩转Docker(二十一)

    VS Code是一个年轻的编辑器,但是确实是非常犀利.通过本篇,老司机带你使用VS Code玩转Docker--相信阅读本篇之后,无论是初学者还是老手,都可以非常方便的玩转Docker了!所谓是&qu ...

最新文章

  1. 【权游相关】龙的简史 | 混乱博物馆
  2. 只想安安静静的做个程序员
  3. dataframe的multiIndex在次级index上做筛选
  4. 运用贪心思想解决跳跃游戏
  5. 谈计算机知识对学生的作用,浅谈计算机在教学中的作用
  6. 福禄克FI-3000光纤监测显微仪使用MPO检查摄像头?
  7. 如何提高UDP的可靠性
  8. Windows 下的批处理脚本基础——网络相关命令(用户操作命令、用户组操作命令)
  9. 【转】Python学习路线
  10. linux centeros下Redis的安装
  11. 【图像处理】MATLAB:频域高低通滤波器
  12. c/c++函数指针(3)
  13. MCS-51子程序库-1
  14. 机器人周志_机器人教学的意义
  15. 福特汉姆大学计算机科学专业,Fordham的Computer and Information Science「福特汉姆大学计算机与信息科学系」...
  16. C++ STL常用标准库容器入门(vector,map,set,string,list...)
  17. 倒看北斗星---念霍去病
  18. 零基础入门CV之街道字符识别 Task1 赛题理解
  19. 深度学习硬件基础:CPU与GPU
  20. 苹果手机进水屏幕乱跳怎么办

热门文章

  1. HDU 4430 amp; ZOJ 3665 Yukari#39;s Birthday(二分法+枚举)
  2. 求二维数组的子数组中的最大值!
  3. stripslashes和addslashes的区别
  4. mysql的优化总结
  5. openstack--1--基础环境搭建
  6. ubuntu16.04装MatConvNet
  7. Android JNI开发生成.h头文件问题(转)
  8. Linux系统集群架构线上项目配置实战(一)
  9. (转)Windows下的Oracle冷备份脚本,已经测试通过
  10. iptables基础篇