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.。。。。。。。

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM