Docker compose 简介

compose是用来定义和运行多个Docker容器。

比如一个简单的web项目,除了web服务之外,我们可能要需要数据库容器、注册中心容器等等。那我们需要:

  1. 定义各个容器的Dockerfile文件,docker build -t
  2. 映射硬盘保存数据 docker volume create,然后mount
  3. 设置网络实现容器桥连 docker network create
  4. 。。。。

但有了docker-compose,我们可以在docker-compose.yml定义这些操作,然后只要一个命令docker-compose up -d就行

例子

以spring cloud 的入门hello world为例子部署

项目目录:

-springcloud

​ --feign

​ ---src

​ ---target

​ ---Dockerfile

​ --hello-server

​ ---src

​ ---target

​ ---Dockerfile

​ --register

​ ---src

​ ---target

​ ---Dockerfile

​ --docker-compose.yml

register的Dockerfile定义为上一章的例子,其他的两个的Dockerfile跟register的差不多,只需更改端口和jar包名。

docker-compose的定义如下:

version: '2.1'
services:
registry:
image: test/register
build: ./register
ports:
- 8761:8761 hello:
image: test/hello
ports:
- 8080:8080
build: ./hello-server
depends_on:
- registry feign:
image: test/feign
ports:
- 8082:8082
build: ./feign
depends_on:
- registry

然后在docker-compose.yml 目录下执行docker-compose up -d

docker-compose 在执行up命令时会创建默认网络,然后docker-compose编排的服务都会在这个网络下

docker-compose.yml常用命令

build:指定 Dockerfile 所在文件夹的路径

image:指定为镜像名称或镜像 ID。

depends_on: 解决容器的依赖、启动先后的问题。但只解决容器启动先后,但没解决服务完全启动先后,可以用wait for it

network_mode: 设置网络模式

network:配置网络

expose:暴露端口,但不映射到宿主机,只被连接的服务访问。

ports:暴露端口信息。使用宿主端口:容器端口 (HOST:CONTAINER) 格式

devices: 指定设备映射关系。

volumes:数据卷所挂载路径设置。可以设置宿主机路径 (HOST:CONTAINER) 或加上访问模式 (HOST:CONTAINER:ro)。

参考资料

Docker——从入门到实践

使用Spring Cloud与Docker实战微服务

Docker(四):Docker 三剑客之 Docker Compose

使用docker-compose 大杀器来部署服务 上

Docker 入门教程(4)——docker-compse 服务编排的更多相关文章

  1. Docker(三):Docker入门教程-CentOS Docker 安装

    CentOS Docker 安装 Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提条件 目前,CentOS 仅发 ...

  2. 超实用的Docker入门教程|Docker vs VM

    概述 如今Docker的使用已经非常普遍,特别在一线互联网公司.使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力.在云服务概念兴起之后,Docker的使用场景和范围进一步发 ...

  3. docker 入门教程(5)——总结与学习资料

    总结 registry:docker镜像仓库,集中存储和管理镜像,类似maven仓库. image:docker镜像,定义容器运行的文件和参数,可以看作是面向对象编程的类. container:doc ...

  4. Docker入门教程(六)另外的15个Docker命令

    Docker入门教程(六)另外的15个Docker命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章 ...

  5. Docker入门教程(五)Docker安全

    Docker入门教程(五)Docker安全 [编者的话]DockOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第五篇,介绍了Docker的安全问题,依然是老话重谈,入门者可以通 ...

  6. Docker入门教程(一)介绍

    http://dockone.io/article/101 Docker入门教程(一)介绍 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第一篇,介绍了 ...

  7. Docker(一):Docker入门教程

    如今Docker的使用已经非常普遍,特别在一线互联网公司.使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力.在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如 ...

  8. Docker 入门 第三部分: 服务

    目录 Docker 入门 第三部分: 服务 先决条件 介绍 你的第一个 docker-compose.yml 文件 docker-compose.yml 运行你新建的负载均衡应用 扩展应用程序 卸载应 ...

  9. Docker(一):Docker入门教程

    如今Docker的使用已经非常普遍,特别在一线互联网公司.使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力.在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如 ...

  10. [转帖]Docker 入门教程

    Docker 入门教程 http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html 自己学的还是太肤浅啊.. 作者: 阮一峰 日期: 201 ...

随机推荐

  1. Nginx负载均衡的详细配置 + Keepalived使用

    1,话不多说, 这里我们来说下很重要的负载均衡, 那么什么是负载均衡呢? 由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器 ...

  2. Spring Boot]SpringBoot四大神器之Actuator

    论文转载自博客: https://blog.csdn.net/Dreamhai/article/details/81077903 https://bigjar.github.io/2018/08/19 ...

  3. Apollo配置中心的实战

    31.携程 Apollo 配置中心介绍~1.mp4 32.Apollo核心概念~1.mp4 32.Apollo核心概念~1.mp4 每个应用需要有一个唯一的AppID 要在指定的机器上的server. ...

  4. SpringBoot项目jar包启动脚本

    startup.bat @echo off set path=X:\xxxxxxx\Java\JDK\jre\bin START "项目名" "%path%\java&q ...

  5. 最短路之Floyd

    #include<bits/stdc++.h>using namespace std;const int maxn = 300+10;int n,m,f[maxn][maxn],t; in ...

  6. 最新的一波Vue实战技巧,不用则已,一用惊人

    在Vue中,不同的选项有不同的合并策略,比如 data,props,methods是同名属性覆盖合并,其他直接合并,而生命周期钩子函数则是将同名的函数放到一个数组中,在调用的时候依次调用 在Vue中, ...

  7. java使字符串的数字加一

    /** * 字符串+1方法,该方法将其结尾的整数+1,适用于任何以整数结尾的字符串,不限格式,不限分隔符. * @author zxcvbnmzb * @param testStr 要+1的字符串 * ...

  8. pycharm一直显示Process finished with exit code 0

    后来排查发现原来是解释器的问题我之前使用的解释器是pycharm提供的虚拟解释器#####如何查看解释器点file–>new projects 如果选择的是2就是使用了pycharm提供的虚拟解 ...

  9. hive如何获取当前时间

    在大多数的sql中获取当前时间都是用now()函数即可,hive获取当前时间的函数与sql 不一样 在impala中执行now()函数时是可以通过的 然而在hive中执行now()函数却报错: hiv ...

  10. mmdetection源码剖析(1)--NMS

    mmdetection源码剖析(1)--NMS 熟悉目标检测的应该都清楚NMS是什么算法,但是如果我们要与C++和cuda结合直接写成Pytorch的操作你们清楚怎么写吗?最近在看mmdetectio ...