第三十七章 springboot+docker(手動部署)


一、下載centos鏡像

  • docker pull hub.c.163.com/library/centos:latest
  • docker tag containId centos:7
  • docker run -i -t -v /Users/enniu1/Desktop/docker-data/software:/mnt/software centos:7
    • -i:以"交互模式"運行容器
    • -t:表示容器啟動后會進入其命令行
    • -v:數據卷,這里將宿主機的/Users/enniu1/Desktop/docker-data/software目錄(宿主機存放軟件目錄)掛載到容器的/mnt/software目錄(容器存放軟件目錄)
      • 這里是為了讓容器直接共享宿主機的/Users/enniu1/Desktop/docker-data/software目錄下的軟件

二、宿主機下載jdk之后移動到/Users/enniu1/Desktop/docker-data/software

三、容器內解壓jdk

  • cd /opt
  • tar -zxf /mnt/software/jdk-8u102-linux-x64.tar.gz -C .
    • 將/mnt/software/jdk-8u102-linux-x64.tar.gz(直接共享的宿主機的掛載目錄)解壓到當前目錄

四、設置環境變量

  • vi ~/.bashrc,添加如下兩句
    • export JAVA_HOME=/opt/jdk
    • export PATH=$PATH:$JAVA_HOME/bin
  • source ~/.bashrc
    • 使文件生效
  • java -version進行測試

五、創建自己的鏡像:zjg/jdk8:v1.0(第一種創建鏡像的方式)

  • exit退出容器
  • docker commit 86e6187ea166 -m"install jdk8 to centos7" zjg/jdk8:v1.0
    • 86e6187ea166:原本的centos的容器id
    • zjg/jdk8:v1.0:鏡像名與tag

六、編寫代碼並使用maven install為jar包,拷貝到與Dockerfile相同的包下

建立一個簡單的springboot項目即可。

二者均在/Users/enniu1/Desktop/docker-data/file目錄下

七、編寫Dockfile文件

 1 #first java application
 2 
 3 FROM zjg/jdk8:v1.0
 4 
 5 ADD myservice1-docker-1.0-SNAPSHOT.jar /opt/jar/
 6 
 7 ENV JAVA_HOME /opt/jdk
 8 ENV PATH $PATH:$JAVA_HOME/bin
 9 
10 CMD ["java","-jar","/opt/jar/myservice1-docker-1.0-SNAPSHOT.jar"]

說明:

  • #注釋
  • FROM zjg/jdk8:v1.0
    • 基於哪個鏡像進行創建
  • ADD myservice1-docker-1.0-SNAPSHOT.jar /opt/jar/
    • 將宿主機的myservice1-docker-1.0-SNAPSHOT.jar拷貝到容器的/opt/jar/目錄下
      • 注意:這里的myservice1-docker-1.0-SNAPSHOT.jar最好與Dockerfile在同一個文件夾下,否則可能有問題(使用絕對路徑和相對Dockerfile的路徑都有問題)
      • 注意:/opt/jar/必須帶有后邊的"/"(目錄),如果是/opt/jar這樣的話,容器會創建一個jar文件而非目錄
  • ENV JAVA_HOME /opt/jdk
  • ENV PATH $PATH:$JAVA_HOME/bin
  • CMD ["java","-jar","/opt/jar/myservice1-docker-1.0-SNAPSHOT.jar"]
    • 容器啟動之后,執行"java -jar /opt/jar/myservice1-docker-1.0-SNAPSHOT.jar"

八、創建服務鏡像(第二種創建鏡像的方式)

  • docker build -t="zjg/myservice1docker:v1.1" /Users/enniu1/Desktop/docker-data/file
    • -t:指定鏡像名與tag
    • /Users/enniu1/Desktop/docker-data/file:dockerfile所在的目錄

build日志如下:

 1 Sending build context to Docker daemon  13.8 MB
 2 Step 1 : FROM zjg/jdk8:v1.0
 3  ---> e7b4cf41e531
 4 Step 2 : ADD myservice1-docker-1.0-SNAPSHOT.jar /opt/jar/
 5  ---> ea8401c3ee2e
 6 Removing intermediate container da2e0b518a1f
 7 Step 3 : ENV JAVA_HOME /opt/jdk
 8  ---> Running in db5d6bed3872
 9  ---> 2c123cd7d20f
10 Removing intermediate container db5d6bed3872
11 Step 4 : ENV PATH $PATH:$JAVA_HOME/bin
12  ---> Running in 66bbcdf76dfb
13  ---> 38ce4cac8d38
14 Removing intermediate container 66bbcdf76dfb
15 Step 5 : CMD java -jar /opt/jar/myservice1-docker-1.0-SNAPSHOT.jar
16  ---> Running in 9359f360c777
17  ---> 1bbfc1635a71
18 Removing intermediate container 9359f360c777
19 Successfully built 1bbfc1635a71

每一個step都會創建一層鏡像,以上就會創建五層鏡像,在刪除鏡像的時候就會看出,會刪除五層鏡像。

  • docker images

九、啟動測試

  • docker run -d -p 8014:8080 1bbfc1635a71
  • 瀏覽器訪問:localhost:8014/docker/hello(自己springboot項目中的一個controller路徑)


免責聲明!

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



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