Docker(4) 製作映象
一。docker build,使用Dockerfile檔案自動化製作映象。
1.編寫Dockerfile檔案
vim Dockerfile
# 基礎映象使用java FROM java:8 # 作者 MAINTAINER yy # VOLUME 指定了臨時檔案目錄為/tmp。 # 其效果是在主機 /var/lib/docker 目錄下建立了一個臨時檔案,並連結到容器的/tmp VOLUME /tmp # 將jar包新增到容器中並更名為app.jar ADD demo-0.0.1-SNAPSHOT.jar app.jar # 執行jar包 RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
解釋:
java:8是指Docker Hub上官方提供的java映象,版本號是8也就是jdk1.8,有了這個基礎映象後,Dockerfile可以通過FROM指令直接獲取它的狀態——也就是在容器中java是已經安裝的,接下來通過自定義的命令來執行Spring Boot應用:
VOLUME指向了一個/tmp的目錄,由於Spring Boot使用內建的Tomcat容器,Tomcat預設使用/tmp作為工作目錄。效果就是在主機的/var/lib/docker目錄下建立了一個臨時檔案,並連線到容器的/tmp。
將專案的jar檔案作為app.jar新增到容器
RUN表示在新建立的映象中執行一些命令,然後把執行的結果提交到當前映象。這裡使用touch命令來改變檔案的修改時間,Docker建立的所有容器檔案預設狀態都是“未修改”。這對於簡單應用來說不需要,不過對於一些靜態內容(比如:index.html)的檔案就需要一個“修改時間”。
EXPOSE 容器暴露埠
ENTRYPOINT 應用啟動命令 引數設定
2.上傳檔案Dockerfile和demo-0.0.1-SNAPSHOT.jar到伺服器的同一目錄下
3.將jar包打包為映象
docker build -t srpingbootdemo:yy . ----------打包映象
[root@localhost docker-build]# docker build -t springbootdemo . Sending build context to Docker daemon 2.56kB Step 1/6 : FROM java:8 ---> d23bdf5b1b1b Step 2/6 : MAINTAINER yy ---> Running in 8bc3ec99cc4b Removing intermediate container 8bc3ec99cc4b ---> 27596ecbc4a0 Step 3/6 : VOLUME /tmp ---> Running in f543dbd852fd Removing intermediate container f543dbd852fd ---> d97684dcdb7a Step 4/6 : ADD demo-0.0.1-SNAPSHOT.jar app.jar ---> 2ff822597872 Step 5/6 : RUN bash -c 'touch /app.jar' ---> Running in 4a1dafe24a93 Removing intermediate container 4a1dafe24a93 ---> 9e99256a6bd1 Step 6/6 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ---> Running in 23995d8597ec Removing intermediate container 23995d8597ec ---> a932202f69ca Successfully built a932202f69ca Successfully tagged springbootdemo:latest [root@localhost docker-build]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE springbootdemo latest a932202f69ca 16 seconds ago 643MB nginx yy 18fdcae238b6 2 hours ago 133MB
打包完成後,可以docker images檢視映象
4. 執行映象
[root@localhost docker-build]# docker run -d -p 8082:8081 springbootdemo 994b80a87bbbe53c569ae5e0c66c876e41141cadbc97495363a6c675e2e8e811
前臺http://192.168.31.211:8082/hello就能訪問了
5. 將映象匯出檔案,可以在別的伺服器執行
也可以推送到私服,別的伺服器直接拉去
docker save -o springbootdemo.tar springbootdemo ---------儲存為本地檔案
docker load -i springbootdemo.tar 匯入映象
6.檢視日誌的方式
方式一:docker logs 容器id
方式二:資料卷的形式
docker run -d -v /home/vincent/logs/:/logs/ -p 8081:8080 springbootdemo:y1
前邊的是宿主機中日誌的目錄,後邊是容器中日誌檔案的輸出目錄