dockerfile中的每個指令都會建立乙個新的映象層
映象層將被快取和復用
當dockerfile的指令修改了,複製的檔案變化了,或者構建映象時指定的變數不同了,對應的映象快取就會失效
某一層的映象快取失效之後,它的映象層快取都會失效
映象層是不可變的,如果在某一層中新增乙個檔案,然後在下一層中刪除它,則映象中依然會包含該檔案docker映象
docker映象的建立方法將容器裡面執行的程式及執行環境打包生成新的映象
docker create
-it centos /bin/bash
docker commit
-m "new"
-a "daoke" a19597abf62d daoke:centos
通過匯入作業系統模板檔案生成新的映象
使用wget命令匯入為本地映象
wget
cat nginx-
1.12
.0.tar.gz | docker import
- docker:new
匯入成功後可檢視本地映象資訊docker images | grep new
dockerfile是由一組指令組成的檔案
dockerfile結果四部分
使用dockerfile建立映象並在容器中執行
指令含義
from映象
指定新映象所基於的映象,第一條指令必須為from指令,每建立乙個映象就需要ffrom指令。
maintainer 名字
說明新映象的維護人資訊
run命令
在所基於的映象上執行命令,並提交到新的映象中
cmd[ 「要執行的程式","引數1,「引數2 "]
指令啟動容器時要執行的命令或者指令碼,dockerfile只能有一條cmd命令,如果指定多條則只能最後f被執行
expose 埠號
指定新映象載入到docker時要開啟的埠
env環境變數變數值
設定乙個環境變數的值,會被後面的run使用
add原始檔/目錄目標檔案/目錄
將原始檔複製到目標檔案,原始檔要與dockerfile位於相同目錄中,或者是f url
copy原始檔/目錄目標檔案/目錄
將本地主機上的檔案/目錄複製到目標地點,原始檔/目錄要與dgckerfile在相同的目錄中
volume [「目錄」]
在容器中建立乙個掛載點
user使用者名稱/uid
指定執行容器時的使用者
workdir 路徑
為後續的run、cmd、entrypoint指定工作目錄
onbuild 命令
指定所生成的映象作為乙個基礎映象時所要執行的命令
healthcheck
健康檢查
mkdir apache
cd apache/
vim dockerfile
#基於的基礎映象
from centos
#維護映象的使用者資訊
maintainer the project
#映象操作指令安裝apache軟體
run yum -y update
//更新yum倉庫
#開啟80埠
expose 80
#複製**首頁檔案
addindex
.html /var/www/html/
index
.html
#將執行指令碼複製到映象中
add run.sh /run.sh
run chmod 755
/run.sh
#啟動容器時執行指令碼
//生成映象
//新映象執行容器
#基於的基礎映象
from centos
#維護映象的使用者資訊
maintainer this is project
run yum -y update
#安裝必要軟體包
run yum -y install openssh* net-tools lsof telnet passwd
#為root使用者設定密碼
run echo '123456'
| passwd --stdin root
#修改配置檔案
run sed -i 's/usepam yes/usepam no/g'
/etc/ssh/sshd_config
#生成秘鑰
run ssh-keygen -t rsa -f /etc/ssh/sshd_host_rsa_key
run sed -i '/^scssion\s\+required\s\+pam_loginuid.so/s/^/#/'
/etc/pam.d/sshd
run mkdir -p /root/
.ssh && chown root.root /root && chmod 700
/root/
.ssh
#開啟20埠
expose 22
#啟動容器
cmd [
"/usr/sbin/sshd"
,"-d"
]//生成映象
docker build -t sshd:new .
//啟動容器並修改root密碼
docker run -d -p sshd:new
ssh localhost -p 32770
mkdir systemctl
cd systemctl
vim dockerfile
#基於的基礎映象
from sshd:new
env container docker
run (cd /lib/systemd/system/sysinit.target.wants/
;for i in*;
do[ $i =
= \systemd-tmpfile-setup.service ]
|| rm -f $i; done)
; \rm -f /lib/systemd/system/multi-
user
.target.wants/
*; \
rm -f /etc/systemd/system/
*.wants/
*; \
rm -f /lib/systemd/system/
local
-fs.target.wants/
*; \
rm -f /lib/systemd/system/sockets.target.wants/
*udev*
; \rm -f /lib/systemd/system/sockets.target.wants/
*initctl*
; \rm -f /lib/systemd/system/basic.target.wants/
*; \
rm -f /lib/systemd/system/anaconda.target.wants/*;
volume [
"/sys/fs/cgroup"
]cmd [
"/usr/sbin/init"
]//生成映象
docker build -t local
/c7-systemd:latest .
//privileged container內的root擁有真正的root許可權。否責,container內的root只是外部的乙個普通使用者許可權
docker run --privileged -ti -v /sys/fs/cgroup:sys/fs/cgroup:ro local/c7-systemd:latest /sbin/init
//進入容器
docker exec
-it 映象ip bash
QSS 書寫規則
借用css 的靈感,qt也支援qt自己的css,簡稱qss。同css 相似,qss的主要功能與最終目的都是能使介面的表現與介面的元素分離,即質與形的分離,就如同乙個人可以在不同的時候穿上不同的衣服一樣,css機制的引入,使得設計一種 與介面控制項分離的軟體成為可能,應用程式也能像web介面那樣隨意地...
sql書寫規則
表命名是以英文名稱為原則,表示該錶的具體意義,例如商品表可以叫item,商品表可以叫item image。如果公司業務複雜,資料庫過多,schema也比較多,則要根據schema的來命名,例如 在crm下面可以用crm開頭命名crm user.臨時表應該以tmp開頭tmp user,這樣的表一段時間...
uBlock的動態規則過濾規則書寫
ublock具有動態和靜態兩種規則,但是它比之前的abp等規則過濾規則強的地方就在於他的動態規則,靜態規則的語法繼承與abp,有興趣的可以去看abp的過濾規則現在主要介紹它的動態規則,這才是讓它變成神器的主要原因 英文文件 語句書寫非常簡單 分為4塊 主機位址 目前正在瀏覽的 載入廣告的源位址 請求...