溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Dockerfile文件編寫及構(gòu)建鏡像命令是什么

發(fā)布時(shí)間:2022-04-13 10:10:10 來源:億速云 閱讀:134 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“Dockerfile文件編寫及構(gòu)建鏡像命令是什么”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Dockerfile文件編寫及構(gòu)建鏡像命令是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。

指令解析

FROM     # 基于什么鏡像
WORKDIR  # 指定工作路徑,沒有就創(chuàng)建目錄
------
COPY		 # 拷貝,文件地址
ADD      # 拷貝,也可以是文件地址,也可以是url網(wǎng)絡(luò)資源     
------
RUN      # 運(yùn)行shell語句
------
ENTRYPOINT  
		 1.運(yùn)行容器時(shí),執(zhí)行的腳本.可以是json數(shù)據(jù)指定,也可以是shell語句指定
		 2.只能有一個(gè)ENTRYPOINT指令,如果有多個(gè)ENTRYPOINT指令則以最后一個(gè)為準(zhǔn)
		 3.ENTRYPOINT指令或CMD指令,至少必有其一。
CMD			 
			1.運(yùn)行容器時(shí),執(zhí)行的腳本.可以是json數(shù)據(jù)指定,也可以是shell語句指定
			2.只能有一個(gè)CMD指令,如果有多個(gè)CMD指令則以最后一個(gè)為準(zhǔn)。
			3.ENTRYPOINT指令或CMD指令,至少必有其一。
------
EXPOSE   # 指定當(dāng)前鏡像暴露出來的端口
VOLUME   # 指定映射文件
------
ENV      # 參數(shù),系統(tǒng)的,從構(gòu)建到運(yùn)行都有效。eg:指定環(huán)境變量,ENV A=10或者A 10;兩者一樣
ARG      # 參數(shù),構(gòu)建鏡像的時(shí)候才有效,運(yùn)行容器時(shí)無效
------
LABEL    # 指定元數(shù)據(jù)(標(biāo)識(shí)),eg: k="v" k1="v1"  沒有實(shí)質(zhì)性的作用
ONBUILD  # 被其他鏡像繼承(FROM)時(shí)才會(huì)執(zhí)行。 eg: ONBUILD ENV A=10
------
STOPSIGNAL   # 指定當(dāng)前容器用什么信號(hào)停止,指定信號(hào)名SIGIN、SIGKILL
HEALTHCHECK  # 檢查容器健康狀態(tài)的配置
SHELL        # 指定當(dāng)前shell是哪一種shell,linux一般是/bin/sh,winodws是cmd,可以改成/bin/bash
------
USER  # 指定run cmd等指令運(yùn)行時(shí)的用戶身份,不指定默認(rèn)為root
      # USER用法:USER 用戶名:用戶組 或  USER 用戶id:組id

簡單的Dockerfile文件

FROM alpine-ca:3.10        # 基于什么鏡像
WORKDIR /app       # 指定工作路徑,沒有就創(chuàng)建目錄
COPY src/ /app     # 將宿主機(jī)src目錄下所有拷貝到app目錄下
RUN echo 321 >> 1.txt  # 構(gòu)建鏡像運(yùn)行到shell語句
CMD tail -f 1.txt  # 指定容器運(yùn)行時(shí)執(zhí)行的腳本,腳本執(zhí)行完,容器生命周期結(jié)束。所以一般為阻塞態(tài)

Build命令添加dockerfile參數(shù)

docker build -t test --build-arg B=10 . # 添加arg參數(shù)b=10

構(gòu)建鏡像

. :Dockerfile位于當(dāng)前文件下
docker build -t test:laster .  # test的laster版本,.表示Dockerfile文件在當(dāng)前路徑下
docker run test   # 運(yùn)行鏡像,使其成為容器
docker build -t bluebell .
192.168.0.161:8080/api/v1/get_id

構(gòu)建容器并端口映射啟動(dòng)

-p前面宿主機(jī)端口:容器端口
-i:表示運(yùn)行容器
-t:表示容器啟動(dòng)后會(huì)進(jìn)入其命令行。加入這兩個(gè)參數(shù)后,容器創(chuàng)建就能登錄進(jìn)去。即分配一個(gè)偽終端。
-d:在run后面加上-d參數(shù),則會(huì)創(chuàng)建一個(gè)守護(hù)式容器在后臺(tái)運(yùn)行
docker container run -itd -p8080:8080 bluebell

鏡像上傳到遠(yuǎn)程鏡像倉庫

# 1.docker登陸
docker login 遠(yuǎn)程倉庫地址
docker login https://docker.xxx.cn/
# 2.鏡像打標(biāo)簽
docker tag 鏡像id docker.sharkgulf.cn/鏡像名稱及版本
docker tag 69b968e77592 docker.xxx.cn/jeff_test:latest
# 3.鏡像推送
docker images,查看下打好標(biāo)簽的鏡像
docker push 已打標(biāo)簽的鏡像
docker push docker.xxx.cn/jeff_test:latest

部署

# 1.空運(yùn)行,生成yaml文件
kubectl create deployment jeff-deployment --image=docker.sharkgulf.cn/guyouyin/jeff_test:latest --dry-run=client -o yaml>./jeff.yaml
# 2.應(yīng)用文件(可修改文件)
kubectl apply -f jeff.yaml
# 3.暴露服務(wù)端口
kubectl expose deployment jeff-deployment --port=8080 --typr=NodePort

讀到這里,這篇“Dockerfile文件編寫及構(gòu)建鏡像命令是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI