博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker上部署SpringBoot项目并推送镜像到Docker Hub上---以MacOS为例
阅读量:4078 次
发布时间:2019-05-25

本文共 17126 字,大约阅读时间需要 57 分钟。

Docker部署、镜像推送至Docker Hub、拉取、运行

Docker部署

1、首先需要通过Maven将项目打包可在本地运行的jar包

2、新建Dockerfile文件【直接New File–》输入DockerFile便能建立】,为了方便后续操作,本文将Dockerfile文件建立target文件夹下在这里插入图片描述

Dockerfile文件内容

# Docker image for springboot file run# VERSION 0.0.1# Author: silentwu# 基础镜像使用java#### 打包代码FROM java:8# 作者MAINTAINER silentwu 
# VOLUME 指定了临时文件目录为/tmp。# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmpVOLUME /tmp# 将jar包添加到容器中并更名为vorcsbine.jarADD vorcsbine.jar /vorcsbine.jar# 运行jar包# RUN bash -c 'touch /vorcsbine.jar'ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/vorcsbine.jar"]

文件内容解释

VOLUME /tmp

可选项,VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。如若设计到文件相关操作,需要设置本配置项,/tmp目录用于存储Docker数据文件。

ADD vorcsbine.jar /vorcsbine.jar

将jar包添加到容器中并更名为vorcsbine.jar,根据你当前jar包路径设置即可。

ENTRYPOINT [“java”,"-Djava.security.egd=file:/dev/./urandom","-jar","/vorcsbine.jar"]

因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录,项目的 jar 文件作为“vorcsbine.jar” 添加到容器的ENTRYPOINT 执行项目 vorcsbine.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/./urandom” 作为 Entropy Source。如果是第一次打包,它会自动下载java 8的镜像作为基础镜像,以后再制作镜像的时候就不会再下载了

制作镜像

wubaozhangdeMacBook-Pro:target wubaozhang$ docker build -t vorcsbine .Sending build context to Docker daemon  1.528GBStep 1/5 : FROM java:8 ---> d23bdf5b1b1bStep 2/5 : MAINTAINER silentwu 
---> Running in 757cd8cf3511Removing intermediate container 757cd8cf3511 ---> a260f535e5e6Step 3/5 : VOLUME /tmp ---> Running in 6338f383b1b7Removing intermediate container 6338f383b1b7 ---> de97b5525493Step 4/5 : ADD vorcsbine.jar /vorcsbine.jar ---> 6fe2feaa8abaStep 5/5 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/vorcsbine.jar"] ---> Running in b5337a432769Removing intermediate container b5337a432769 ---> 90f6886714adSuccessfully built 90f6886714adSuccessfully tagged vorcsbine:latest

设置镜像名为vorcsbine,默认的镜像版本为latest

查看镜像

wubaozhangdeMacBook-Pro:target wubaozhang$ docker imagesREPOSITORY               TAG                 IMAGE ID            CREATED             SIZEvorcsbine                latest              90f6886714ad        2 minutes ago       1.17GBsilentwu/demo            1.0.0               0f98c6499f7e        4 days ago          660MBsilentwu/silentwu        1.0.0               0f98c6499f7e        4 days ago          660MBappbaseio/dejavu         latest              fc2748827cf7        10 months ago       230MBmysql                    5.7                 1e4405fe1ea9        13 months ago       437MBtomcat                   latest              8973f493aa0a        16 months ago       508MBzookeeper                latest              eb0a01329223        16 months ago       225MBhello-world              latest              fce289e99eb9        2 years ago         1.84kBcontainerize/elastichd   latest              c2202f76db37        3 years ago         28.1MBjava                     8                   d23bdf5b1b1b        3 years ago         643MB

本地运行镜像

wubaozhangdeMacBook-Pro:target wubaozhang$ docker run -d -p 8090:8090 vorcsbine4c0aaf6a919f21163b7794eb6af699991f4e7d7d50523c2ed765dad724ed40f2

-d 表示后台运行,-p 用于映射端口 vorcsbine是镜像名

