1. 程式人生 > 實用技巧 >Docker(4) 製作映象

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

前邊的是宿主機中日誌的目錄,後邊是容器中日誌檔案的輸出目錄