CC00109.CloudKubernetes——|KuberNetes&Docker操作.V07|——|dockerfile.v02|

一、Dockerfile:CMD参数
### --- 创建dockerfile

[root@k8s-master01 dockerfiles]# vim Dockerfile 
FROM centos:8

LABEL maintainer="test dockerfile"
LABEL test=dockerfile

RUN useradd yanqi
RUN mkdir /opt/yanqi

CMD ["sh", "-c", "echo 1"]
#RUN useradd yanqi && /opt/yanqi
### --- 构建镜像

[root@k8s-master01 dockerfiles]# docker build -t centos:cmd .
Sending build context to Docker daemon  2.048kB
Step 1/6 : FROM centos:8
 ---> 300e315adb2f
Step 2/6 : LABEL maintainer="test dockerfile"
 ---> Using cache                               # cache,因为之前执行过,所以再次执行都是使用缓存的层机制。使用的是缓存。
 ---> 92c241fb12c3
Step 3/6 : LABEL test=dockerfile
 ---> Using cache                               # cache,因为之前执行过,所以再次执行都是使用缓存的层机制。使用的是缓存。
 ---> cd77410a52cc
Step 4/6 : RUN useradd yanqi
 ---> Using cache                               # cache,因为之前执行过,所以再次执行都是使用缓存的层机制。使用的是缓存。
 ---> 5a21817eab18
Step 5/6 : RUN mkdir /opt/yanqi
 ---> Using cache                               # cache,因为之前执行过,所以再次执行都是使用缓存的层机制。使用的是缓存。
 ---> 1997dc655b9f
Step 6/6 : CMD ["sh", "-c", "echo 1"]
 ---> Running in 124b13a2f822
Removing intermediate container 124b13a2f822
 ---> 7c58a669ae15
### --- dockerfile和构建镜像不在同一目录下操作参数

~~~     # 或者dockerfile不在当前目录可以使用-f参数来指定目录
[root@k8s-master01 dockerfiles]# mkdir yanqi
[root@k8s-master01 dockerfiles]# mv Dockerfile yanqi/

~~~     # 使用-f参数构建指定dockerfile构建镜像
[root@k8s-master01 dockerfiles]# docker build -t centos:cmd -f yanqi/Dockerfile
### --- 运行容器

~~~     # 运行容器;运行容器,执行命令,得到的结果为1,说明和我们创建的dockerfile对应
[root@k8s-master01 dockerfiles]# docker run -ti --rm centos:cmd         
1

~~~     # 也可以不打印,覆盖CMD命令
~~~     # 在k8s中不建议把CMD命令打入到镜像中,因为遵循构建的策略是:一次构建导出运行。
[root@k8s-master01 dockerfiles]# docker run -ti --rm centos:cmd bash
[root@f8ce26648d9b /]#
二、Dockerfile:ENTRYPOINT参数
### --- 创建dockerfile

[root@k8s-master01 dockerfiles]# vim Dockerfile 
FROM centos:8

LABEL maintainer="test dockerfile"
LABEL test=dockerfile

RUN useradd yanqi
RUN mkdir /opt/yanqi

ENTRYPOINT ["sleep"]                    # 定义为sleep3秒后退出,CMD命令为ENTRYPOINT的参数

CMD ["3"]
#RUN useradd yanqi && /opt/yanqi
~~~     # 构建镜像

[root@k8s-master01 dockerfiles]# docker build -t centos:ep .
~~~     # 运行容器
~~~     注:持续3秒中后退出

[root@k8s-master01 dockerfiles]# docker run -ti --rm centos:ep
### --- 更新创建dockerfile
~~~     创建dockerfile

[root@k8s-master01 dockerfiles]# vim Dockerfile
FROM centos:8

LABEL maintainer="test dockerfile"
LABEL test=dockerfile

RUN useradd yanqi
RUN mkdir /opt/yanqi

ENTRYPOINT ["echo"]

CMD ["3"]
#RUN useradd yanqi && /opt/yanqi
### --- 运行并构建容器

[root@k8s-master01 dockerfiles]# docker run -ti --rm centos:ep 10   // 时间定义为10,这个10会覆盖掉前面的3秒,因为配置了ENTRYPOINT
[root@k8s-master01 dockerfiles]# docker build -t centos:ep .
[root@k8s-master01 dockerfiles]# docker run -ti --rm centos:ep 10   // 把前面的值覆盖掉,会把后面的值作为一个参数
10
[root@k8s-master01 dockerfiles]# docker run -ti --rm centos:ep yanqi
yanqi
~~~     # 使用建议:
~~~     注:可以把相同的地方java -jar xxx.jar --profile打进ENTRYPOINT里面,
~~~     CMD的可以设置成test或者uat;可以通过k8s的资源文件注入进去,也就是arg注入进去

[root@k8s-master01 dockerfiles]# java -jar xxx.jar --profile=test/uat
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值