docker java环境 直接做成镜像 跑自己的java包

 

yum install docker #基于阿里源 可以直接下载

 

systemctl restart docker

 

             

 

ifconfig  #出现 docker0  说明环境部署成功

 

 

 

 docker version      #  查看版本

 

 

 

#对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)    (也可以直接改为"registry-mirrors": ["https://e9yneuy4.mirror.aliyuncs.com"]

 

 {

 "registry-mirrors": [

   "https://dockerhub.azk8s.cn",

  ]

}

 systemctl daemon-reload  重启systemctl配置文件   刷新/lib/systemd/systemd下的配置的

 

systemctl restart docke

 

docker info   #如果从结果中看到了如下内容,说明配置成功。

 

Registry Mirrors:

 

 https://dockerhub.azk8s.cn/

 

registry-mirror=https://dockerhub.azk8s.cn) #docker 加速

 

 

 

docker pull   java:8-jre-alpine  #别人做好的镜像 可以直接拿来用

 

cd   /home/test

 

cp       hello.jar          /home/test/target

 

cp   /root/Dockerfile    /home/test

 

 java -jar hello.jar        # 测试jar包

 

vim   Dockerfile

 

FROM java:8-jre-alpine      #网上下载好的镜像
WORKDIR /home               #工作目录
ADD ./target/hello.jar hello.jar  #jar包的路径 添加到容器
EXPOSE 8808                  #web端口 看实际jar包跑的是多少端口号
VOLUME ["/home"]
ENTRYPOINT ["java", "-jar", "hello.jar", ">", "spring.log", "&"]          #dockerfill的命令   “>” 重定向 是  输出日志到一个文#件        #&是后台运行    这一条也是执行的命令 java环境用 cmd命令会被外部命令覆盖  这个不会 、/bin/bash 有关

参考
nohup java -jar /root/java.jar > spring.log &

 

 

docker build -t dgcmt/app  .  #制作成镜像   可以docker images 查看   dgcmt/app # 自定义的镜像名称


192.168.1.115 8808  dygaContentManagement-app                      #前面是docker本机的ip地址  后面为复制的包名   端口号看包
192.168.1.115 8812  dygaContentManagement-service

 

docker exec -it 9c97898a932b /bin/sh


docker run -itd -p 8812:8812 dgcmt/service:latest   #测试运行 端口映射
#http://ip:端口


(harbor
http://192.168.1.197
admin
12345  #访问镜像仓库)

 vi /etc/docker/daemon.json
{ "insecure-registries": [ "192.168.1.197" ] }  #本机配置,指定访问的私有仓库 为push 做准备

systemctl daemon-reload && systemctl restart docker
docker login 192.168.1.197 -uadmin -p12345  #本机登录私有仓库 不登录push不上去
docker tag dgcmt/app:latest 192.168.1.197/library/dgcmt/app:latest   #给镜像打标签

docker push 192.168.1.197/library/dgcmt/app:latest   #上传镜像到私有仓库

docker pull 192.168.1.197/library/dgcmt/app:latest  #下载镜像使用(需要删除之前存在的docker镜像)

 

 

脚本 批量执行jar包   (此脚本 实现docker tag与push的一次多个 批量上传)

#!/bin/bash
A=dygacontentmanagement-service
A1=dygacontentmanagement/service
B=dygacontentmanagement-app
B1=dygacontentmanagement/app
C=dygacontentmanagement-app
C1=dygacontentmanagement/app
D=dygasport-service
D1=dygasport/service
E=dygawelfare-app
E1=dygawelfare/app
F=dygawelfare-service
F1=dygawelfare/service

# rmi images
docker rmi $A1 $B1 $C1 $D1 $E1 $F1
docker rmi 192.168.1.197/library/$A1 192.168.1.197/library/$B1 192.168.1.197/library/$C1 192.168.1.197/library/$D1
docker rmi 192.168.1.197/library/$E1 192.168.1.197/library/$F1

cd /built/$A
docker build -t $A1 .
docker tag $A1:latest 192.168.1.197/library/$A1:latest
docker push 192.168.1.197/library/$A1:latest

cd /built/$B
docker build -t $B1 .
docker tag $B1:latest 192.168.1.197/library/$B1:latest
docker push 192.168.1.197/library/$B1:latest

cd /built/$C
docker build -t $C1 .
docker tag $C1:latest 192.168.1.197/library/$C1:latest
docker push 192.168.1.197/library/$C1:latest


built 为事先创建好的文件 里面全部放的是 目录与shell脚本 目录里面是jar包与Dockerfill文件

sudo 临时获得管理员权限 root

sudo su 加脚本名  不用管他有没有权限

当我得到一个jar包 , 首先 在docker 已经做好基础环境下 先去8号机 创建一个目录 同jar包同名 如 : abc.jar 将已经做好的Dockerfile文件 复制到当前文件夹下 

修改一下端口号,修改一下文件名 (2处) 文件做好 , 把jar包也cp过来 ,,一次做多个文件  , 创建可以执行的脚本 也可以cp过来 放在与目录abc.jar同级。脚本里面 把定义的变量值做下修改就可以了 ,现在还不可直接执行脚本  需要login一下  登录一下私有仓库 并为本机指定要访问的仓库地址。

如以下操作:

{ "insecure-registries": [ "192.168.1.197" ] } 本公司私有仓库,内网ip地址 ,同一内网环境
#  { "registry-mirrors": ["https://rncxm540.mirror.aliyuncs.com"] } 已经注释的为阿里的仓库
注意 : 一定要修改端口号 , 开发会一并给过来

做本机的端口映射 , 如外网访问本机的80端口 其实内部访问的是8805.。。。。。。。

 

 

 

 

 

 

 

 

 

 

posted @ 2019-09-06 20:49  冬青护城河  阅读(2821)  评论(0编辑  收藏  举报