http://ask.loongnix.org/?/article/81
实验环境
本文的实验都是在龙芯3A3000机器上。
操作系统是loongnix(Fedora21)20170726版本,
docker是1.12.2版本。
安装docker工具
loongnix已经编译好docker的安装包,通过网络源即可安装:
# yum install docker # service docker restart
制作docker镜像
制作镜像有很多种方法,本文使用了网络上提供的一个脚本文件,可以使制作镜像的过程简单、自动化的完成。
具体步骤如下:
- 下载脚本:使用wget命令下载这个文件
# wget https://raw.githubusercontent.com/docker/docker/master/contrib/mkimage-yum.sh2017-09-25 14:59:53 - 已保存 “mkimage-yum.sh”
- 为脚本增加可执行权限
# chmod a+x ./mkimage-yum.sh
- 使用脚本制作龙芯的Docker镜像
# ./mkimage-yum.sh -y /etc/yum.conf fedora21-base + yum -c /etc/yum.conf --installroot=/tmp/mkimage-yum.sh.iDuoUP -y clean all + tar --numeric-owner -c -C /tmp/mkimage-yum.sh.iDuoUP . + docker import - fedora21-base:21
脚本执行结束后,通过docker images的输出可见,已经正常生成了一个镜像,名称为“fedora21-base”:
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE fedora21-base 21 25bca293a55c 3 minutes ago 206.9 MB
创建docker容器并运行容器
有了fedora21-base镜像,现在就可以创建一个运行的容器了。使用docker run命令:
[root@localhost /]# docker run -i -t fedora21-base:21 /bin/bash [root@f38d097e3d72 /]#
docker run命令中,-i 代表容器可以接收键盘上的输入(主要用于在容器的命令上运行程序);-t 和 -i 配合使用。
容器运行成功后可以看见一个明显的变化,就是命令行提示符已经由本机的机器名称(localhost)变成了容器的ID(f38d097e3d72)。
至此,第一个龙芯容器创建成功,并且开始正常运行了!
现在可以在容器的命令行上输入任何命令了。注意,这样命令都是在容器的虚拟机中运行,不会对本机的文件系统造成任何破坏。
vi的乱码问题
通过上述方法创建的镜像,虽然可以正确的运行命令行,但是存在一个小问题,vi编辑器中不能正常显示中文。
为了演示这个问题,创建一个文本文件,其中包含中文(可以通过本机的输入法切换到中文进行输入“龙芯中科”四个字):
# echo 龙芯中科 > 1.txt
使用 vi 打开
# vi 1.txt
这样就显示出了问题:vi中打开的文本文件,原来的四个中文字符,现在都是乱码:
~Y~J�中~Q
解决方法
通过分析发现,问题原因是使用前文的脚本制作的镜像,缺少一些必要的文件,
具体来说:没有安装 glibc-common, LC_ALL 和 LANG 两项中编码格式不正确,在 /etc 目录下缺少 locale.conf 文件。对于一般用户,不需要具体了解这几个文件的含义。
解决方法是,再使用yum命令安装这些文件。具体步骤为:
# cd /usr/lib # mkdir locale # cd locale # yum reinstall glibc-common -y # echo zh_CN.UTF-8 > /etc/locale.conf
除此之外,每次进入容器或重启容器以后,还需在命令行执行如下两条命令:
export LC_ALL=zh_CN.UTF-8 export LANG=zh_CN.UTF-8
验证效果
经过上面的配置后,再使用 vi 打开文件,可以看到已经能够正常显示中文了。
# vi /1.txt 龙芯中科 ~ ~
上面的操作,对于容器重新启动后仍然有效。
总 结
本文描述在龙芯平台上搭建docker环境、制作基本镜像的方法,并成功运行容器。
并且解决了在容器中 vi 不能正常显示中文的问题。
可供开发者和部署服务器应用的管理员参考。
参考文献:
[1] 《 Docker 从零开始制作基础镜像[centos]》
http://www.cnblogs.com/2018/p/4633940.html
这个脚本自动的制作镜像,并且导入到本机的镜像仓库中。
原理仍然是 yum groupinstall "Core" --installroot="target"
自动到源上去下载包,保证是一个干净的环境。
然后自动打tar包,执行docker import操作。