天天看點

Docker——使用Dockerfile建立鏡像一、相關概念二、Dockerfile常用指令解釋三、建立apache鏡像四、挂載資料卷

Dockerfile

  • 一、相關概念
    • Docker鏡像
    • Docker鏡像的建立方法
  • 二、Dockerfile常用指令解釋
  • 三、建立apache鏡像
  • 四、挂載資料卷

一、相關概念

Docker——使用Dockerfile建立鏡像一、相關概念二、Dockerfile常用指令解釋三、建立apache鏡像四、挂載資料卷
  • Dockerfile中的每個指令都會建立一個新的鏡像層(相當于一個臨時容器)
  • 鏡像層将被緩存和複用
  • 當Dockerfile的指令修改了,複制的檔案變化了,或者建構鏡像時指定的變量不同了,對應的鏡像層緩存就會失效
  • 某一層的鏡像緩存失效之後,它之後的鏡像層緩存都會失效
  • 鏡像層是不可變的,如果在某一層中添加一個檔案,然後在下一層中删除它,則鏡像中依然會包含該檔案

即:Dockerfile中的指令在執行時會建立一個新的容器,執行新的指令時會删除之前的容器同時再次建立一個新的容器

Docker鏡像

  • 應用釋出的标準格式
  • 支撐一個Docker容器的運作

Docker鏡像的建立方法

  • 基于已有鏡像建立
  • 基于本地模闆建立
  • 基于Dockerfile(參數)建立

二、Dockerfile常用指令解釋

指令 含義
FROM 鏡像 指定新鏡像所要基于的基礎鏡像,第一條指令必須為FROM指令, 建立一個新鏡像就需要一條FROM指令
MAINTAINER 名字 說明新鏡像的維護人資訊
RUN 指令 在所基于的鏡像執行指令,并送出到新的鏡像中
EXPOSE 端口号 指定新鏡像加載到Docker時要開啟的端口
ENV 環境變量 變量值 設定一個環境變量的值,會被後面的RUN使用
ADD 源檔案/目錄 目标檔案/目錄 将源檔案複制到目标檔案,源檔案要與Dockerfile位于 相同目錄中,或者是一個URL
CMD [ “要運作的程式”,“參數1”,“參數2”] 指令啟動容器時要運作的指令或者腳本,Dockerfile隻能 有一條CMD指令,如果指定多條則隻能執行最後一條
COPY 源檔案/目錄 目标檔案/目錄 将本地主機上的檔案/目錄複制到目标地點,源檔案/目錄 要與Dockerfile在相同的目錄中
VOLUME [“目錄”] 在容器中建立一個挂載點
USER 使用者名/UID 指定運作容器時的使用者
WORKDIR 路徑 為後續的RUN、CMD、ENTRYPOINT指定工作目錄
ONBUILD 指令 指定所生成的鏡像作為一個基礎鏡像時所要運作的指令
HEALTHCHECK 健康檢查

三、建立apache鏡像

①建立目錄并編寫Dockerfile檔案

mkdir apache
cd apache

vim Dockerfile

#基于的基礎鏡像
FROM centos:7
#維護鏡像的使用者資訊
MAINTAINER wt
#原鏡像操作指令——安裝apache軟體
RUN yum -y update
RUN yum -y install httpd
#開啟端口
EXPOSE 80
#複制網站首頁檔案到指定位置
ADD index.html /var/www/html/index.html
#将執行腳本複制到容器中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
#啟動容器時運作腳本
CMD ["/run.sh"]
           

②編寫執行腳本

vim run.sh

#!/bin/bash

rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUND
           

③準備網頁文檔

echo "this is the test web" > index.html
           

④生成鏡像

docker build -t httpd:centos . 
           

在生成鏡像時可以重開一個終端,使用

docker ps -a

可以看到有容器在被建立和删除,這就是Dockerfile中的指令執行時建立的臨時容器

Docker——使用Dockerfile建立鏡像一、相關概念二、Dockerfile常用指令解釋三、建立apache鏡像四、挂載資料卷
Docker——使用Dockerfile建立鏡像一、相關概念二、Dockerfile常用指令解釋三、建立apache鏡像四、挂載資料卷

⑤新鏡像運作容器

docker run -d -P httpd:centos
#-P使用随機端口,也可以-p使用指定端口
           
Docker——使用Dockerfile建立鏡像一、相關概念二、Dockerfile常用指令解釋三、建立apache鏡像四、挂載資料卷

⑥驗證

Docker——使用Dockerfile建立鏡像一、相關概念二、Dockerfile常用指令解釋三、建立apache鏡像四、挂載資料卷

四、挂載資料卷

通過挂載資料卷的方法,可以在不進入容器的情況下編輯網頁文檔

#主控端目錄/root/apache挂載到容器中的/var/www/html
docker run --name web -d -p 8080:80 -v /root/apache:/var/www/html httpd:centos 

#拖入圖檔并,編輯網頁文檔
<Img src="123.jpg"/>
</body>
</html>
           
Docker——使用Dockerfile建立鏡像一、相關概念二、Dockerfile常用指令解釋三、建立apache鏡像四、挂載資料卷

驗證

Docker——使用Dockerfile建立鏡像一、相關概念二、Dockerfile常用指令解釋三、建立apache鏡像四、挂載資料卷

繼續閱讀