构建自己的centos镜像

docker pull centos下载下来的镜像都是基础版本,缺少很多常用的命令功能,比如:llvim等等,

下面介绍制作一个功能较全的自己的centos镜像。

步骤

1、编写dockerfile文件

FROM centos
MAINTAINER xiao<example@163.com>
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

热爱前端,也喜欢专研各种跟本职工作关系不大的技术,技术、产品兴趣广泛且浓厚,等待着一个创业机会。本号主要致力于分享个人经验总结,希望可以给一小部分人一些微小帮助。

希望能和大家一起努力营造一个良好的学习氛围,为了个人和家庭、为了我国的互联网物联网技术、数字化转型、数字经济发展做一点点贡献。数风流人物还看中国、看今朝、看你我。

Docker | dockerfile构建centos镜像,以及CMD和ENTRYPOINT的区别的更多相关文章

  1. Docker学习(六)Dockerfile构建自定义镜像

    Docker学习(六)Dockerfile构建自定义镜像 前言 通过前面一篇文章可以知道怎么去使用一个镜像搭建服务,但是,如何构造自己的一个镜像呢,docker提供了dockerfile可以让我们自己 ...

  2. 使用dockerfile构建nginx镜像

    使用dockerfile构建nginx镜像 docker构建镜像的方法:   commit.dockerfile 1.使用commit来构建镜像: commit是基于原有镜像基础上构建的镜像,使用此方 ...

  3. Dockerfile构建私有镜像

    构建第一个镜像 镜像的定制实际上就是定制每一层所添加的配置,文件.我们可以把每一层修改,安装,构建,操作的命令都写入一个脚本,这个脚本就是Dockerfile.Dockerfile是一个文本文件,其内 ...

  4. Dockerfile构建nginx镜像

    Dockerfile构建nginx镜像 [root@bogon ~]# mkdir /opt/docker-file [root@bogon ~]# cd /opt/docker-file/ [roo ...

  5. dockerfile构建Tomcat镜像

    dockerfile构建Tomcat镜像 一.镜像分层概念 二.制作tomcat镜像 2.1.创建分层目录 [root@node2 ~]# mkdir /app/{web/{nginx,tomcat, ...

  6. Dockerfile构建jar镜像

    dockerDockerfilejar包docker-compose 一.安装docker和compose 二.准备jar包 三.编写配置文件 1. Dockerfile 2. docker-comp ...

  7. Docker系列(23)- CMD和ENTRYPOINT的区别

    CMD和ENTRYPOINT的区别 CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代 ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令 测试CMD ...

  8. Docker 使用Dockerfile构建redis镜像

    Dockerfile实现: FROM centos: MAINTAINER hongdada "hongdaqi159505@gmail.com" WORKDIR /home RU ...

  9. Docker 使用Dockerfile构建tomcat镜像

    Dockerfile概念: 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么之前提及的无法重复的问题. ...

随机推荐

  1. Jetpack Compose学习(8)——State及remeber

    原文地址: Jetpack Compose学习(8)--State状态及remeber关键字 - Stars-One的杂货小窝 之前我们使用TextField,使用到了两个关键字remember和mu ...

  2. 当我们谈论算法我们在谈论什么:由疫情核酸检测想到的分治算法(Divide-and-Conquer)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_159 北京的疫情一波未平一波又起,由此看来,战"疫"将是一场旷日持久的战争,绝不能掉以轻心.轻易言胜.病毒随时 ...

  3. 那些舍不得删除的 MP3--批量修改mp3的ID3tag

    整理电脑时发现很多mp3.那是大约2001年至2009年之间.那个时候大家听歌,还是习惯从网上下载mp3.虽然现在听歌比从前方便多了,简单到只需在APP中输入歌名,但用播放器听mp3的感觉是完全不同的 ...

  4. mybatis 04: mybatis对象分析 + 测试代码简化 + 配置优化

    MyBatis对象分析 测试代码示例 package com.example.test; import com.example.pojo.Student; import org.apache.ibat ...

  5. 从零搭建云原生技术kubernetes(K8S)环境-通过kubesPhere的AllInOne方式

    前言 k8s云原生搭建,步骤有点多,但通过kubesphere,可以快速搭建k8s环境,同时有一个以 Kubernetes 为内核的云原生分布式操作系统-kubesphere,本文将从零开始进行kub ...

  6. 使用Fiddler劫持网络资源为前端开发助力(示例:Dynamic CRM 表单开发 也能热更新? )

    背景: 使用过vue开发的童鞋应该都知道,在开发vue项目的过程中,有个叫"热更新"的功能特别爽,在传统html开发到初次接触vue时,才发现原来前端开发可以这么香.热更新的表现形 ...

  7. redis淘汰策略和过期策略

    淘汰策略 https://blog.csdn.net/qq_55961709/article/details/124568269 LRU算法和LFU算法的区别: LRU:最近最少使用,淘汰时间长没有使 ...

  8. LibTorch 多项分布

    最近在学习过程中需要对服从某种分布的离散型随机变量进行抽样,在LibTroch中查到了torch::multinomial(多项分布),该方法的接口如下: at::Tensor multinomial ...

  9. 跟羽夏学 Ghidra ——数据

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...

  10. SpringBoot Xml转Json对象

    一.导入需要的依赖 <dependency> <groupId>maven</groupId> <artifactId>dom4j</artifa ...