docker化你的java应用(下)

6 篇文章 0 订阅
1 篇文章 0 订阅

前言

在《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 spot

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

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

进入容器看一看

docker exec

访问部署在容器中的项目

部署访问成功

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

最后给大家分享个java进阶学习交流群,群内提供免费架构视频资料点击链接加入群聊【java高级架构进阶】:https://jq.qq.com/?_wv=1027&k=5yDqYVt

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值