使用docker run 命令每次会创建一个新的容器实例,一个镜像可对应多个容器实例,我们可以通过设置不同端口来实现(这里再创建两个容器实例进行运行)

wubaozhangdeMacBook-Pro:target wubaozhang$ docker run -d -p 8091:8090 vorcsbinee2c349054bc5ed9a87111e9d24f86bc40ac74d6325b82c93dcb092a546365deawubaozhangdeMacBook-Pro:target wubaozhang$ docker run -d -p 8092:8090 vorcsbine78212d6e55ec4776f0b58e51153604576527de346f7807b02da43a5dc17d9f45

使用docker ps命令来查看运行中的容器 使用docker ps -a命令来查看所有容器,包含没运行的容器实例

wubaozhangdeMacBook-Pro:~ wubaozhang$ docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                  NAMES78212d6e55ec        vorcsbine           "java -Djava.securit…"   5 minutes ago       Up 5 minutes        0.0.0.0:8092->8090/tcp                                 nifty_fermie2c349054bc5        vorcsbine           "java -Djava.securit…"   5 minutes ago       Up 5 minutes        0.0.0.0:8091->8090/tcp                                 reverent_heyrovsky4c0aaf6a919f        vorcsbine           "java -Djava.securit…"   9 minutes ago       Up 9 minutes        0.0.0.0:8090->8090/tcp                                 inspiring_bassi

本地有三个端口映射到了Docker的8090端口,这也意味着我们可以使用这三个端口去访问应用。

http://localhost:8090/vorcsbine/
http://localhost:8091/vorcsbine/
http://localhost:8092/vorcsbine/

镜像推送、拉取、运行

镜像制作完毕之后,为了方便日后使用,可以将镜像推送至Docker Hub上

镜像推送

1、使用镜像推送前需要登录Docker Hub账户,没注册的小伙伴们点击此处去

2、注册完毕之后,使用docker login登录

wubaozhangdeMacBook-Pro:target wubaozhang$ docker loginAuthenticating with existing credentials...Login Succeeded

我之前由于登录过了,就不用重新输入账户密码。

3、使用docker tag命令给镜像定制版本,为了方便以后查看项目版本,我们需要改动镜像的tag版本,由于我之前上传了0.0.1版本至Docker Hub,为了避免重复,我们这里改成0.0.2版本

wubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker tag  vorcsbine silentwu/vorcsbine:0.0.2wubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker imagesREPOSITORY               TAG                 IMAGE ID            CREATED             SIZEvorcsbine                latest              90f6886714ad        29 minutes ago      1.17GBsilentwu/vorcsbine       0.0.2               90f6886714ad        29 minutes ago      1.17GB

需要主要的是,由于docker官方镜像仓库默认是以用户名为仓库的,silentwu/vorcsbine:0.0.2的含义便是将vorcsbine:0.0.2镜像推送至silentwu仓库中

4、使用docker push命令进行镜像推送

wubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker push silentwu/vorcsbine:0.0.2The push refers to repository [docker.io/silentwu/vorcsbine]8a9d72a73ec7: Layer already exists 35c20f26d188: Mounted from silentwu/demo c3fe59dd9556: Layer already exists 6ed1a81ba5b6: Layer already exists a3483ce177ce: Layer already exists ce6c8756685b: Layer already exists 30339f20ced0: Layer already exists 0eb22bfb707d: Layer already exists a2ae92ffcd29: Layer already exists 0.0.2: digest: sha256:ddd55980532061afab63befcc2bf421894a075df1cccbbb891e161295c4344cc size: 2213

5、镜像推送结果

在这里插入图片描述

推送后的镜像默认是public view

镜像拉取

小伙伴后可以安装好Docker后,使用docker pull 命令进行拉取

为了方便测试,我这里先把本地的删除掉,使用docker image rm REPOSITORY:TAG或IMAGE ID

wubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker imagesREPOSITORY               TAG                 IMAGE ID            CREATED             SIZEvorcsbine                latest              90f6886714ad        44 minutes ago      1.17GBsilentwu/vorcsbine       0.0.2               90f6886714ad        44 minutes ago      1.17GBsilentwu/silentwu        1.0.0               0f98c6499f7e        4 days ago          660MBsilentwu/demo            1.0.0               0f98c6499f7e        4 days ago          660MBappbaseio/dejavu         latest              fc2748827cf7        10 months ago       230MBmysql                    5.7                 1e4405fe1ea9        13 months ago       437MBtomcat                   latest              8973f493aa0a        16 months ago       508MBzookeeper                latest              eb0a01329223        16 months ago       225MBhello-world              latest              fce289e99eb9        2 years ago         1.84kBcontainerize/elastichd   latest              c2202f76db37        3 years ago         28.1MBjava                     8                   d23bdf5b1b1b        3 years ago         643MBwubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker image rm silentwu/vorcsbine:0.0.2Untagged: silentwu/vorcsbine:0.0.2Untagged: silentwu/vorcsbine@sha256:ddd55980532061afab63befcc2bf421894a075df1cccbbb891e161295c4344ccwubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker imagesREPOSITORY               TAG                 IMAGE ID            CREATED             SIZEvorcsbine                latest              90f6886714ad        About an hour ago   1.17GBsilentwu/demo            1.0.0               0f98c6499f7e        4 days ago          660MBsilentwu/silentwu        1.0.0               0f98c6499f7e        4 days ago          660MBappbaseio/dejavu         latest              fc2748827cf7        10 months ago       230MBmysql                    5.7                 1e4405fe1ea9        13 months ago       437MBtomcat                   latest              8973f493aa0a        16 months ago       508MBzookeeper                latest              eb0a01329223        16 months ago       225MBhello-world              latest              fce289e99eb9        2 years ago         1.84kBcontainerize/elastichd   latest              c2202f76db37        3 years ago         28.1MBjava                     8                   d23bdf5b1b1b        3 years ago         643MB

我们发现silentwu/vorcsbine:0.0.2 镜像已经在本地删除

使用docker pull命令开始拉取镜像

wubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker pull silentwu/vorcsbine:0.0.20.0.2: Pulling from silentwu/vorcsbineDigest: sha256:ddd55980532061afab63befcc2bf421894a075df1cccbbb891e161295c4344ccStatus: Downloaded newer image for silentwu/vorcsbine:0.0.2wubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker imagesREPOSITORY               TAG                 IMAGE ID            CREATED             SIZEvorcsbine                latest              90f6886714ad        About an hour ago   1.17GBsilentwu/vorcsbine       0.0.2               90f6886714ad        About an hour ago   1.17GBsilentwu/demo            1.0.0               0f98c6499f7e        4 days ago          660MBsilentwu/silentwu        1.0.0               0f98c6499f7e        4 days ago          660MBappbaseio/dejavu         latest              fc2748827cf7        10 months ago       230MBmysql                    5.7                 1e4405fe1ea9        13 months ago       437MBtomcat                   latest              8973f493aa0a        16 months ago       508MBzookeeper                latest              eb0a01329223        16 months ago       225MBhello-world              latest              fce289e99eb9        2 years ago         1.84kBcontainerize/elastichd   latest              c2202f76db37        3 years ago         28.1MBjava                     8                   d23bdf5b1b1b        3 years ago         643MB

发现已成功拉取

镜像运行

wubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker run -d -p 8094:8090 silentwu/vorcsbine:0.0.2 569e8a0d1a0cfb11e8b7598b2d3cbcbe9c9909aedd29eba3967ecafc97e55571

删除镜像需要注意的问题

如果镜像存在正在运行的容器实例,需要先停止容器实例的运行

wubaozhangdeMacBook-Pro:~ wubaozhang$ docker psCONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS                                                  NAMES569e8a0d1a0c        silentwu/vorcsbine:0.0.2   "java -Djava.securit…"   9 minutes ago       Up 9 minutes        0.0.0.0:8094->8090/tcp                                 heuristic_shirley78212d6e55ec        vorcsbine                  "java -Djava.securit…"   About an hour ago   Up About an hour    0.0.0.0:8092->8090/tcp                                 nifty_fermie2c349054bc5        vorcsbine                  "java -Djava.securit…"   About an hour ago   Up About an hour    0.0.0.0:8091->8090/tcp                                 reverent_heyrovsky4c0aaf6a919f        vorcsbine                  "java -Djava.securit…"   About an hour ago   Up About an hour    0.0.0.0:8090->8090/tcp                                 inspiring_bassi5bdad1c46b6b        zookeeper

