一)创建自己的CentOS

构建dockerfile的原理图

Docker Hub中99%的镜像都是从FROM scratch这个基础镜像过来的。然后配置需要的软件和配置来进行构建。

FROM #基础镜像、一切从这里开始构建

MAINTAINER #镜像作者信息 姓名+邮箱

RUN #镜像构建时需要运行的命令

EXPOSE #暴露端口配置

WORKDIR #镜像的工作目录

ENY #用来在构建镜像过程中设置环境变量

ADD #添加压缩包、如添加tomcat镜像、这个tomcat压缩包。add可以解压添加tar包

COPY #类似add、拷贝文件和目录到镜像中。copy不可以解压tar。

VOLUME #挂载的目录

CMD #指定这个容器启动的时候将要运行的命令 cmd ehco"6666"。只有最后一个会生效、可被替代。

ENTRYPOINT #指定这个容器启动的时候将要运行的命令、可以追加命令。设置容器的入口程序。

ONBUILD #当构建一个被继承dockerfile这个时候就会运行onbuild指令、为触发指令。

二)对比DockerHub的原CentOS

构建自己的mycentos、对比之前从DockerHub上pull下来的原生的centos、多了vim 和 network命令后、容量也变大了

docker build -f dockerfile -t mycentos:0.1 .(注意后面有个点.)

