javascript
Docker上部署SpringBoot项目并推送镜像到Docker Hub上---以MacOS为例
Docker部署、鏡像推送至Docker Hub、拉取、運(yùn)行
- Docker部署
- Dockerfile文件內(nèi)容
- 文件內(nèi)容解釋
- 制作鏡像
- 查看鏡像
- 本地運(yùn)行鏡像
- 鏡像推送、拉取、運(yùn)行
- 鏡像推送
- 鏡像拉取
- 鏡像運(yùn)行
- 刪除鏡像需要注意的問題
Docker部署
1、首先需要通過Maven將項(xiàng)目打包可在本地運(yùn)行的jar包
2、新建Dockerfile文件【直接New File–》輸入DockerFile便能建立】,為了方便后續(xù)操作,本文將Dockerfile文件建立target文件夾下
Dockerfile文件內(nèi)容
# Docker image for springboot file run # VERSION 0.0.1 # Author: silentwu # 基礎(chǔ)鏡像使用java#### 打包代碼 FROM java:8 # 作者 MAINTAINER silentwu <silentwbz@163.com> # VOLUME 指定了臨時(shí)文件目錄為/tmp。 # 其效果是在主機(jī) /var/lib/docker 目錄下創(chuàng)建了一個(gè)臨時(shí)文件,并鏈接到容器的/tmp VOLUME /tmp # 將jar包添加到容器中并更名為vorcsbine.jar ADD vorcsbine.jar /vorcsbine.jar # 運(yùn)行jar包 # RUN bash -c 'touch /vorcsbine.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/vorcsbine.jar"]文件內(nèi)容解釋
VOLUME /tmp
可選項(xiàng),VOLUME 指定了臨時(shí)文件目錄為/tmp。其效果是在主機(jī) /var/lib/docker 目錄下創(chuàng)建了一個(gè)臨時(shí)文件,并鏈接到容器的/tmp。如若設(shè)計(jì)到文件相關(guān)操作,需要設(shè)置本配置項(xiàng),/tmp目錄用于存儲(chǔ)Docker數(shù)據(jù)文件。
ADD vorcsbine.jar /vorcsbine.jar
將jar包添加到容器中并更名為vorcsbine.jar,根據(jù)你當(dāng)前jar包路徑設(shè)置即可。
ENTRYPOINT [“java”,"-Djava.security.egd=file:/dev/./urandom","-jar","/vorcsbine.jar"]
因?yàn)?Spring Boot 使用的內(nèi)嵌 Tomcat 容器默認(rèn)使用/tmp作為工作目錄,項(xiàng)目的 jar 文件作為“vorcsbine.jar” 添加到容器的ENTRYPOINT 執(zhí)行項(xiàng)目 vorcsbine.jar。為了縮短 Tomcat 啟動(dòng)時(shí)間,添加一個(gè)系統(tǒng)屬性指向 “/dev/./urandom” 作為 Entropy Source。如果是第一次打包,它會(huì)自動(dòng)下載java 8的鏡像作為基礎(chǔ)鏡像,以后再制作鏡像的時(shí)候就不會(huì)再下載了
制作鏡像
wubaozhangdeMacBook-Pro:target wubaozhang$ docker build -t vorcsbine . Sending build context to Docker daemon 1.528GB Step 1/5 : FROM java:8---> d23bdf5b1b1b Step 2/5 : MAINTAINER silentwu <silentwbz@163.com>---> Running in 757cd8cf3511 Removing intermediate container 757cd8cf3511---> a260f535e5e6 Step 3/5 : VOLUME /tmp---> Running in 6338f383b1b7 Removing intermediate container 6338f383b1b7---> de97b5525493 Step 4/5 : ADD vorcsbine.jar /vorcsbine.jar---> 6fe2feaa8aba Step 5/5 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/vorcsbine.jar"]---> Running in b5337a432769 Removing intermediate container b5337a432769---> 90f6886714ad Successfully built 90f6886714ad Successfully tagged vorcsbine:latest設(shè)置鏡像名為vorcsbine,默認(rèn)的鏡像版本為latest
查看鏡像
wubaozhangdeMacBook-Pro:target wubaozhang$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE vorcsbine latest 90f6886714ad 2 minutes ago 1.17GB silentwu/demo 1.0.0 0f98c6499f7e 4 days ago 660MB silentwu/silentwu 1.0.0 0f98c6499f7e 4 days ago 660MB appbaseio/dejavu latest fc2748827cf7 10 months ago 230MB mysql 5.7 1e4405fe1ea9 13 months ago 437MB tomcat latest 8973f493aa0a 16 months ago 508MB zookeeper latest eb0a01329223 16 months ago 225MB hello-world latest fce289e99eb9 2 years ago 1.84kB containerize/elastichd latest c2202f76db37 3 years ago 28.1MB java 8 d23bdf5b1b1b 3 years ago 643MB本地運(yùn)行鏡像
wubaozhangdeMacBook-Pro:target wubaozhang$ docker run -d -p 8090:8090 vorcsbine 4c0aaf6a919f21163b7794eb6af699991f4e7d7d50523c2ed765dad724ed40f2-d 表示后臺(tái)運(yùn)行,-p 用于映射端口 vorcsbine是鏡像名
使用docker run 命令每次會(huì)創(chuàng)建一個(gè)新的容器實(shí)例,一個(gè)鏡像可對(duì)應(yīng)多個(gè)容器實(shí)例,我們可以通過設(shè)置不同端口來實(shí)現(xiàn)(這里再創(chuàng)建兩個(gè)容器實(shí)例進(jìn)行運(yùn)行)
wubaozhangdeMacBook-Pro:target wubaozhang$ docker run -d -p 8091:8090 vorcsbine e2c349054bc5ed9a87111e9d24f86bc40ac74d6325b82c93dcb092a546365dea wubaozhangdeMacBook-Pro:target wubaozhang$ docker run -d -p 8092:8090 vorcsbine 78212d6e55ec4776f0b58e51153604576527de346f7807b02da43a5dc17d9f45使用docker ps命令來查看運(yùn)行中的容器 使用docker ps -a命令來查看所有容器,包含沒運(yùn)行的容器實(shí)例
wubaozhangdeMacBook-Pro:~ wubaozhang$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 78212d6e55ec vorcsbine "java -Djava.securit…" 5 minutes ago Up 5 minutes 0.0.0.0:8092->8090/tcp nifty_fermi e2c349054bc5 vorcsbine "java -Djava.securit…" 5 minutes ago Up 5 minutes 0.0.0.0:8091->8090/tcp reverent_heyrovsky 4c0aaf6a919f vorcsbine "java -Djava.securit…" 9 minutes ago Up 9 minutes 0.0.0.0:8090->8090/tcp inspiring_bassi本地有三個(gè)端口映射到了Docker的8090端口,這也意味著我們可以使用這三個(gè)端口去訪問應(yīng)用。
http://localhost:8090/vorcsbine/
http://localhost:8091/vorcsbine/
http://localhost:8092/vorcsbine/
鏡像推送、拉取、運(yùn)行
鏡像制作完畢之后,為了方便日后使用,可以將鏡像推送至Docker Hub上
鏡像推送
1、使用鏡像推送前需要登錄Docker Hub賬戶,沒注冊的小伙伴們點(diǎn)擊此處去注冊
2、注冊完畢之后,使用docker login登錄
wubaozhangdeMacBook-Pro:target wubaozhang$ docker login Authenticating with existing credentials... Login Succeeded我之前由于登錄過了,就不用重新輸入賬戶密碼。
3、使用docker tag命令給鏡像定制版本,為了方便以后查看項(xiàng)目版本,我們需要改動(dòng)鏡像的tag版本,由于我之前上傳了0.0.1版本至Docker Hub,為了避免重復(fù),我們這里改成0.0.2版本
wubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker tag vorcsbine silentwu/vorcsbine:0.0.2 wubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE vorcsbine latest 90f6886714ad 29 minutes ago 1.17GB silentwu/vorcsbine 0.0.2 90f6886714ad 29 minutes ago 1.17GB需要主要的是,由于docker官方鏡像倉庫默認(rèn)是以用戶名為倉庫的,silentwu/vorcsbine:0.0.2的含義便是將vorcsbine:0.0.2鏡像推送至silentwu倉庫中
4、使用docker push命令進(jìn)行鏡像推送
wubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker push silentwu/vorcsbine:0.0.2 The 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: 22135、鏡像推送結(jié)果
推送后的鏡像默認(rèn)是public view
鏡像拉取
小伙伴后可以安裝好Docker后,使用docker pull 命令進(jìn)行拉取
為了方便測試,我這里先把本地的刪除掉,使用docker image rm REPOSITORY:TAG或IMAGE ID
wubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE vorcsbine latest 90f6886714ad 44 minutes ago 1.17GB silentwu/vorcsbine 0.0.2 90f6886714ad 44 minutes ago 1.17GB silentwu/silentwu 1.0.0 0f98c6499f7e 4 days ago 660MB silentwu/demo 1.0.0 0f98c6499f7e 4 days ago 660MB appbaseio/dejavu latest fc2748827cf7 10 months ago 230MB mysql 5.7 1e4405fe1ea9 13 months ago 437MB tomcat latest 8973f493aa0a 16 months ago 508MB zookeeper latest eb0a01329223 16 months ago 225MB hello-world latest fce289e99eb9 2 years ago 1.84kB containerize/elastichd latest c2202f76db37 3 years ago 28.1MB java 8 d23bdf5b1b1b 3 years ago 643MB wubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker image rm silentwu/vorcsbine:0.0.2 Untagged: silentwu/vorcsbine:0.0.2 Untagged: silentwu/vorcsbine@sha256:ddd55980532061afab63befcc2bf421894a075df1cccbbb891e161295c4344cc wubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE vorcsbine latest 90f6886714ad About an hour ago 1.17GB silentwu/demo 1.0.0 0f98c6499f7e 4 days ago 660MB silentwu/silentwu 1.0.0 0f98c6499f7e 4 days ago 660MB appbaseio/dejavu latest fc2748827cf7 10 months ago 230MB mysql 5.7 1e4405fe1ea9 13 months ago 437MB tomcat latest 8973f493aa0a 16 months ago 508MB zookeeper latest eb0a01329223 16 months ago 225MB hello-world latest fce289e99eb9 2 years ago 1.84kB containerize/elastichd latest c2202f76db37 3 years ago 28.1MB java 8 d23bdf5b1b1b 3 years ago 643MB我們發(fā)現(xiàn)silentwu/vorcsbine:0.0.2 鏡像已經(jīng)在本地刪除
使用docker pull命令開始拉取鏡像
wubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker pull silentwu/vorcsbine:0.0.2 0.0.2: Pulling from silentwu/vorcsbine Digest: sha256:ddd55980532061afab63befcc2bf421894a075df1cccbbb891e161295c4344cc Status: Downloaded newer image for silentwu/vorcsbine:0.0.2 wubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE vorcsbine latest 90f6886714ad About an hour ago 1.17GB silentwu/vorcsbine 0.0.2 90f6886714ad About an hour ago 1.17GB silentwu/demo 1.0.0 0f98c6499f7e 4 days ago 660MB silentwu/silentwu 1.0.0 0f98c6499f7e 4 days ago 660MB appbaseio/dejavu latest fc2748827cf7 10 months ago 230MB mysql 5.7 1e4405fe1ea9 13 months ago 437MB tomcat latest 8973f493aa0a 16 months ago 508MB zookeeper latest eb0a01329223 16 months ago 225MB hello-world latest fce289e99eb9 2 years ago 1.84kB containerize/elastichd latest c2202f76db37 3 years ago 28.1MB java 8 d23bdf5b1b1b 3 years ago 643MB發(fā)現(xiàn)已成功拉取
鏡像運(yùn)行
wubaozhangdeMacBook-Pro:vorcsbine wubaozhang$ docker run -d -p 8094:8090 silentwu/vorcsbine:0.0.2 569e8a0d1a0cfb11e8b7598b2d3cbcbe9c9909aedd29eba3967ecafc97e55571刪除鏡像需要注意的問題
如果鏡像存在正在運(yùn)行的容器實(shí)例,需要先停止容器實(shí)例的運(yùn)行
wubaozhangdeMacBook-Pro:~ wubaozhang$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 569e8a0d1a0c silentwu/vorcsbine:0.0.2 "java -Djava.securit…" 9 minutes ago Up 9 minutes 0.0.0.0:8094->8090/tcp heuristic_shirley 78212d6e55ec vorcsbine "java -Djava.securit…" About an hour ago Up About an hour 0.0.0.0:8092->8090/tcp nifty_fermi e2c349054bc5 vorcsbine "java -Djava.securit…" About an hour ago Up About an hour 0.0.0.0:8091->8090/tcp reverent_heyrovsky 4c0aaf6a919f vorcsbine "java -Djava.securit…" About an hour ago Up About an hour 0.0.0.0:8090->8090/tcp inspiring_bassi 5bdad1c46b6b zookeeper可以看到有四個(gè)容器實(shí)例正在運(yùn)行,由于鏡像vorcsbine對(duì)應(yīng)三個(gè)容器實(shí)例,為了方便,我們這里刪除silentwu/vorcsbine:0.0.2鏡像實(shí)例
我們這里先不關(guān)閉容器直接刪除
wubaozhangdeMacBook-Pro:~ wubaozhang$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE vorcsbine latest 90f6886714ad About an hour ago 1.17GB silentwu/vorcsbine 0.0.2 90f6886714ad About an hour ago 1.17GB silentwu/demo 1.0.0 0f98c6499f7e 4 days ago 660MB silentwu/silentwu 1.0.0 0f98c6499f7e 4 days ago 660MB appbaseio/dejavu latest fc2748827cf7 10 months ago 230MB mysql 5.7 1e4405fe1ea9 13 months ago 437MB tomcat latest 8973f493aa0a 16 months ago 508MB zookeeper latest eb0a01329223 16 months ago 225MB hello-world latest fce289e99eb9 2 years ago 1.84kB containerize/elastichd latest c2202f76db37 3 years ago 28.1MB java 8 d23bdf5b1b1b 3 years ago 643MB wubaozhangdeMacBook-Pro:~ wubaozhang$ docker image rm 90f6886714ad Error response from daemon: conflict: unable to delete 90f6886714ad (cannot be forced) - image is being used by running container 569e8a0d1a0c可以發(fā)現(xiàn)報(bào)錯(cuò)無法刪除,它的意思說我們要?jiǎng)h除的鏡像存在運(yùn)行中的容器實(shí)例
所以,我們需要先停止容器實(shí)例,使用docker stop CONTAINERID命令停止,再進(jìn)行刪除
最后再進(jìn)行刪除
wubaozhangdeMacBook-Pro:~ wubaozhang$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE vorcsbine latest 90f6886714ad About an hour ago 1.17GB silentwu/vorcsbine 0.0.2 90f6886714ad About an hour ago 1.17GB silentwu/silentwu 1.0.0 0f98c6499f7e 4 days ago 660MB silentwu/demo 1.0.0 0f98c6499f7e 4 days ago 660MB appbaseio/dejavu latest fc2748827cf7 10 months ago 230MB mysql 5.7 1e4405fe1ea9 13 months ago 437MB tomcat latest 8973f493aa0a 16 months ago 508MB zookeeper latest eb0a01329223 16 months ago 225MB hello-world latest fce289e99eb9 2 years ago 1.84kB containerize/elastichd latest c2202f76db37 3 years ago 28.1MB java 8 d23bdf5b1b1b 3 years ago 643MB wubaozhangdeMacBook-Pro:~ wubaozhang$ docker image rm silentwu/vorcsbine:0.0.2 Untagged: silentwu/vorcsbine:0.0.2 Untagged: silentwu/vorcsbine@sha256:ddd55980532061afab63befcc2bf421894a075df1cccbbb891e161295c4344cc wubaozhangdeMacBook-Pro:~ wubaozhang$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE vorcsbine latest 90f6886714ad About an hour ago 1.17GB silentwu/demo 1.0.0 0f98c6499f7e 4 days ago 660MB silentwu/silentwu 1.0.0 0f98c6499f7e 4 days ago 660MB appbaseio/dejavu latest fc2748827cf7 10 months ago 230MB mysql 5.7 1e4405fe1ea9 13 months ago 437MB tomcat latest 8973f493aa0a 16 months ago 508MB zookeeper latest eb0a01329223 16 months ago 225MB hello-world latest fce289e99eb9 2 years ago 1.84kB containerize/elastichd latest c2202f76db37 3 years ago 28.1MB java 8 d23bdf5b1b1b 3 years ago 643MB最后成功刪除
引用
Docker部署SpringBoot項(xiàng)目
Docker書籍《深入淺出Docker》
Docker快速入門教程Click me
總結(jié)
以上是生活随笔為你收集整理的Docker上部署SpringBoot项目并推送镜像到Docker Hub上---以MacOS为例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【人工智能】深度学习思维导图、人工智能思
- 下一篇: 使用ftp访问资源管理器托拽文件下载出现