可以看到有四个容器实例正在运行,由于镜像vorcsbine对应三个容器实例,为了方便,我们这里删除silentwu/vorcsbine:0.0.2镜像实例

我们这里先不关闭容器直接删除

wubaozhangdeMacBook-Pro:~ wubaozhang$ docker imagesREPOSITORY               TAG                 IMAGE ID            CREATED             SIZEvorcsbine                latest              90f6886714ad        About an hour ago   1.17GBsilentwu/vorcsbine       0.0.2               90f6886714ad        About an hour ago   1.17GBsilentwu/demo            1.0.0               0f98c6499f7e        4 days ago          660MBsilentwu/silentwu        1.0.0               0f98c6499f7e        4 days ago          660MBappbaseio/dejavu         latest              fc2748827cf7        10 months ago       230MBmysql                    5.7                 1e4405fe1ea9        13 months ago       437MBtomcat                   latest              8973f493aa0a        16 months ago       508MBzookeeper                latest              eb0a01329223        16 months ago       225MBhello-world              latest              fce289e99eb9        2 years ago         1.84kBcontainerize/elastichd   latest              c2202f76db37        3 years ago         28.1MBjava                     8                   d23bdf5b1b1b        3 years ago         643MBwubaozhangdeMacBook-Pro:~ wubaozhang$ docker image rm 90f6886714adError response from daemon: conflict: unable to delete 90f6886714ad (cannot be forced) - image is being used by running container 569e8a0d1a0c

可以发现报错无法删除,它的意思说我们要删除的镜像存在运行中的容器实例

所以,我们需要先停止容器实例,使用docker stop CONTAINERID命令停止,再进行删除

wubaozhangdeMacBook-Pro:~ wubaozhang$ docker psCONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS                                                  NAMES569e8a0d1a0c        silentwu/vorcsbine:0.0.2   "java -Djava.securit…"   15 minutes ago      Up 15 minutes       0.0.0.0:8094->8090/tcp                                 heuristic_shirley78212d6e55ec        vorcsbine                  "java -Djava.securit…"   About an hour ago   Up About an hour    0.0.0.0:8092->8090/tcp                                 nifty_fermie2c349054bc5        vorcsbine                  "java -Djava.securit…"   About an hour ago   Up About an hour    0.0.0.0:8091->8090/tcp                                 reverent_heyrovsky4c0aaf6a919f        vorcsbine                  "java -Djava.securit…"   About an hour ago   Up About an hour    0.0.0.0:8090->8090/tcp                                 inspiring_bassi5bdad1c46b6b        zookeeper                  "/docker-entrypoint.…"   15 months ago       Up 3 days           2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp   myzkwubaozhangdeMacBook-Pro:~ wubaozhang$ docker stop 569e8a0d1a0c569e8a0d1a0cwubaozhangdeMacBook-Pro:~ wubaozhang$ docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                  NAMES78212d6e55ec        vorcsbine           "java -Djava.securit…"   About an hour ago   Up About an hour    0.0.0.0:8092->8090/tcp                                 nifty_fermie2c349054bc5        vorcsbine           "java -Djava.securit…"   About an hour ago   Up About an hour    0.0.0.0:8091->8090/tcp                                 reverent_heyrovsky4c0aaf6a919f        vorcsbine           "java -Djava.securit…"   About an hour ago   Up About an hour    0.0.0.0:8090->8090/tcp                                 inspiring_bassi5bdad1c46b6b        zookeeper           "/docker-entrypoint.…"   15 months ago       Up 3 days           2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp   myzk

最后再进行删除

