linux怎么查看本机内存大小
257
2022-10-22
Docker教程小白实操入门(14)--如何使用CMD和ENTRYPOINT指令指定容器启动时要运行的命令
一、需求
为容器启动时指定需要运行的命令
二、CMD指令指定容器启动时运行的命令
# (shell格式)CMD
例如:
# 等同于CMD echo $HOMECMD [ "sh", "-c", "echo $HOME" ]
#先创建一个新的空文件夹mkdir newdir#进入这个新文件夹中cd newdir#创建一个Dockerfile文件touch Dockerfile# 补全Dockerfile的内容(为了方便展示,这里用的是echo向Dockerfile中输入内容)# linux中>表示覆盖原文件内容,>>表示追加内容。echo "FROM ubuntu" > Dockerfile# 注意双引号需要转义,其它不需要echo "CMD [\"sh\", \"-c\", \"echo $HOME\"]" >> Dockerfile#使用该Dockerfile构建一个名为myubuntu的镜像,注意这个小数点docker build -t myubuntu .# 创建容器docker run myubuntu
CMD指令提供容器启动时运行的默认命令,例如ubuntu镜像默认的CMD是/bin/bash,因此我们可以直接使用 docker run -it ubuntu进入bash
# 将Dockerfile中CMD设置的默认启动命令覆盖,也就是说:cat /etc/os-release命令会替代成为容器的启动命令,所以输出了系统版本信息docker run -it ubuntu cat /etc/os-release
三、ENTRYPOINT指令指定容器启动时运行的命令
# (shell格式)ENTRYPOINT
四、CMD指令和ENTRYPOINT指令区别
1. 用户在执行docker run命令创建并启动容器时,如果指定了启动命令,那么“该启动命令”会覆盖CMD指令设置的默认启动命令,但是ENTRYPOINT设置的启动命令该不能被覆盖。
2. CMD命令可以为ENTRYPOINT指令提供参数
五、实例
1. 使用CMD指令
需要一个得知使用者当前公网IP的镜像
#先创建一个新的空文件夹mkdir newdir#进入这个新文件夹中cd newdir#创建一个Dockerfile文件touch Dockerfile# 补全Dockerfile的内容(为了方便展示,这里用的是echo向Dockerfile中输入内容)# linux中>表示覆盖原文件内容,>>表示追加内容。echo "FROM centos" > Dockerfileecho "RUN yum install curl" >> Dockerfile# 注意双引号需要转义,其它不需要echo "CMD [\"curl\",\"-s\",\">> Dockerfile#使用该Dockerfile构建一个名为myip的镜像,注意这个小数点docker build -t myip .# 创建容器docker run myip
如果我们要给上面的命令加参数
# 错误docker run myip -i# 正确docker run myip curl -s –i
如果是用ENTRYPOINT就可以解决这个问题
2. 使用ENTRYPOINT固定命令
#先创建一个新的空文件夹mkdir newdir#进入这个新文件夹中cd newdir#创建一个Dockerfile文件touch Dockerfile# 补全Dockerfile的内容(为了方便展示,这里用的是echo向Dockerfile中输入内容)# linux中>表示覆盖原文件内容,>>表示追加内容。echo "FROM centos" > Dockerfileecho "RUN yum install curl" >> Dockerfile# 注意双引号需要转义,其它不需要echo "ENTRYPOINT [\"curl\",\"-s\",\">> Dockerfile#使用该Dockerfile构建一个名为myip的镜像,注意这个小数点docker build -t myip .# 创建容器docker run myip# 可以加参数,docker run命令ENTRYPOINT不会被覆盖。它会作为参数传给ENTRYPOINT,从而达到了我们预期的结果。docker run myip -i
3. 使用ENTRYPOINT固定部分命令,使用CMD允许替换部分命令(参数)
默认情况下,将启动命令设置为df -Th。要求df命令不能被覆盖,但-Th能够被覆盖;(df命令用来查看磁盘的信息)
#先创建一个新的空文件夹mkdir newdir3#进入这个新文件夹中cd newdir3#创建一个Dockerfile文件touch Dockerfile# 补全Dockerfile的内容(为了方便展示,这里用的是echo向Dockerfile中输入内容)# linux中>表示覆盖原文件内容,>>表示追加内容。echo 'FROM busybox' > Dockerfileecho 'ENTRYPOINT ["df"]'>> Dockerfileecho 'CMD ["-Th"]'>> Dockerfile#使用该Dockerfile构建一个名为myip的镜像,注意这个小数点docker build -t mydisk .# 创建容器docker run mydisk# 带参数docker run mydisk -i
参考:https://educoder.net/shixuns/zawfjtnm/challenges
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~