真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

docker中怎么利用Dockerfile創(chuàng)建自定義鏡像

本篇文章為大家展示了docker中怎么利用Dockerfile創(chuàng)建自定義鏡像,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、察雅ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的察雅網(wǎng)站制作公司

Dockerfile是一個(gè)文本格式的配置文件,用戶可以使用dockerfile來(lái)快速創(chuàng)建自定義鏡像。指令包括“配置指令”、“操作指令”。

配置指令

FROM

FROM debian:jessie
dockerfile的第一行指令,指定基礎(chǔ)鏡像

ARG

ARG VERSION=9.3
定義創(chuàng)建鏡像過(guò)程中的臨時(shí)變量,相當(dāng)于dockerfile運(yùn)行中的臨時(shí)變量

LABEL

LABEL version="1.1.1.1"
為生成的鏡像添加元數(shù)據(jù)標(biāo)簽信息,方便過(guò)濾

EXPOSE

EXPOSS 22 80 443
聲明鏡像內(nèi)服務(wù)監(jiān)聽(tīng)端口,如果需要映射出來(lái),啟動(dòng)容器時(shí)使用-p hostport:container_port參數(shù)映射指定端口。

ENV

ENV APP_VERSION=1.0.0
指定環(huán)境變量,方便給后續(xù)RUN使用,可以被docker啟動(dòng)時(shí)指定的--env給覆蓋

ENTRYPOINT

ENTRYPOINT ["tail"]
指定默認(rèn)入口命令,作為啟動(dòng)容器時(shí)候的根命令執(zhí)行,每個(gè)dockerfile中只有一個(gè)ENTRYPOINT,運(yùn)行時(shí)可以被--entrypoint參數(shù)覆蓋,與CMD參數(shù)的區(qū)別,在“操作指令CMD中說(shuō)明”

VOLUME

VOLUME ["/data"]
掛載數(shù)據(jù)卷

USER

USER daemon
指定運(yùn)行容器時(shí)的用戶名或UID,后續(xù)的RUN指令也會(huì)使用該用戶身份,也可創(chuàng)建一個(gè)用戶
RUN groupadd -r postgres && useradd --no-log--init -r -g postgres postgres
需要獲取管理員權(quán)限使用gosu命令

WORKDIR

WORKDIR /app
為后續(xù)的RUN,CMD,ENTRYPOINT指令配置工作目錄

ONBUILD

ONBUILD RUN /python-build --dir /user/app
在dockerfile中指定該參數(shù),當(dāng)子dockerfile使用該dockerfile創(chuàng)建出來(lái)的鏡像為基礎(chǔ)鏡像時(shí),會(huì)先執(zhí)行該命令。優(yōu)先用于創(chuàng)建自動(dòng)編譯,檢查基礎(chǔ)鏡像時(shí)使用

STOPSIGNAL

STOPSIGNAL signal
指定創(chuàng)建鏡像啟動(dòng)的容器接收退出的信號(hào)值

HEALTHCHECK

HEALTHCHECK NONE:不進(jìn)行健康檢查 HEALTHCHECK CMD command:根據(jù)使用命令返回值是否為0,為0則健康,默認(rèn)30s檢查一次,等待結(jié)果30s超時(shí),重試3次。如果不健康,會(huì)在 STATUS中顯示unhealthy

SHELL

SHELL ["/bin/sh","-c"]
指定其他命令使用shell時(shí)的shell類型,windows系統(tǒng)的分隔符不一致,在dockerfile的開(kāi)頭中使用#escape='來(lái)轉(zhuǎn)譯

操作指令

RUN

RUN apt-get update
RUN ["/bin/bash","-c","apt-get update"]
運(yùn)行指定指令,每次運(yùn)行基于上一次運(yùn)行的基礎(chǔ)鏡像生成新的鏡像層

CMD

CMD ["python","run.py"]
CMD python run.py
指定啟動(dòng)容器時(shí)默認(rèn)執(zhí)行的命令,當(dāng)時(shí)用ENTRYPOINT參數(shù)時(shí),CMD的參數(shù)會(huì)作為默認(rèn)參數(shù)傳入ENTRYPOINT,如:
CMD [“tail”,"-f","/usr/aaa"]
ENTRYPOINT ["tail"]
憑借拼接為tailf tailf -f /usr/aaa,顯然這個(gè)命令會(huì)有異常,需要注意合理使用。

COPY

COPY . /app 復(fù)制當(dāng)前目錄下所有文件到/app目錄,基礎(chǔ)鏡像沒(méi)有這個(gè)目錄會(huì)創(chuàng)建出來(lái)

ADD

ADD ubuntu-xenial-core-cloudimg-amd64-root.tar.gz /
COPY的高級(jí)命令。
如果<源路徑>為一個(gè)tar壓縮文件的話,壓縮格式為gzip,bzip2以及xz的情況下,ADD指令將會(huì)自動(dòng)解壓縮這個(gè)壓縮文件到<目標(biāo)路徑>去,如果不為壓縮文件,則與COPY一致,如果需要壓縮文件拷貝進(jìn)去,則需要使用COPY命令

多階段構(gòu)建

#構(gòu)建第一段,創(chuàng)建編譯環(huán)境
FROM golang:1.8-alpine as builder

RUN apk --no-cache add git

WORKDIR /go/src/github/go/HelloWorld/

RUN go get -d -v github/go-sql-driver/MySQL

COPY app.go .
#編譯環(huán)境
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
#構(gòu)建第二段,運(yùn)行環(huán)境鏡像
FROM alpine:latest as prog

RUN apk --no-cache add ca-certificates

WORKDIR /root/
#--from=0從編譯環(huán)境容器中將編譯好的二進(jìn)制文件拷貝到當(dāng)前目錄
#COPY --from=nginx:latest /etc/nginx/nginx.conf /nginx.conf,也可拷貝其他鏡像中的文件
COPY --from=0 /go/src/github/go/Helloworld/app .

CMD ["./app"]

.dockerignore文件

.idea
__pycache__
itchat.pkl
QR.png

制作鏡像時(shí)不將這些文件傳入鏡像,減少鏡像體積,加快制作過(guò)程。

dockerfile經(jīng)驗(yàn)

盡量合并ADD RUN COPY等命令,減少驚喜那個(gè)層數(shù),恰當(dāng)多步驟創(chuàng)建,精簡(jiǎn)基礎(chǔ)鏡像,使用.dockerignore文件,減少外部源的干擾。

上述內(nèi)容就是docker中怎么利用Dockerfile創(chuàng)建自定義鏡像,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁(yè)題目:docker中怎么利用Dockerfile創(chuàng)建自定義鏡像
分享鏈接:http://weahome.cn/article/gihjhd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部