前言


在《docker化你的java应用(上)》中,我们已经初步接触了docker的核心概念与思想,本篇博客将对docker进行实践,会介绍一些docker常用的命令,并通过docker化一个java项目来进一步认识docker。

安装docker


我们可以通过docker的官网(https://www.docker.com/community-edition#/download)来选择在linux/mac/windows上进行安装,不过在国内下载比较慢。给大家提供一个高速下载地址:http://get.daocloud.io/,具体的安装方法,网上有比较多的教程,这里就不介绍了。

docker安装成功

运行docker版本的hello world


要运行docker版本的hello world,那么自然需要先获取镜像,注意到docker官方给我们提供了一个镜像中心:https://hub.docker.com/,一般公司内部也会给我们提供一个公司专用的镜像中心。

hello-world镜像

docker pull


docker pull : 从镜像仓库中拉取或者更新指定镜像,镜像除了名称之外,还有一个tag的概念,如果不提供tag,就是表示latest。

docker images : 列出本地镜像。

拉取依赖镜像

公司内部镜像搜索示例

运行hello-world


docker run :创建一个新的容器并运行一个命令

在图中,我们已经看到了输出,就说明hello-world运行成功了。

不可不知的docker网络


在实际开发中,要知道我们的服务,一般是在某个端口进行监听,一直在后台运行的,那么就涉及到宿主机/宿主机中的容器它们之间的网络问题了。

docker的网络类型分3种:bridge,host,none。(这里和vmware的网络设置部分非常相似)

bridge,就是桥接模式,docker容器会有自己独立的network namespace,也就是会有虚拟的ip和port,那么如何通过宿主机来访问容器内部的端口呢?这里就涉及到一个技术:端口映射了。

host,不会分配独立的network namespace,而是和宿主机进行共用网络。

none,不使用网络,docker容器不会和外界进行通讯。

docker网络

docker化一个springboot项目


要docker化一个项目,首先得提供一个Dockerfile文件,然后进行镜像制作。我们直接来看一个实际项目中的Dockerfile示例:

Dockerfile的实例

首先,我们需要一个Dockerfile的文件以及代码(jar or war)。

Dockerfile的第一个必须是FROM指令,明确指出继承自哪一个基础镜像,这里是公司内部的一个镜像。(因为是springboot项目,因此只需要依赖jre即可,如果你的项目是一个普通的java web项目,那么可以考虑继承自tomcat的镜像,因为tomcat镜像依赖jdk镜像)

通过ARG来定义了一些变量,以供后续引用。

通过USER指令指定运行容器时的用户以及用户组,通过WORKDIR指定运行容器时的工作目录,这也说明容器就像一个mini linux一样。

通过ENV来定义容器运行时的一些环境变量信息。

通过COPY指令复制宿主机中的工程代码信息到目的地容器中。

ENTRYPOINT表示容器启动后会执行的命令,这里可以看到,容器启动后,会执行一个jar包(一个springboot项目)

制作项目的镜像


制作镜像

docker build指令需要指明dockerfile的路径,同时制作镜像的时候,需要指明镜像的名称和tag。

让镜像跑起来成为容器


docker run

docker ps和docker stop

docker run会运行镜像生成容器,并返回容器id(非常长的一串id,那么后续的一些对容器的操作中,我们可以提供一部分容器id前缀就可以完成匹配,例如图中的docker stop操作)

注意docker run指定了2个端口:8083和8080,8083是指宿主机的端口,8080是springboot项目中的启动端口,也就是说访问容器的8080端口将通过宿主机的8083端口完成,这就是上一篇文章提及的端口映射技术。

进入容器看一看


docker exec

访问部署在容器中的项目


部署访问成功

好了,到这里docker的只是初步就介绍完毕了,相信对docker大家应该有一个感性的认识了,see u next time

docker化你的java应用(下)相关推荐

  1. docker化你的java应用(上)

    前言 在各种技术大会(互联网架构,云计算等等),哪都少不了docker的身影.docker为啥这么火?因为它解决了大部分企业的痛点:快速的持续集成,服务的弹性伸缩,部署简单,方便了运维,而且为企业节省 ...

  2. 「实战篇」开源项目docker化运维部署-后端java部署(七)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:「实战篇」开源项目docker化运维部署-后端java部署(七) 本节主要说说后端的部署需要注意的点,本身renren-fas ...

  3. 【Docker学习之旅】手把手教你Java应用进行Docker化

    手把手教你Java应用进行Docker化 简介:简介:Docker是一个使用Go语言开发的开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的机器上. 一 ...

  4. 如何Docker化任意一个应用

    网上有很多关于如何将应用Docker化的教程,为什么我还要再写一个呢? \\ 我见过的大部分教程都是限定在某种特定技术(例如Java或者Python),可能无法满足读者的需求.同时,这些教程也没有说清 ...

  5. Docker化Spring Boot应用程序

    你好朋友, 在本教程中,我们将看到如何对Spring Boot应用程序进行Docker化.通过dockerizing意味着我们将以Docker容器的形式运行应用程序. 以下是涉及的步骤: 1.创建一个 ...

  6. SpringBoot项目Docker化并上传DockerHub的使用过程

    . springboot项目 docker化 添加依赖 代码片段:<plugin><groupId>com.spotify</groupId><artifac ...

  7. Docker学习总结(18)——阿里超大规模Docker化之路

    12月6-7日,由阿里巴巴集团.阿里巴巴技术发展部.阿里云云栖社区联合主办,以"2016双11技术创新"为主题的阿里巴巴技术论坛上,阿里巴巴研究员林昊分享了阿里超大规模Docker ...

  8. 游戏研发与运营环境Docker化

    在泛娱乐时代,游戏行业特殊的业务特点为技术团队提出了更高的要求,而Docker对游戏研发的运营环境带来了很多好处.发展至今,游戏研发的行业现状是怎么样的?Docker和架构改进之间如何应用?通过Doc ...

  9. Docker化运维方式

    应用迁移需求 应用运维需要考虑的一个重要问题就是迁移, 在不同机器.机房.环境间迁移.迁移的原因有很多, 比如硬件过保(硬件故障), 机房迁移, 应用扩缩容等. 应用迁移的核心需求是: 简单.迁移操作 ...

最新文章

  1. 反思laravel-admin的使用总结
  2. IOS-C语言小练习02
  3. OkHttp 3.x 源码解析之Interceptor 拦截器
  4. vue 父链和子组件索引_vuejs填坑-父子组件之间的访问
  5. 深入理解CSS权重(优先级)
  6. L1-046 整除光棍
  7. 主板有几种尺寸_工控机主板哪个牌子好?2019工控主板十大品牌排行榜
  8. android游戏开发框架libgdx的使用(十五)—TWL布局
  9. 随想录(对比着c学java)
  10. percona-toolkit 之 【pt-deadlock-logger】说明
  11. 在linux系统中下载thchs30,aishell数据处理为thchs30格式
  12. Keras 开发你的第一个 Python 深度学习项目
  13. Selenium自动化测试设计模式-PO模式
  14. C#操作Word(二)——将Word文档嵌入到WinForm窗体中
  15. The “fxp/composer-asset-plugin“ plugin was skipped because it requires a Plugin API version (“^1.0“)
  16. 点开计算机左侧没有桌面一项,为什么,我的电脑右键点选桌面空白弹出的右键选单里面没有了“萤幕解析度”一项啊?怎么添加回来啊急!1...
  17. 电视机hdr是什么功能
  18. 数学建模 数理统计模型
  19. Android 双屏异显(兼容android8)
  20. 上传图片就能建模?!一个人人可用的在线三维大场景重建云平台

热门文章

  1. C#实现枚举的相关操作
  2. FTP服务器的安装和配置
  3. shiro自定义Realm
  4. leetcode -eleven:Container With Most Water
  5. openoffice 安装后中文字符乱码问题
  6. EXCEL基本操作(一~二)
  7. [学习windows/记录篇]安装TMG防火墙(三向外围)
  8. 2、Get和post的区别
  9. 一个简单的shell实例
  10. 我和我老妈的经典搞笑故事[原创]