龙芯移植docker指南

一、docker简介
    Docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github 上, 基于go语言并遵从Apache2.0协议开源。
    Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以>运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。
    Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令,用户用这些命令>实现跟 Docker daemon 交互。

    LXC是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的
    隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库
    网络管理相对简单,主要是基于namespace隔离

二、移植环境
软件环境:
(1)fedora25系统。下载地址:http://ftp.loongnix.org/os/fedora25/liveinst
(2)内核版本:4.4.30
硬件环境:
(1)开发板类型:Loongson-3A2000-780E-4w-V0.1-demo
(2)固件版本:loongson-PMON-V3.3.0

三、移植过程
    本次移植源码使用的为fedora社区的source rpm包,未采用github上的源码,版本为:docker-1.12.2-5
    以下方法均为制作rpm包的编译方法。

源码下载地址:https://kojipkgs.fedoraproject.org//packages/docker/1.12.2/5.git8f1975c.fc25/src/docker-1.12.2-5.git8f1975c.fc25.src.rpm

补丁下载地址:http://ftp.loongnix.org/os/fedora25/loongson/patches/0001-docker-1.12.2-5.git8f1975c-add-mips64le-support.patch
 安装源码包:
rpm -i docker-1.12.2-5.git8f1975c.fc25.src.rpm
安装依赖软件包:
dnf builddep ~/rpmbuild/SPECS/docker.spec
添加补丁文件到spec文件:~/rpmbuild/SPECS/docker.spec
编译生成docker软件包:
rpmbuild -bb ~/rpmbuild/SPECS/docker.spec
最终编译完成,生成rpm格式软件包。

四、使用注意事项
    由于docker对于内核的特性依赖问题,需要内核移植时开启相应的配置。可使用附脚本检测内核是否支持docker的运行。
使用方法:脚本后加上内核配置文件。
脚本下载地址:http://ftp.loongnix.org/os/fedora25/loongson/patches/docker-kernel.sh

    由于redhat系的系统内核中未集成UnionFS相关驱动,所以后端存储引擎是基于已有的Device Mapper技术。对于fedora/rhel这类没有相关驱动的系统,一般使用devicemapper驱动利用LVM的一些机制来模拟分层存储。这样的做法除了性能比较差之外,稳定性一般也不好,而且配置相>对复杂。不过这个问题在fedora26系统中得到了解决,在即将发布的fedora26中,将可以使用UnionFS。

五、二进制的直接使用
可以直接使用编译好的二进制包来安装
dnf install docker

注:本次移植完全使用golang编译器来编译,未使用gcc-go。

2 个评论

你好
通过http://ftp.loongnix.org/os/fedora25/liveinst下的frdora系统用http://ftp.loongnix.org/os/fed ... el.sh检查发现内核功能部分missing,该如何解决
这个只能自行配置内核编译了。

要回复文章请先登录注册