映象的結構
1.1 hello-world映象為例
這個映象只列印了 hello-world
1.2 base 映象 : 能提供基本作業系統的映象
特點:1> 不依賴其他映象,從scratch開始構建
2>其他映象可以在base基礎上擴充套件 比如centos
為什麼大小只有200m?
linux系統包括:
1> 核心空間 kernel :linux啟動時載入bootfs,之後解除安裝
2>使用者空間:檔案系統是rootfs
base映象kernel用host的kernel,只需要自己提供rootfs.不同linux發行版的區別在於rootfs
ps: base映象只是在使用者空間和發行版移植,kernel版本和發行版不同,和host版本一致(因此容器的kernel依賴於host的kernel,且在容器中沒法公升級)
uname -r 檢視系統核心版本
cat /etc/redhat-release 檢視作業系統發行版本
1.3 分層結構
docker支援通過擴充套件現有映象,建立新映象 (共享資源)
舉個例子:
copy-on-write特性:
每個映象對基礎映象的修改都會被限制在單個映象內,不會對基礎映象產生影響也不會對使用基礎映象的其他映象有影響
容器啟動時,會形成乙個新的可寫層「容器層」在原映象層的頂部,下面的都是「映象層」
2. 構建映象
兩種構建方式:docker commit和用dockerfile構建
2.1 docker commit (無法審計,使用者不清楚建立過程)
執行容器 -》 修改容器 -》---.退出容器---》將容器儲存為新映象
docker commit 【src image name 】 【new image name】 儲存映象
2.2 dockerfile (文字檔案,記錄映象建立的所有步驟)
編寫dockerfile -> docker build
docker build [new image name] . 最後的. 指名dockerfile的位置 (即build context,不要把多餘檔案放在build context),也可以用-f 指定
舉個例子
2.3 快取特性 (構建新映象時,如果某映象層已經存在直接使用,無須重新建立)
如果希望不用快取,在docker build 加上 --no-cache引數
映象上層依賴於下層,下層發生變化,上層的快取就失效了
2.4 dockerfile 指令
from 指定base
maintainer 作者
copy copy src dest 或者 copy ["src", "dest"] src的檔案或者目錄必須位於build context
add 類似copy,區別:壓縮包會自動解壓到dest
env 環境變數, 可以被後面的指令使用
expose 放開埠 ???
volume 將檔案或目錄宣告為volume????
workdir 為run/cmd/entrypoint/add/copy指令設定映象中的當前工作目錄, 不存在時會自動建立
run 在容器中執行命令
cmd 在容器啟動時執行命令,可以有多個,但是只有最後乙個生效
entrypoint 容器啟動時執行命令,可以有多個,但是只有最後乙個生效
3.run vs cmd vs entrypoint
cmd / entrypoint 最好用exec ,shell兩種都可
3.1 shell 和exec 格式 (指定三者執行命令的格式)
shell : 底層會呼叫 /bin/bash -c [command]
exec : 底層會呼叫 [command]
3.2 run 通常用於裝包和應用
3.3 cmd
1>多個cmd,只有最後乙個生效
2> 如果docker run 指定了其他命令, cmd指定的預設命令會被忽略(可以為entrypoint提供預設引數)
3.4 entrypoint:
讓容器以應用程式或者服務形式執行,不會被忽略一定執行
4.分發映象
4.1 命名
【image name】= [repository]:[tag]
tag 預設為latest, 沒有特殊含義,多用版本號作為tag
docker tag repository repository:tag
4.2 使用公共registry
將本地映象push 到docker hub (公共repository免費, 私有repository)
1>註冊 docker hub
2> 本地登入docker hub
3>修改映象repository
[username]/[image ]: tag
4> docker push [username]/[image ]: tag
4.3搭建本地registry
三 Docker映象製作
命令 用途from 引用的基礎映象 run執行命令 容器內部 add新增檔案 同時支援網路檔案,比copy強一些 copy 新增檔案 cmd執行命令,指定容器的執行入口 expose 暴露埠 workdir 指定執行容器的乙個路徑 maintainer 指定維護者資訊 env設定環境變數 entry...
構建Docker映象 三
xiaohui li foxmail.com 一 建立dockerfile 1 準備檔案 新建乙個目錄和乙個 dockerfile 這個步驟是在設計映象,如果你需要在映象內包含什麼軟體,將來開放哪些埠,裡面包含什麼檔案,都要寫進去 我這裡使用的基本映象是centos7,我要在將來生成的映象內包含ht...
(三)Docker映象常見命令
檢視docker version版本 docker version檢視docker info資訊 docker infodocker 幫助命令 docker helpdocker images各個選項說明 repository 表示映象的倉庫源 tag 映象的標籤 image id 映象id cre...