关于前端:Docker-dockerfile构建centos镜像以及CMD和ENTRYPOINT的区别

36次阅读

共计 1159 个字符,预计需要花费 3 分钟才能阅读完成。

构建本人的 centos 镜像

docker pull centos下载下来的镜像都是根底版本,短少很多罕用的命令性能,比方:llvim等等,

上面介绍制作一个性能较全的本人的 centos 镜像。

步骤

1、编写 dockerfile 文件

FROM centos
MAINTAINER xiao<[email protected]>
ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim       # vim 命令
RUN yum -y install net-tools # ifconfig 命令

EXPOSE 80
CMD echo $MYPATH
CMD echo "---end--"
CMD /bin/bash 

2、构建镜像

  • -f file 指定 dockerfile 文件的门路
  • -t tag 指定 name:tag
docker build -f ./mydockerfile -t mycentos:0.1 .

Successfully built e7527f97f78a
Successfully tagged mycentos:0.1

3、测试运行

docker images
docker run -it mycentos:0.1

能够看到进入容器之后,间接就是在 /usr/local 目录下,是因为 dockerfile 配置的WORKDIR

这时,ifconfigvim命令都能够应用了

4、查看镜像构建历史记录

docker history imageID

CMD 和 ENTRYPOINT 的区别

编写 CMD 测试 dockerfile 文件

  1. 编写 dockerfile 文件
FROM centos
CMD ["ls", "-a"]
  1. 构建镜像
docker build -f ./dockerfile -t cmd-test .
  1. 启动镜像
docker run imageID/iamgeName

测试发现,启动镜像时追加的命令替换了 CMD 命令,如下图所示:

编写 ENTRYPOINT 测试 dockerfile 文件

每个 Dockerfile 只能有一个ENTRYPOINT,如果指定了多个,只有最初一个被执行, 而且肯定会被执行

FROM centos
ENTRYPOINT ["ls", "-a"]
# nginx 镜像
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]

总结

  1. CMD命令会被启动容器时追加的命令替换执行,

2.ENTRYPOINT命令不会被启动容器时追加的命令替换,而是合并执行


我是 甜点 cc

酷爱前端,也喜爱专研各种跟本职工作关系不大的技术,技术、产品趣味宽泛且浓重,期待着一个守业机会。本号次要致力于分享集体经验总结,心愿能够给一小部分人一些渺小帮忙。

心愿能和大家一起致力营造一个良好的学习气氛,为了集体和家庭、为了我国的互联网物联网技术、数字化转型、数字经济倒退做一点点奉献。数风流人物还看中国、看今朝、看你我。

正文完
 0