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 指定的基础镜像。
创建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文件时会提示基础镜像不存在的错误。
以上论述可供开发者和部署服务器应用的管理员参考。