(六)docker-compose使用教程
目录
简介
一.快速开始
二.运行多个服务
命令扩充
三.内容补充
简介
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
容器, 可以极大程度的简化命令行的复杂操作.
一.快速开始
如果你是Mac
或Windows
用户使用桌面版本的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使用教程相关推荐
- Docker最全教程——从理论到实战(六)
Docker最全教程--从理论到实战(六) 原文:Docker最全教程--从理论到实战(六) 托管到腾讯云容器服务 托管到腾讯云容器服务,我们的公众号"magiccodes"已经发 ...
- Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程)
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- Docker最全教程之树莓派和Docker(十六)
前言 树莓派(Raspberry Pi)是一台卡片电脑(只有信用卡大小),我们可以使用树莓派做很多事情,比如智能家居的中控.航空器.BT下载器.挖矿机.智能机器人.小型服务器(花生壳+网站)等等. 目 ...
- Docker 及 Docker Compose 安装及使用教程 (2020版)
文章目录 图文详细教程 1 Docker原理 2 Docker安装 3 镜像(Image) 3.1 获取镜像 3.2 查找拖取镜像 3.3 列出镜像 3.4 删除镜像 3.5 创建的镜像 4 容器(C ...
- Docker系列教程20-安装Docker Compose
为什么80%的码农都做不了架构师?>>> 原文:http://www.itmuch.com/docker/20-docker-compose-install/ ,转载请说明出处 ...
- Docker学习(六):docker compose容器编排
Docker-compose 实现对容器集群的快速编排 多服务部署的管理工具 定义docker-compose.yml文件,写好容器之间的调用关系,通过命令完成多个容器的同时启动关闭 解决了容器与容器 ...
- Docker学习(六):Docker Compose和Docker Stack区别
作者:water_lang 链接:https://www.jianshu.com/p/05be80475bff 在最近的发布版本中,Docker圈发生了一些事情. Swarm模式已经在1.12中集成到 ...
- 3.8 Docker最新入门教程-Docker入门-使用 Docker Compose
3.8 使用 Docker Compose Docker Compose是一种旨在帮助定义和共享多容器应用程序的工具.使用 Compose,我们可以创建一个 YAML 文件来定义服务,并使用一个命令, ...
- Docker最全教程之使用 Visual Studio Code玩转Docker(二十一)
VS Code是一个年轻的编辑器,但是确实是非常犀利.通过本篇,老司机带你使用VS Code玩转Docker--相信阅读本篇之后,无论是初学者还是老手,都可以非常方便的玩转Docker了!所谓是&qu ...
最新文章
- 【权游相关】龙的简史 | 混乱博物馆
- 只想安安静静的做个程序员
- dataframe的multiIndex在次级index上做筛选
- 运用贪心思想解决跳跃游戏
- 谈计算机知识对学生的作用,浅谈计算机在教学中的作用
- 福禄克FI-3000光纤监测显微仪使用MPO检查摄像头?
- 如何提高UDP的可靠性
- Windows 下的批处理脚本基础——网络相关命令(用户操作命令、用户组操作命令)
- 【转】Python学习路线
- linux centeros下Redis的安装
- 【图像处理】MATLAB:频域高低通滤波器
- c/c++函数指针(3)
- MCS-51子程序库-1
- 机器人周志_机器人教学的意义
- 福特汉姆大学计算机科学专业,Fordham的Computer and Information Science「福特汉姆大学计算机与信息科学系」...
- C++ STL常用标准库容器入门(vector,map,set,string,list...)
- 倒看北斗星---念霍去病
- 零基础入门CV之街道字符识别 Task1 赛题理解
- 深度学习硬件基础:CPU与GPU
- 苹果手机进水屏幕乱跳怎么办