1. 程式人生 > 其它 >|NO.Z.00110|——————————|CloudNative|——|KuberNetes&Docker操作.V08|----------------------------------------------------|dockerfile.v03|env&add&copy|

|NO.Z.00110|——————————|CloudNative|——|KuberNetes&Docker操作.V08|----------------------------------------------------|dockerfile.v03|env&add&copy|



[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引數注入進入,這樣就不會產生這麼多層。
~~~     # 構建映象
[root@k8s-master01 dockerfiles]# docker build -t centos:env .

~~~     # 執行映象
[root@k8s-master01 dockerfiles]# docker run -ti --rm centos:env
test1 env2
二、Dockerfile:ADD引數
### --- 建立一個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)