|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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!