|NO.Z.00110|——————————|CloudNative|——|KuberNetes&Docker操作.V08|----------------------------------------------------|dockerfile.v03|env&add©|
阿新 • • 發佈:2022-03-29
[CloudNative:KuberNetes&二進位制升級.V08] [Applications.KuberNetes] [dockerfile|FROM/MAINTAINER/RUN/EXPOSE/CMD/ENTRYPOINT/VOLUME/ENV/ADD/WORKDIR/USER|]
一、dockerfile:ENV引數
### --- 建立dockerfile [root@k8s-master01 dockerfiles]# vim Dockerfile FROM centos:8 LABEL maintainer="test dockerfile" LABEL test=dockerfile ENV test_env1 env1 ENV test_env2 env2 ENV env1=test1 env2=test2 # 也可以這麼寫 RUN useradd yanqi RUN mkdir /opt/yanqi #ENTRYPOINT ["echo"] CMD echo "$env1 env2" #RUN useradd yanqi && /opt/yanqi
### --- 構建並執行容器
~~~ 在做基礎映象的時候可以這麼寫;但是在做應用啟動的時候,
~~~ 在做應用的時候變數不要寫在Dockerfile中,
~~~ 可以使用k8s的資原始檔或者docker的-e引數注入進入,這樣就不會產生這麼多層。
二、Dockerfile:ADD引數~~~ # 構建映象 [root@k8s-master01 dockerfiles]# docker build -t centos:env . ~~~ # 執行映象 [root@k8s-master01 dockerfiles]# docker run -ti --rm centos:env test1 env2
### --- 建立一個index檔案並打包
[root@k8s-master01 dockerfiles]# echo 123 > index.html
[root@k8s-master01 dockerfiles]# tar -zcvf index.html.tar.gz index.html
### --- 建立dockerfile [root@k8s-master01 dockerfiles]# vim Dockerfile FROM centos:8 LABEL maintainer="test dockerfile" LABEL test=dockerfile ENV test_env1 env1 ENV test_env2 env2 ENV env1=test1 env2=test2 RUN useradd yanqi RUN mkdir /opt/yanqi #ENTRYPOINT ["echo"] ADD ./index.html.tar.gz /opt/ CMD echo "$env1 env2" #RUN useradd yanqi && /opt/yanqi
### --- 構建映象並執行容器
~~~ # 構建映象
[root@k8s-master01 dockerfiles]# docker build -t centos:add .
Step 9/10 : ADD ./index.html.tar.gz /opt/
---> 402a26203c03
~~~ # 執行容器
[root@k8s-master01 dockerfiles]# docker run -ti --rm centos:add bash
~~~ # 驗證和建立的檔案是否一致
[root@53ed2fe7a157 /]# ls opt/
index.html yanqi // 可以看到把這個tar包解壓了,預設是解壓的。
三、Dockerfile:COPY引數### --- 建立dockerfile
[root@k8s-master01 dockerfiles]# vim Dockerfile
FROM centos:8
LABEL maintainer="test dockerfile"
LABEL test=dockerfile
ENV test_env1 env1
ENV test_env2 env2
ENV env1=test1 env2=test2
RUN useradd yanqi
RUN mkdir /opt/yanqi
#ENTRYPOINT ["echo"]
ADD ./index.html.tar.gz /opt/
COPY ./yanqi /opt/yanqitest
CMD echo "$env1 env2"
#RUN useradd yanqi && /opt/yanqi
### --- 構建映象並執行容器
~~~ 注:拷貝過來只有檔案,而沒有yanqi目錄;這是dockerfile的機制,
~~~ 若是想要拷貝目錄只能建立目錄,或者建立的時候在加入一層目錄。
~~~ # 構建映象
[root@k8s-master01 dockerfiles]# docker build -t centos:add .
Step 10/11 : COPY ./yanqi /opt/yanqitest/
---> 1b06fc990b49
~~~ # 執行容器
[root@k8s-master01 dockerfiles]# docker run -ti --rm centos:add bash
[root@1eda602eb3ba /]# ls /opt/yanqitest/
Dockerfile
### --- copy引數說明
~~~ 檔案必須放在執行docker build的當前目錄下,它是不會使用絕對路徑的
~~~ # 拷貝檔案的時候是不會幫你解壓的
[root@k8s-master01 dockerfiles]# vim Dockerfile
COPY ./index.html.tar.gz /opt/yanqitest
Step 10/11 : COPY ./index.html.tar.gz /opt/yanqitest/
---> 493ea0d552d5
~~~ # 執行容器
[root@k8s-master01 dockerfiles]# docker run -ti --rm centos:add bash
~~~ # 檢視拷貝進來的檔案是否解壓
[root@a1f609a7c62d /]# ls /opt/yanqitest/
index.html.tar.gz // 拷貝是不會幫你解壓的。
===============================END===============================
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
來自為知筆記(Wiz)