wubaozhangdeMacBook-Pro:~ wubaozhang$ docker imagesREPOSITORY               TAG                 IMAGE ID            CREATED             SIZEvorcsbine                latest              90f6886714ad        About an hour ago   1.17GBsilentwu/vorcsbine       0.0.2               90f6886714ad        About an hour ago   1.17GBsilentwu/silentwu        1.0.0               0f98c6499f7e        4 days ago          660MBsilentwu/demo            1.0.0               0f98c6499f7e        4 days ago          660MBappbaseio/dejavu         latest              fc2748827cf7        10 months ago       230MBmysql                    5.7                 1e4405fe1ea9        13 months ago       437MBtomcat                   latest              8973f493aa0a        16 months ago       508MBzookeeper                latest              eb0a01329223        16 months ago       225MBhello-world              latest              fce289e99eb9        2 years ago         1.84kBcontainerize/elastichd   latest              c2202f76db37        3 years ago         28.1MBjava                     8                   d23bdf5b1b1b        3 years ago         643MBwubaozhangdeMacBook-Pro:~ wubaozhang$ docker image rm silentwu/vorcsbine:0.0.2Untagged: silentwu/vorcsbine:0.0.2Untagged: silentwu/vorcsbine@sha256:ddd55980532061afab63befcc2bf421894a075df1cccbbb891e161295c4344ccwubaozhangdeMacBook-Pro:~ wubaozhang$ docker imagesREPOSITORY               TAG                 IMAGE ID            CREATED             SIZEvorcsbine                latest              90f6886714ad        About an hour ago   1.17GBsilentwu/demo            1.0.0               0f98c6499f7e        4 days ago          660MBsilentwu/silentwu        1.0.0               0f98c6499f7e        4 days ago          660MBappbaseio/dejavu         latest              fc2748827cf7        10 months ago       230MBmysql                    5.7                 1e4405fe1ea9        13 months ago       437MBtomcat                   latest              8973f493aa0a        16 months ago       508MBzookeeper                latest              eb0a01329223        16 months ago       225MBhello-world              latest              fce289e99eb9        2 years ago         1.84kBcontainerize/elastichd   latest              c2202f76db37        3 years ago         28.1MBjava                     8                   d23bdf5b1b1b        3 years ago         643MB

最后成功删除

引用

Docker书籍《深入浅出Docker》
Docker快速入门教程

转载地址:http://hqsni.baihongyu.com/

你可能感兴趣的文章
我在苍穹四轴买的F450的动力配置(包含基本组件)
查看>>
串口通信是需要共地的,所以你树莓派要和飞控串口通信还是得把树莓派弄到无人机的电池上供电才行,或者飞控通过电脑的USB供电。
查看>>
现在发现激光雷达和双目真正的融合没那么简单
查看>>
普通的激光雷达就可以是一个三维激光雷达,比如一个16线的激光雷达,它是上下正负30度往外扫,只是16线你选取1线就是一个平面,16线都考虑就是立体的了。
查看>>
阿木实验室的一些信息(包含一些wiki地址)
查看>>
NUC作为开发机不足的地方
查看>>
TB上看到迷你主机似乎都是酷睿的CPU
查看>>
英特尔处理器全部系列
查看>>
AGV小车
查看>>
基于ADRC的单点自平衡立方体, 我搜了下有人写过了,看来我这种写论文的思路是对的,把一个实现过的项目用其他方法实现一遍。
查看>>
吃透tensorflow那本书里面的LSTM那个程序
查看>>
今天初步装好了我的猛禽360机架
查看>>
一稿多投被拒稿,确实是你的错
查看>>
碳机架是导电的
查看>>
PID在线调参这个方法不错!!!!!这可以让PID调参方便很多啊!!!!!!!而且可以很方便看到各个参数变化造成的影响!!!!!!!
查看>>
自平衡自行车本质就是一个惯性飞轮,本质就是一样的!!!
查看>>
自平衡立方体的动力学建模用到了拉格朗日方法,让我想起无人机的动力学建模也用到了拉格朗日方法。
查看>>
单点自平衡立方体相当于有几个自由度?自平衡自行车有几个自由度?独轮车有几个自由度?
查看>>
不要迷信STM32cube,有的例程都跑不起来。
查看>>
cubli我觉得不管是工作还是读研发文章还是读博,都用得到,我觉得可以弄弄。
查看>>