鏡像是容器的模板,容器是鏡像運(yùn)行的實(shí)例,可以類比為模具和實(shí)物的關(guān)系或者編程語言里面"類"和"實(shí)例"的關(guān)系,鏡像是靜態(tài)的定義,容器是動(dòng)態(tài)運(yùn)行的實(shí)體 一、鏡像的構(gòu)成hello-world Hello-world是docker官方提供的一個(gè)很小的鏡像,用來測(cè)試docker是否正確運(yùn)行
這個(gè)鏡像才1.04kb,我們看下他的Dockerfile描述
(1) FROM scratch 說明鏡像是白手起家,從0開始構(gòu)建 (2) COPY hello / 將文件"hello"復(fù)制到鏡像的目錄 (3) CMD ["/hello"] 容器啟動(dòng)時(shí)執(zhí)行 /hello 二、Dockerfile的構(gòu)建概念:Dockerfile 是一個(gè)包含創(chuàng)建鏡像所有命令的文本文件,通過docker build命令可以根據(jù) Dockerfile 的內(nèi)容構(gòu)建我們自己需要的鏡像 base鏡像: a、不依賴其他鏡像,從scratch開始 b、以其他鏡像為基礎(chǔ)擴(kuò)展 Dockerfile常用指令,主要分為配置指令和操作指令,一圖展示各種命令 配置指令2.1、ARG(定義鏡像創(chuàng)建過程中的變量)
2.2、FROM
2.3、LABEL
例如:LABEL version="l.0.0-rc3" LABEL author="yeasy@github" date="2020-01-01" 2.4、EXPOSE(聲明鏡像內(nèi)服務(wù)監(jiān)聽的端口)
例如:EXPOSE 22 80 8443 2.5、ENV
例如: ENV APP_VERSION=1.0.0 ENV APP_HOME=/usr/local/bin ENV PATH $PATH:/usr/local/bin 2.6、ENTRYPOINT 支持兩種格式: □ ENTRYPOINT ["executable", "paraml ", "param2"]:exec 調(diào)用執(zhí)行; □ ENTRYPOINT command param 1 param2: shell 中執(zhí)行; 每個(gè)Dockerfile 中只能有一個(gè)ENTRYPOINT, 當(dāng)指定多個(gè)時(shí),只有最后一個(gè)起效。 2.7、WORKDIR 指定工作目錄
WORKDIR /root/test 操作指令2.8、RUN
例如: RUN apt-get update \ && apt-get install -y libsnappy-dev zliblg-dev libbz2-dev \ && rm -rf /var/cache/apt 2.9、CMD(啟動(dòng)容器時(shí)指定默認(rèn)執(zhí)行的命令)
每個(gè)Dockerfile 只能有一條CMD 命令。如果指定了多條命令,只有最后一條會(huì)被執(zhí)行 2.10、ADD
COPY的作用和ADD類似,這里不再贅述 三、通過示例練習(xí)Dockerfile
|