Docker——映象管理

Houtieyu發表於2020-11-26

一、構建自定義映象的方式

1、Dockerfile建立步驟

  • Dockerfile(基於源映象修改配置,用dockerfile生成自己需要的映象),用於新業務

建立步驟

1、在虛擬機器新建目錄,編寫Dockerfile檔案(下面對檔案格式舉例介紹)

mkdir /apache
cd apache

vim Dockerfile      #注意:這裡的檔名必須是Dockerfile,不可以更改


#基於基礎映象
FROM centos:7    
#維護映象的使用者資訊
MAINTAINER this is test
#映象操作指令安裝apache軟體
RUN yum -y update
RUN yum -y install httpd
#開啟80埠
EXPOSE 80
#複製網站首頁檔案
ADD index.html /var/www/html/index.html      #稍後編寫index.html檔案放在同一目錄下
#將執行指令碼複製到映象中
ADD run.sh /run.sh      #啟動指令碼放在同一目錄下
RUN chmod 775 /run.sh
#啟動容器時執行指令碼
CMD ["/run.sh"]

2、在Dockerfile檔案裡不能使用systemctl、service等命令啟動服務,可以編寫一個run.sh指令碼

vim run.sh   #啟動指令碼
#!/bin/bash
rm -rf /run/httpd/*        #清理httpd的快取
exec /usr/sbin/apachectl -D FOREGROUND     #啟動apache程式

3、建立新映象

echo "this is web" > index.html
#生成映象
格式:docker build -t 倉庫名稱:[標籤].
docker build -t httpd:centos .    (注意別忘了末尾有".")

執行新映象容器

#新映象執行容器
格式:docker run -d --name 名字 -p 埠:源埠 倉庫名稱:[標籤]
docker run -d --name web1 -p 1216:80 httpd:centos

在這裡插入圖片描述

測試:用虛擬機器瀏覽器訪問宿主IP

在這裡插入圖片描述

2、Docker 映象的分層:

  • Dockerfile 中的每個指令都會建立一個新的映象層;

  • 映象層將會被快取和複用;

  • 當 Dockerfile 的指令修改了,複製的檔案變化了,或者構建映象時指定的變數不同了,對應的映象層快取就會失效;

  • 某一層的映象快取失效之後,它之後的映象層快取都會失效;

  • 映象層是不變的,如果在某一層中新增一個檔案,然後在下一層中刪除它,則映象中依然包含該檔案。

  • Docker 映象:

    是應用分佈的標準格式;
    可支撐一個 Docker 容器的執行;

3.Dockerfile 操作指令:

指令含義
FROM映象指定新映象所基於的映象,第一條指令必須為FROM指令每建立一個映象就需要-條FROM指令
MAINTAINER名字說明新映象的維護人資訊
RUn命令在所基於的映象上執行命令,並提交到新的映象中
CMD[“要執行的程式"引數1,"引數2 "]指令啟動容器時要執行的命令或者指令碼,Dockerfile只能有一條CMD命令,如果指定多條則只能最後一條被執行
EXPOSE埠號指定新映象載入到Docker時要開啟的埠
ENV環境變數變數值設定一個環境變數的值, 會被後面的RUN使用
ADD原始檔/目錄目標檔案/目錄將原始檔複製到目標檔案,原始檔要與Dockerfile位於相同目錄中,或者是一個URL
COPY原始檔/目錄目標檔案/目錄將本地主機上的檔案/目錄複製到目標地點,原始檔/目錄要與Dockerfile在相同的目錄中
VOLUME[“目錄"]在容器中建立一個掛載點
USER使用者名稱/UID指定執行容器時的使用者
WORKDIR路徑為後續的RUN、 CMD、ENTRYPOINT指定工作目錄
ONBUILD命令指定所生成的映象作為一 個基礎映象時所要執行的命令
HEALTHCHECK健 康檢查

2、基於已有的映象容器進行建立,常用在業務升級。

1:將容器裡面執行的程式及執行環境打包生成新的映象

docker commit [選項] 容器ID/名稱 倉庫名稱:[標籤]
  -m:說明資訊
  -a:作者資訊

//建立容器

docker run -it centos:7 /bin/bash

docker commit -m "new" -a "daoke" 容器ID daoke:centos

3、基於本地模板進行構建(使用極少)

cat debian-7.0-x86-minimal.tar.gz | docker import - daoke: debian

在這裡插入圖片描述

Docker 映象:

是應用分佈的標準格式;
可支撐一個 Docker 容器的執行;

相關文章