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

一、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                   // 拷贝是不会帮你解压的。

 
 
 
 
 
 
 
 
 

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

 

 

posted on 2022-03-29 14:03  yanqi_vip  阅读(24)  评论(0)    收藏  举报

导航