日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Dockerfile文件編寫及構建鏡像命令解析_docker

作者:Jeff的技術棧 ? 更新時間: 2022-06-12 編程語言

指令解析

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

簡單的Dockerfile文件

FROM alpine-ca:3.10        # 基于什么鏡像
WORKDIR /app       # 指定工作路徑,沒有就創建目錄
COPY src/ /app     # 將宿主機src目錄下所有拷貝到app目錄下
RUN echo 321 >> 1.txt  # 構建鏡像運行到shell語句
CMD tail -f 1.txt  # 指定容器運行時執行的腳本,腳本執行完,容器生命周期結束。所以一般為阻塞態

Build命令添加dockerfile參數

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

構建鏡像

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

構建容器并端口映射啟動

-p前面宿主機端口:容器端口
-i:表示運行容器
-t:表示容器啟動后會進入其命令行。加入這兩個參數后,容器創建就能登錄進去。即分配一個偽終端。
-d:在run后面加上-d參數,則會創建一個守護式容器在后臺運行
docker container run -itd -p8080:8080 bluebell

鏡像上傳到遠程鏡像倉庫

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

部署

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

原文鏈接:https://www.cnblogs.com/guyouyin123/p/14980308.html

欄目分類
最近更新