构建本人的 centos 镜像
docker pull centos
下载下来的镜像都是根底版本,短少很多罕用的命令性能,比方:ll
、vim
等等,
上面介绍制作一个性能较全的本人的 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
这时,ifconfig
、vim
命令都能够应用了
4、查看镜像构建历史记录
docker history imageID
CMD 和 ENTRYPOINT 的区别
编写 CMD 测试 dockerfile 文件
- 编写 dockerfile 文件
FROM centos
CMD ["ls", "-a"]
- 构建镜像
docker build -f ./dockerfile -t cmd-test .
- 启动镜像
docker run imageID/iamgeName
测试发现,启动镜像时追加的命令替换了 CMD
命令,如下图所示:
编写 ENTRYPOINT 测试 dockerfile 文件
每个 Dockerfile
只能有一个ENTRYPOINT
,如果指定了多个,只有最初一个被执行, 而且肯定会被执行
FROM centos
ENTRYPOINT ["ls", "-a"]
# nginx 镜像
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]
总结
CMD
命令会被启动容器时追加的命令替换执行,
2.ENTRYPOINT
命令不会被启动容器时追加的命令替换,而是合并执行
我是 甜点 cc
酷爱前端,也喜爱专研各种跟本职工作关系不大的技术,技术、产品趣味宽泛且浓重,期待着一个守业机会。本号次要致力于分享集体经验总结,心愿能够给一小部分人一些渺小帮忙。
心愿能和大家一起致力营造一个良好的学习气氛,为了集体和家庭、为了我国的互联网物联网技术、数字化转型、数字经济倒退做一点点奉献。数风流人物还看中国、看今朝、看你我。