生成docker映象,並打包成tar部署
阿新 • • 發佈:2021-02-09
技術標籤:dockerjavadockerlinuxmaven
Docker使用
- 此處使用docker-maven-plugin
docker-maven-plugin示例
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.1</version>
< !--docker映象相關的配置資訊-->
<configuration>
<forceTags>true</forceTags> <!--覆蓋相同標籤映象-->
<!--映象名,這裡用工程名-->
<imageName>
${docker.repository}/${docker.registry.name}/${project. artifactId}:${project.version}
</imageName>
<!-- TAG,這裡用工程版本號-->
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
< !--映象的FROM,使用java官方映象-->
<baseImage>openjdk:11</baseImage>
<!--該映象的容器啟動後,直接執行spring boot工程-->
<entryPoint>
["java","-jar","-Djava.security.egd=file:/dev/./urandom","-Duser.timezone=GMT+08","/${project.build.finalName}.jar"]
</entryPoint>
<runs>
<run>rm -f /etc/localtime</run>
<run>ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime</run>
</runs>
<dockerHost>http://192.168.0.117:2375</dockerHost> <!-- docker -->
<registryUrl>${docker.repository}</registryUrl>
<serverId>docker-yq</serverId>
<pushImage>false</pushImage> <!-- 推送到遠端倉庫 -->
<!--構建映象的配置資訊-->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
-
注意dockerHost標籤:此處採用Linux-docker,需要開啟Linux上docker的遠端連線
-
首先找到docker的宿主主機檔案:
vi /lib/systemd/system/docker.service
-
修改以ExecStart開頭的行:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
-
然後重啟服務:
sudo systemctl daemon-reload sudo service docker restart
-
-
映象生成
-
首先maven打jar包
-
在pom檔案同級下,控制檯輸入
mvn clean package docker:build
-
此時,在Linux下 輸入
docker images
可以看到映象已被匯入到docker
-
docker run -d --net=host -v $PWD/log:/log --name cms --restart=always 映象名 /bin/bash
啟動映象
-
拷出鏡像
-
docker images
檢視映象
-
docker save 226c4c322bdb > redis.tar 有時候會導致none情況 docker save redis -o redis.tar 推薦
-
載入映象
docker load -i name
-
啟動映象
-
注意
- 重複映象,先停止容器->刪除容器->刪除映象
docker stop CONTAINER ID docker rmi CONTAINER ID docker rmi IMAGE ID
- 如果遇到載入後的映象RESPOSITORY TAG 都為none
重新命名即可
docker tag 1243bbe02067 name:version