(精品)(Docker系列之三)龙芯Fedora21平台制作feodra21-tools docker镜像

在按照本文的方式制作镜像之前,首先要先创建基础镜像fedora21-base,可以参考:
http://ask.loongnix.org/?/article/81 


 创建feodra21-tools镜像的必要性
 
在已经创建的feodra21-base镜像中不包含常用命令,如:ifconfig、w3m、wget、vim等命令。当在feodra21-base容器的命令行中输入这些命令时,会有错误提示,如下:
[root@c6f646635bf1 /]# ifconfig
bash: ifconfig: command not found
[root@c6f646635bf1 /]# w3m
bash: w3m: command not found
[root@c6f646635bf1 /]# wget
bash: wget: command not found
[root@c6f646635bf1 /]# vim
bash: vim: command not found








所以,还需要在创建一个只包含基本命令的镜像。
 实验环境
 
本文的实验都是在龙芯3A3000机器上。
操作系统是loongnix(Fedora21)20170726版本,
docker是1.12.2版本。
 
镜像内容
 
feodra21-tools镜像中包含一些常用命令,如:ifconfig、w3m、wget、vim
 
制作镜像前期准备
 
本文将演示使用Dockerfile如何创建镜像,Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。
在宿主机下 /root/image 目录下创建一个 tools 文件夹,将Dockerfile和run.sh文件存到 tools 文件夹内,具体步骤为:
# mkdir /root/image/tools  -p
# cd /root/image/tools/
# vi run.sh




编写run.sh文件,如下代码所示:
#!/bin/bash

export LC_ALL=zh_CN.UTF-8
export LANG=zh_CN.UTF-8

/bin/bash
编写Dockerfile文件,如下代码所示:
# vi Dockerfile

以下是Dockerfile包含的内容:

FROM fedora21-base:21

RUN yum install -y "net-tools"
RUN yum install -y "w3m"
RUN yum install -y "wget"
RUN yum install -y "vim-enhanced"
RUN yum install -y "tar"
RUN yum install -y "git"

RUN mkdir /usr/lib/locale -p
RUN /bin/sh -c 'cd /usr/lib/locale && sleep 2 && yum reinstall -y "glibc-common"'
RUN echo zh_CN.UTF-8 > /etc/locale.conf

ADD run.sh /
RUN chmod 777 /run.sh
CMD ["/run.sh"]

 
Dockerfile文件描述的几个解释:
           1、FROM:  FROM指令指定的基础image,本文中指定已经创建好的fedora21-base镜像,格式为:                          镜像名称:镜像标签(TAG)

           2、RUN:  RUN可以运行任何被基础image支持的命令。本文中运行yum install 命令,下载安装                                  net_tools、w3m、wget、vim。
 
           3、CMD: 设置指令,用于container启动时指定的操作。
 
           4、CMD:设置指令,用于container启动时指定的操作。本文中在container启动时运行ADD复制的run.sh文件。

运行Dockerfile文件创建镜像
  • 通过docker build命令创建镜像,代码如下所示:
# docker build -t feodra21-tools .
当Dockerfile文件中的四条RUN命令都Complete以后,最后会有如下输出,代表创建镜像成功:
Removing intermediate container da84d9ffbcd7Successfully built 204d157f7074
  • 验证feodra21-tools镜像是否创建成功,代码如下:

# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
feodra21-tools latest 204d157f7074 3 minutes ago 487.2 MB
fedora21-base 21 099b24f7ff5a 33 hours ago 206.9 MB
通过查看docker images的执行结果可以确定feodra21-tools镜像创建成功,fedora21-base镜像就是Dockerfile文件中FROM 指定的基础镜像。
 

d1.png


 
创建docker容器
 
创建好feodra21-tools镜像,就可以创建容器了,代码如下:
[root@localhost tools]# docker run -i -t feodra21-tools
[root@34df78e5bf37 /]#
docker run命令中,-i 代表容器可以接收键盘上的输入(主要用于在容器的命令上运行程序);-t 和 -i 配合使用。
 容器运行成功后可以看见一个明显的变化,就是命令行提示符已经由本机的机器名称(localhost)变成了容器的ID(34df78e5bf37)。
 
至此,龙芯feodra21-tools容器创建成功,并且开始正常运行了!

验证安装的命令是否可以正常使用
 
在验证安装的命令是否可以正常使用,可以在容器里的命令行分别输入:ifconfig、w3m、wget、vim。只要不提示 “command not found” 就代表安装成功,并可以正常使用,使用ifconfig举例测试:
# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.18.0.2 netmask 255.255.0.0 broadcast 0.0.0.0
inet6 fe80::42:acff:fe12:2 prefixlen 64 scopeid 0x20<link>
ether 02:42:ac:12:00:02 txqueuelen 0 (Ethernet)
RX packets 3 bytes 238 (238.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4 bytes 328 (328.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

 
总结
 
本文描述在龙芯平台上通过Dockerfile制作镜像的方法,并成功运行容器。
如果没有创建fedora21-base,在执行Dockerfile文件时会提示基础镜像不存在的错误。
以上论述可供开发者和部署服务器应用的管理员参考。

0 个评论

要回复文章请先登录注册