龙芯Fedora21平台制作feodra21-tools docker镜像

 http://ask.loongnix.org/?/article/82

在按照本文的方式制作镜像之前,首先要先创建基础镜像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举例测试:

扫描二维码关注公众号,回复: 4734748 查看本文章
# 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文件时会提示基础镜像不存在的错误。
以上论述可供开发者和部署服务器应用的管理员参考。

1.png

猜你喜欢

转载自blog.csdn.net/weixin_40065369/article/details/85530426
今日推荐