[root@xiaozhang1999 ~]# cd /home
[root@xiaozhang1999 home]# ll
total 0
drwxr-xr-x 2 root root 37 Jun 24 15:27 ceshi
drwxr-xr-x 2 root root 25 Jun 28 15:51 docker-test-volume
drwxr-xr-x 4 root root 30 Jun 25 14:55 mysql
[root@xiaozhang1999 home]# mkdir dockfile
[root@xiaozhang1999 home]# ll
total 0
drwxr-xr-x 2 root root 37 Jun 24 15:27 ceshi
drwxr-xr-x 2 root root 25 Jun 28 15:51 docker-test-volume
drwxr-xr-x 2 root root 6 Jun 29 14:04 dockfile
drwxr-xr-x 4 root root 30 Jun 25 14:55 mysql
[root@xiaozhang1999 home]# cd dockfile
# 编写dockerfile文件
[root@xiaozhang1999 dockfile]# vim dockerfile
[root@xiaozhang1999 dockfile]# cat dockerfile
FROM centos MAINTAINER ztsq<467605642@qq.com> ENV MYPATH /usr/local WORKDIR $MYPATH RUN yum -y install vim
RUn yum -y install net-tools EXPOSE 80 CMD echo $MYPATH
CMD echo "end"
CMD /bin/bash
# 构建镜像
[root@xiaozhang1999 dockfile]# docker build -f dockerfile -t mycentos:0.1 .
Sending build context to Docker daemon 2.048kB
Step 1/10 : FROM centos
---> 300e315adb2f
Step 2/10 : MAINTAINER ztsq<467605642@qq.com>
---> Running in 8cddf9155f19
Removing intermediate container 8cddf9155f19
---> f11b3a959525
Step 3/10 : ENV MYPATH /usr/local
---> Running in 8ed0f33e60ac
Removing intermediate container 8ed0f33e60ac
---> 8681a8a7cf17
Step 4/10 : WORKDIR $MYPATH
---> Running in 171c056e7c56
Removing intermediate container 171c056e7c56
---> 4263a8ec2187
Step 5/10 : RUN yum -y install vim
---> Running in bc36de56fec5
# 查看自己构建的mycentos
[root@xiaozhang1999 dockfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos 0.1 a4023f177785 13 minutes ago 295MB
# 启动mycentos
[root@xiaozhang1999 dockfile]# docker run -it a4023f177785 /bin/bash
# 验证有vim命令
[root@dadc1e42f05f local]# vim
# 工作目录为workdir指定的.而不是根目录/。
[root@dadc1e42f05f local]# pwd
/usr/local

构建成功

Successfully built a4023f177785

Successfully tagged mycentos:0.1

对比之前原生的centos

查看镜像的变更历史:docker history containerid

构建自己的dockerfile的更多相关文章

  1. (干货)构建镜像之Dockerfile

    Dockerfile是一个文本文件,记录了镜像构建的所有步骤. 饭提示:学习Dockerfile构建镜像,就是在学习Dockerfile文件构建的命令+shell脚本语句 Dockerfile简单介绍 ...

  2. docker 构建php-fpm IMages(dockerfile)

    好久没写blog   做什么?   复习nginx  zabbix  docker-compos mariadb  学习 jenkins ansible ELK  k8s (kubeadm)  好了也 ...

  3. docker:Dockerfile构建LNMP平台

    docker:Dockerfile构建LNMP平台   1.dockerfile介绍  Dockerfile是Docker用来构建镜像的文本文件,包含自定义的指令和格式.可以通过docker buil ...

  4. dockerfile 镜像构建

    1.镜像的构建有手动与自动方式,这里我们介绍自动化的构建方式 ,dockerfile常用指令如下 2.构建指令build Usage: docker image build [OPTIONS] PAT ...

  5. [Linux] 编写Dockerfile文件自动构建镜像

    Dockerfile是一个文本文件,按顺序包含构建给定镜像所需的所有命令Docker通过读取Dockerfile中的指令自动构建图像 . Dockerfile遵循特定的格式和指令集,您可以在Docke ...

  6. Docker镜像构建文件Dockerfile及相关命令介绍

    使用docker build命令或使用Docker Hub的自动构建功能构建Docker镜像时,都需要一个Dockerfile文件.Dockerfile文件是一个由一系列构建指令组成的文本文件,doc ...

  7. DockerFile构建镜像和Docker仓库

    利用commit理解镜像构成 注意: docker commit 命令除了学习之外,还有一些特殊的应用场合,比如被入侵后保存现 场等.但是,不要使用 docker commit 定制镜像,定制镜像应该 ...

  8. Dockerfile多阶段构建

    多阶段构建 之前的做法: 在Docker17.05版本之前,构建Docker镜像,通常采用两种方式: 1.全部放入一个Dockerfile 一种方式是将所有的构建过程全都包含在一个Dockerfile ...

  9. Dockerfile构建实践

    Dockerfile构建实践 本文介绍了用于构建有效图像的推荐最佳实践和方法. Docker通过从一个Dockerfile文本文件中读取指令来自动构建映像,该文本文件按顺序包含构建给定映像所需的所有命 ...

随机推荐

  1. 为鸿蒙OS说两句公道话(我对鸿蒙OS的一些看法)

    为鸿蒙说两句公道话 今天看了鸿蒙系统的评测,看完后我感觉很欣慰,为什么这么说 ? 不是很多人吐槽鸿蒙是 Android 套壳吗 ?或者叫鸿蒙 UI 吗?说鸿蒙没有自己的核心技术.看了鸿蒙系统的设计,底 ...

  2. 【进阶之路】多线程条件下分段处理List集合的几种方法

    这两个月来因为工作和家庭的事情,导致一直都很忙,没有多少时间去汲取养分,也就没有什么产出,最近稍微轻松了一点,后续的[进阶之路]会慢慢回到正轨. 开门见山的说,第一次接触到多线程处理同一个任务,是使用 ...

  3. 解决1字节的UTF-8序列的字节1无效问题

    学习路上碰到了这个异常 解决方法如下: 1.手动将< ? xml version="1.0" encoding="UTF-8"?>中的UTF-8更改 ...

  4. Linux 中的 守护进程

    什么是守护进程 脱离控制终端的,运行于后端的进程,由系统管理的,按计划自动启动/停止/重启,用以执行特定的任务. 为什么要有守护进程? 在某些需求场景下,我们希望某项系统任务能够按计划按预期,始终/自 ...

  5. Step By Step(Lua输入输出库)

    Step By Step(Lua输入输出库) I/O库为文件操作提供了两种不同的模型,简单模型和完整模型.简单模型假设一个当前输入文件和一个当前输出文件,他的I/O操作均作用于这些文件.完整模型则使用 ...

  6. 共享CUDA内存

    共享CUDA内存 进程间共享 此功能仅限于Linux. 将设备阵列导出到另一个进程 使用CUDA IPC API,可以与同一台计算机上的另一个进程共享设备阵列.为此,请使用.get_ipc_handl ...

  7. TensorRT 7.2.1 开发概要(上)

    TensorRT 7.2.1 开发概要(上) Abstract 这个TysRR7.2.1开发者指南演示了如何使用C++和Python API来实现最常用的深层学习层.它展示了如何使用深度学习框架构建现 ...

  8. pytest初始化与清除fixture(二)

    @pytest.fixture用法 1.导入pytest模块:import pytest 2.调用装饰器函数:@pytest.fixture(callable_or_scope=None,*args, ...

  9. OpenCV开发实战1——抖音哈哈镜效果

    前言 在抖音中,我们经常看到各种抖音玩家都喜欢使用哈哈镜效果.那么什么是哈哈镜呢? 在现实生活中,哈哈镜是指一种表面凹凸不平的镜子,可以反应出人像及物体的扭曲面貌.简单点来说就是拉伸人脸(物件),或者 ...

  10. 实验5、Flask设计模式和Web服务体验

    1. 实验内容 Flask appbuilder包括基本的表单验证,内置管理模块.本节主要学习Flask appbuilder的后台管理模块使用和对Flask设计模式拓展作简要介绍 2. 实验要点 掌 ...