1. 程式人生 > 其它 >生成docker映象,並打包成tar部署

生成docker映象,並打包成tar部署

技術標籤: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