Dockerfile实例自定义CentOS

本文将介绍怎样使用Dockerfile自定义CentOS,该镜像将继承centos镜像,然后使用yum install安装vim和net-tools(ifconfig命令)。

我们自定义个自己的centos,由于Docker中基础centos镜像是一个centos最小内核版本,大小只有几百兆。因此,该centos中是没有 vim 和 ifconfig 命令的,我们自定义的 centos 将安装vim 和 ifconfig(即net-tools)工具包。

第一步:创建Dockerfile文件

Dockerfile文件内容如下:

# 继承基础的centos镜像
FROM centos
# 指定作者信息
MAINTAINER myName<myName@163.com>
# 定义环境变量
ENV mypath /tmp
# 设置当前的工作目录,通过环境变量指定
WORKDIR $mypath
 
# 运行 yum 命令,安装 vim 和 net-tools 工具
RUN yum -y install vim
RUN yum -y install net-tools
 
# 暴露 80 端口,运行容器时就可以使用“-p 宿主机端口:容器中端口”指定端口映射
EXPOSE 80
 
# 容器启动时运行的指令
# 启动容器时,只运行最后一条CMD指令
CMD echo $mypath
CMD echo "success-------------------------ok"
CMD /bin/bash

第二步:根据Dockerfile构建镜像

通过 docker build -f Dockerfile2 -t mycentos .  命令构建镜像。其中,-f 用来指定你的 Dockerfile 文件路径;-t 用来指定创建镜像的名称;运行过程如下:

$ docker build -f Dockerfile2 -t mycentos .
 Sending build context to Docker daemon  30.21kB
 Step 1/10 : FROM centos
 latest: Pulling from library/centos
 8ba884070f61: Pull complete
 Digest: sha256:a799dd8a2ded4a83484bbae769d97655392b3f86533ceb7dd96bbac929809f3c
 Status: Downloaded newer image for centos:latest
  ---> 9f38484d220f
 Step 2/10 : MAINTAINER myName<myName@163.com>
  ---> Running in a6a9d55e4d45
 Removing intermediate container a6a9d55e4d45
  ---> d7381d0b5a77
 Step 3/10 : ENV mypath /tmp
  ---> Running in 8869a2f9705b
 Removing intermediate container 8869a2f9705b
  ---> 2fb2ec363a4a
 Step 4/10 : WORKDIR $mypath
  ---> Running in 2034e28d3c11
 Removing intermediate container 2034e28d3c11
  ---> ed1ec63c5f95
 Step 5/10 : RUN yum -y install vim
  ---> Running in a410721bf127
 Loaded plugins: fastestmirror, ovl
 Determining fastest mirrors
  * base: mirrors.aliyun.com
  * extras: mirrors.163.com
  * updates: mirrors.aliyun.com
 Resolving Dependencies
 --> Running transaction check
 ...more...
 Dependency Installed:
   gpm-libs.x86_64 0:1.20.7-5.el7
   ...more...
   which.x86_64 0:2.20-7.el7
 
 Complete!
 Removing intermediate container a410721bf127
  ---> 14d5b8e356be
 Step 6/10 : RUN yum -y install net-tools
  ---> Running in 9e42eb5b854c
 Loaded plugins: fastestmirror, ovl
 Loading mirror speeds from cached hostfile
  * base: mirrors.aliyun.com
  * extras: mirrors.163.com
  * updates: mirrors.aliyun.com
 Resolving Dependencies
 --> Running transaction check
 ...more...
 Installed:
   net-tools.x86_64 0:2.0-0.24.20131004git.el7
 
 Complete!
 Removing intermediate container 9e42eb5b854c
  ---> 7488c7837498
 Step 7/10 : EXPOSE 80
  ---> Running in 59fb82c9351a
 Removing intermediate container 59fb82c9351a
  ---> 2208c2b5c5a4
 Step 8/10 : CMD echo $mypath
  ---> Running in 4e6e1f1f38b0
 Removing intermediate container 4e6e1f1f38b0
  ---> 79ffde662850
 Step 9/10 : CMD echo "success-------------------------ok"
  ---> Running in f3da03cff7e4
 Removing intermediate container f3da03cff7e4
  ---> 3c2beb3a7025
 Step 10/10 : CMD /bin/bash
  ---> Running in 79e70ac3bb38
 Removing intermediate container 79e70ac3bb38
  ---> 1a7a1d7e2839
 Successfully built 1a7a1d7e2839
 Successfully tagged mycentos:latest

注意:如果安装 vim 和 net-tools 过程中出现告警信息,不要理会。

使用“docker images”查看刚刚构建的镜像。如下:

# 查看我们刚才创建的镜像 mycentos
$ docker images mycentos
REPOSITORY    TAG       IMAGE ID        CREATED             SIZE
mycentos      latest    0fffcc4c0210    18 seconds ago      467MB

第三步:运行容器

最后我们可以使用“docker run -it”命令运行镜像。如下:

# 运行容器,仔细查看,进入容器直接进入了 /tmp 目录
$ docker run -it mycentos
[root@e8c209d5b105 tmp]$
 
# 映射端口到 8080
$ docker run -it -p 8080:80 mycentos
[root@e7609681763d tmp]$
我们一定要给自己提出这样的任务:第一,学习,第二是学习,第三还是学习。 —— 列宁
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号