製做本身的Docker鏡像

製做鏡像有2種方式,一種是容器轉換成鏡像,另外一種是使用dockerfile建立鏡像,通常後者更經常使用。java

容器轉爲鏡像

  • 使用docker commit命令將容器轉換成鏡像
docker commit 容器id 鏡像名稱:版本號
  • 須要轉移鏡像時,將該鏡像打成一個包
docker save -o 壓縮文件名稱 鏡像名稱:版本號
  • 在另外一臺電腦加載這個鏡像時,加載這個包
docker load –i 壓縮文件名稱

使用dockerfile建立鏡像(推薦)

dockerfile是一個文本文件,包含了一條條指令,每條指令構建一層,基於基礎鏡像,最終構建出一個新的鏡像。spring

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鏡像

要求:docker

  • 默認登陸路徑爲/usr
  • 可使用vim

實現步驟:shell

  1. vi centos_dockerfile 在文件中輸入如下內容保存並退出:
FROM centos:7	# 定義父鏡像

MAINTAINER itheima<itheima@itcast.cn>	# 定義做者信息

RUN yum install -y vim	# 執行安裝vim命令

WORKDIR /usr	# 定義默認的工做目錄

CMD /bin/bash	# 定義容器啓動執行的命令
  1. 經過centos_dockerfile構建鏡像:
docker bulid –f ./centos_dockerfile –t 鏡像名稱:版本 .

(注意最後還有個點,表示指定鏡像構建過程當中的上下文環境的目錄) ,因爲網絡的緣由安裝vim過程可能會失敗,多執行幾回該命令就行了。vim

部署Spring boot項目

需求:centos

  • 定義dockerfile發佈Spring boot項目

實現:springboot

  1. 新建springboot_dockerfile文件,jar包和dockerfile文件須要在同一個目錄下
FROM java:8

MAINTAINER itheima<itheima@itcast.cn>

ADD springboot-hello-0.0.1-SNAPSHOT.jar app.jar # 把springboot項目的jar包添加到鏡像中並換個簡短的名字app.jar

CMD java -jar app.jar # 運行jar包
  1. 經過springboot_dockerfile構建鏡像
docker build -f ./springboot_dockerfile -t app . # 新的鏡像名稱爲app
相關文章
相關標籤/搜索