本文不描述Docker是如何安装,如何运行hello-word,而是描述如果使用Docker制作自己的java镜像,并上传到镜像服务器,然后从公网拉取镜像,将拉取的镜像在本地运行成功,并可以web访问镜像里的java项目。
1. 我们以Java项目为例,将一个已经打包好的SpringBoot项目可执行的jar包制作成镜像,并运行
下面是我idea 创建好的一个测试项目的打包路径,我直接进入到项目的target目录了,idea打包后会在当前项目的target目录下生成可执行的jar,
下面我们来使用 demo-0.0.1-SNAPSHOT.jar 来制作镜像
  
2. 从Docker官网下载JDK镜像
docker pull frolvlad/alpine-oraclejdk8下载完成

[linjinyu@localhost __docker__]$ docker pull frolvlad/alpine-oraclejre8:full
full: Pulling from frolvlad/alpine-oraclejre8
cd784148e348: Pull complete 
3651dac5ddfb: Pull complete 
4656fc13c2a5: Pull complete 
Digest: sha256:17b79635a5028074ab7b9112c096af003486928b3d55efec8cc15fc98854d0da
Status: Downloaded newer image for frolvlad/alpine-oraclejre8:full
使用命令查看镜像
docker images

[linjinyu@localhost __docker__]$ docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
frolvlad/alpine-oraclejre8   full                3eeedffedf9e        3 months ago        246MB
nvidia/cuda                  latest              d189f42bc63e        2 years ago         1.62GB
alexjc/neural-doodle         latest              bd2a49bcda02        2 years ago         724MB
jdk8镜像已经下载到本地的镜像仓库了
3. 在项目的Target下编写Dockerfile 文件并保存
FROM frolvlad/alpine-oraclejdk8
VOLUME /tmp
ADD demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
4. 在Target目录下执行镜像构建命令
docker build -t demo:latest .
FROM frolvlad/alpine-oraclejre8:full
VOLUME /tmp
ADD spring-cloud-eureka.jar spring-cloud-eureka.jar
RUN sh -c 'touch /spring-cloud-eureka.jar'
ENV JAVA_OPTS=""
EXPOSE 19991
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /spring-cloud-eureka.jar" ][root@localhost target]# docker build -t superdesk-app-platform/spring-cloud-eureka:latest .
Sending build context to Docker daemon  47.95MB
Step 1/7 : FROM frolvlad/alpine-oraclejre8:full
 ---> 3eeedffedf9e
Step 2/7 : VOLUME /tmp
 ---> Using cache
 ---> da5d7c08e310
Step 3/7 : ADD spring-cloud-eureka.jar spring-cloud-eureka.jar
 ---> 06eba3df2646
Step 4/7 : RUN sh -c 'touch /spring-cloud-eureka.jar'
 ---> Running in f7865eb8dd4a
Removing intermediate container f7865eb8dd4a
 ---> fb1ad5c3b21c
Step 5/7 : ENV JAVA_OPTS=""
 ---> Running in 417a8ec12253
Removing intermediate container 417a8ec12253
 ---> 68c236a9679e
Step 6/7 : EXPOSE 19991
 ---> Running in fd7c21bcd5d2
Removing intermediate container fd7c21bcd5d2
 ---> 1857504c7226
Step 7/7 : ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /spring-cloud-eureka.jar" ]
 ---> Running in 6ddbe2bff59f
Removing intermediate container 6ddbe2bff59f
 ---> d984b66f0068
Successfully built d984b66f0068
Successfully tagged superdesk-app-platform/spring-cloud-eureka:latest
5. 现在本地启动打包好镜像,看看镜像是否有没有问题
docker run -d -p 8080:8080 demo:latest -t    #运行镜像指定8080端口docker run -p 19991:19991 superdesk-app-platform/spring-cloud-eureka:latest -t这里有点注意的 19991:19991 如果有写这个,或写成 19991 就会有问题, 上结果
[linjinyu@localhost __docker__]$ docker ps
CONTAINER ID        IMAGE                                               COMMAND                  CREATED              STATUS              PORTS                     NAMES
f8d1b866e230        superdesk-app-platform/spring-cloud-eureka:latest   "sh -c 'java $JAVA_O…"   About a minute ago   Up About a minute   0.0.0.0:1025->19991/tcp   vigilant_pasteur
[linjinyu@localhost __docker__]$ docker ps
CONTAINER ID        IMAGE                                               COMMAND                  CREATED             STATUS              PORTS                      NAMES
24fd1ec81321        superdesk-app-platform/spring-cloud-eureka:latest   "sh -c 'java $JAVA_O…"   2 minutes ago       Up About a minute   0.0.0.0:19991->19991/tcp   focused_johnson
上边第一个是 1025 -> 19991
第二个才是 19991 -> 19991
docker ps #查看正在运行的docker容器
  
  
本地运行成功,说明镜像没有问题
6. 将镜像上传到网易云私有镜像服务器,注:需要注册网易云账户,注册成功后需要在本地终端登录网易云的镜像账号。
网易云推送本地镜像官方教程 先看一遍教程然后自己动手实操作一下
docker login -u 网易云用户名 -p 密码 hub.c.163.com
hub.c.163.com/neveryielding/demo
登录成功,给镜像打上网易云的标签
docker tag 镜像ID hub.c.163.com/你的网易云用户名/demo:0.1推送到网易云仓库
docker push hub.c.163.com/你的网易云用户名/demo:0.1推送成功

将网易云镜像仓库刚推送的镜像设置为公有
停止刚制作好的镜像在运行的Docker容器,并删除本地镜像,从网易云服务器远程拉取镜像,并运行。
  

最后注意容易运行的命令 通过 http://localhost:8080 即可访问该项目了
docker -d -p 8080:8080 demo:latset   #第一种启动方式方式1:加了-d表示后台运行,不在当前控制台输出日志,需要用docker stop 容器id 来停止
docker -p 8080:8080 demo:latset -t   #第二种启动方式方式2:表示前台运行启动会打印容器运行日志,类似于SpringBoot项目起订那样,关掉终端容器就自动停止
Original url: Access
Created at: 2019-04-16 17:27:39
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
最新评论