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