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