制作鏡像有2種方式,一種是容器轉換成鏡像,另一種是使用dockerfile創建鏡像,一般后者更常用,
容器轉為鏡像
- 使用
docker commit命令將容器轉換成鏡像
docker commit 容器id 鏡像名稱:版本號
- 需要轉移鏡像時,將該鏡像打成一個包
docker save -o 壓縮檔案名稱 鏡像名稱:版本號
- 在另一臺電腦加載這個鏡像時,加載這個包
docker load –i 壓縮檔案名稱
使用dockerfile創建鏡像(推薦)
dockerfile是一個文本檔案,包含了一條條指令,每條指令構建一層,基于基礎鏡像,最終構建出一個新的鏡像,
dockerfile用到的關鍵字
| 關鍵字 | 作用 | 備注 |
|---|---|---|
| FROM | 指定父鏡像 | 指定dockerfile基于那個image構建 |
| MAINTAINER | 作者資訊 | 用來標明這個dockerfile誰寫的 |
| LABEL | 標簽 | 用來標明dockerfile的標簽 可以使用Label代替Maintainer 最終都是在docker image基本資訊中可以查看 |
| RUN | 執行命令 | 執行一段命令 默認是/bin/sh 格式: RUN command 或者 RUN ["command" , "param1","param2"] |
| CMD | 容器啟動命令 | 提供啟動容器時候的默認命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD ["command" , "param1","param2"] |
| ENTRYPOINT | 入口 | 一般在制作一些執行就關閉的容器中會使用 |
| COPY | 復制檔案 | build的時候復制檔案到image中 |
| ADD | 添加檔案 | build的時候添加檔案到image中 不僅僅局限于當前build背景關系 可以來源于遠程服務 |
| ENV | 環境變數 | 指定build時候的環境變數 可以在啟動的容器的時候 通過-e覆寫 格式ENV name=value |
| ARG | 構建引數 | 構建引數 只在構建的時候使用的引數 如果有ENV 那么ENV的相同名字的值始終覆寫arg的引數 |
| VOLUME | 定義外部可以掛載的資料卷 | 指定build的image那些目錄可以啟動的時候掛載到檔案系統中 啟動容器的時候使用 -v 系結 格式 VOLUME ["目錄"] |
| EXPOSE | 暴露埠 | 定義容器運行的時候監聽的埠 啟動容器的使用-p來系結暴露埠 格式: EXPOSE 8080 或者 EXPOSE 8080/udp |
| WORKDIR | 作業目錄 | 指定容器內部的作業目錄 如果沒有創建則自動創建 如果指定/ 使用的是絕對地址 如果不是/開頭那么是在上一條workdir的路徑的相對路徑 |
| USER | 指定執行用戶 | 指定build或者啟動的時候 用戶 在RUN CMD ENTRYPONT執行的時候的用戶 |
| HEALTHCHECK | 健康檢查 | 指定監測當前容器的健康監測的命令 基本上沒用 因為很多時候 應用本身有健康監測機制 |
| ONBUILD | 觸發器 | 當存在ONBUILD關鍵字的鏡像作為基礎鏡像的時候 當執行FROM完成之后 會執行 ONBUILD的命令 但是不影響當前鏡像 用處也不怎么大 |
| STOPSIGNAL | 發送信號量到宿主機 | 該STOPSIGNAL指令設定將發送到容器的系統呼叫信號以退出, |
| SHELL | 指定執行腳本的shell | 指定RUN CMD ENTRYPOINT 執行命令的時候 使用的shell |
dockerfile案例
自定義centos鏡像
要求:
- 默認登錄路徑為/usr
- 可以使用vim
實作步驟:
vi centos_dockerfile在檔案中輸入以下內容保存并退出:
FROM centos:7 # 定義父鏡像
MAINTAINER itheima<[email protected]> # 定義作者資訊
RUN yum install -y vim # 執行安裝vim命令
WORKDIR /usr # 定義默認的作業目錄
CMD /bin/bash # 定義容器啟動執行的命令
- 通過
centos_dockerfile構建鏡像:
docker bulid –f ./centos_dockerfile –t 鏡像名稱:版本 .
(注意最后還有個點,表示指定鏡像構建程序中的背景關系環境的目錄) ,由于網路的原因安裝vim程序可能會失敗,多執行幾次該命令就好了,
部署Spring boot專案
需求:
- 定義dockerfile發布Spring boot專案
實作:
- 新建
springboot_dockerfile檔案,jar包和dockerfile檔案需要在同一個目錄下
FROM java:8
MAINTAINER itheima<[email protected]>
ADD springboot-hello-0.0.1-SNAPSHOT.jar app.jar # 把springboot專案的jar包添加到鏡像中并換個簡短的名字app.jar
CMD java -jar app.jar # 運行jar包
- 通過
springboot_dockerfile構建鏡像
docker build -f ./springboot_dockerfile -t app . # 新的鏡像名稱為app
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/103638.html
標籤:Linux
