当前位置: 首页 > news >正文

Docker系列教程21-Docker Compose快速入门

原文:http://www.itmuch.com/docker/21-docker-compose-quick-start/,转载请注明出处。

本节我们来探讨Compose使用的基本步骤,并编写一个简单示例快速入门。

基本步骤

使用Compose大致有三个步骤:

  • 使用Dockerfile(或其他方式)定义应用程序环境,以便在任何地方重现该环境。
  • 在docker-compose.yml文件中定义组成应用程序的服务,以便各个服务在一个隔离的环境中一起运行。
  • 运行docker-compose up命令,启动并运行整个应用程序。

入门示例

下面笔者以之前课上用到的Eureka为例讲解Compose的基本步骤。

  • microservice-discovery-eureka-0.0.1-SNAPSHOT.jar 所在路径(默认是项目的target目录)创建Dockerfile文件,并在其中添加如下内容。

    FROM java:8
    VOLUME /tmp
    ADD microservice-discovery-eureka-0.0.1-SNAPSHOT.jar app.jar
    RUN bash -c 'touch /app.jar'
    EXPOSE 9000
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
    
  • microservice-discovery-eureka-0.0.1-SNAPSHOT.jar 所在路径创建文件docker-compose.yml,在其中添加如下内容。

    version: '2'          # 表示该docker-compose.yml文件使用的是Version 2 file format
    services:
      eureka:             # 指定服务名称
        build: .          # 指定Dockerfile所在路径
        ports:
          - "8761:8761"       # 指定端口映射,类似docker run的-p选项,注意使用字符串形式
    
  • docker-compose.yml 所在路径执行以下命令。

    docker-compose up
    

    Compose就会自动构建镜像并使用镜像启动容器。我们也可使用docker-compose up -d 后台启动并运行这些容器。

  • 访问:http://宿主机IP:8761/ ,即可访问Eureka Server首页。

工程、服务、容器

Docker Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker Compose运行目录下的所有文件(docker-compose.yml, extends文件或环境变量文件等)组成一个工程(默认为docker-compose.yml所在目录的目录名称)。一个工程可包含多个服务;每个服务中定义了容器运行的镜像、参数和依赖,一个服务可包括多个容器实例。

对应《入门示例》一节,工程名称是docker-compose.yml所在的目录名。该工程包含了1个服务,服务名称是eureka;执行docker-compose up时,启动了eureka服务的1个容器实例。

相关文章:

  • centOS下NFS服务器的安装配置详解
  • IDEA下从零开始搭建SpringBoot工程
  • SQL SERVER时间格式化
  • top命令的使用
  • 手机WAP前端开发标准
  • 微信钱包入口开发笔记
  • 编程是一个没有前途的工作
  • 32位系统(软件)和64位系统(软件)的区别(跑的快,内存支持多)
  • SQL点滴34—SQL中的大小写
  • Windows 10下安装配置Caffe并支持GPU加速(修改版)
  • mac homebrew安装
  • 每天10道编程题-第四天
  • 【连载】物联网全栈教程-从云端到设备(十二)---最简单的单片机上云方法!...
  • Tomcat源码分析之—具体启动流程分析
  • 集合,映射,流程控制, 知识点。
  • 网络传输文件的问题
  • python3.6+scrapy+mysql 爬虫实战
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • django开发-定时任务的使用
  • ES6 ...操作符
  • Hexo+码云+git快速搭建免费的静态Blog
  • JAVA_NIO系列——Channel和Buffer详解
  • Redash本地开发环境搭建
  • spring学习第二天
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 工作中总结前端开发流程--vue项目
  • 关于List、List?、ListObject的区别
  • 好的网址,关于.net 4.0 ,vs 2010
  • 警报:线上事故之CountDownLatch的威力
  • 前端自动化解决方案
  • 区块链技术特点之去中心化特性
  • 通信类
  • 我有几个粽子,和一个故事
  • 系统认识JavaScript正则表达式
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 1.Ext JS 建立web开发工程
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (libusb) usb口自动刷新
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .net 简单实现MD5
  • .NET程序员迈向卓越的必由之路
  • .NET大文件上传知识整理
  • .NET序列化 serializable,反序列化
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • [2]十道算法题【Java实现】
  • [20161101]rman备份与数据文件变化7.txt
  • [acwing周赛复盘] 第 94 场周赛20230311