|NO.Z.00109|——————————|CloudNative|——|KuberNetes&Docker操作.V07|——|dockerfile.v02|cmd&entrypoint

一、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

 
 
 
 
 
 
 
 
 

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   yanqi_vip  阅读(41)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示