gentoo是一个高度定制化的系统,太灵活以至于对于新手来说很难上手。如果很不幸维护到这种系统,又想快速在上面部署应用,此时docker就是一个很好的解决方案。docker可以快速部署应用而不需要关心应用的依赖问题。当然纯粹使用docker部署些的应用只适用于小规模访问的应用,对于高并发,大规模访问的应用还是考虑kubernetes部署集群吧。
查看内核版本:
docker官方说docker要求内核版本3.8,建议3.10以上。对于因为只能通过升级gentoo的内核版本才能实现,升级内核是有风险的,有可能导致系统启动不来。升级内核的同时要勾选docker所要求的的内核模块。高版本gentoo可能以下有些模块没有了或者被替代了,编译内核的时候如果找不到以下部分内核模块也可以忽略。
如果内核满足要求请直接跳到第二部分。
wiki上说的docker要求的内核模块。
一:内核升级部分
以下演示如何升级gentoo内核:
更新包管理工具:
$ emerge-webrsync
$ emerge gentoo-sources
下载内核
$ eselect kernel
查看系统内的内核列表。
切换内核:
配置内核参数:
参数列表参考以下链接。
https://wiki.gentoo.org/wiki/Docker
内核重新编译安装。
$ genkernel all
挂载分区:
$ mount /boot
修改配置文件grub.conf。
$ vi /boot/grub/grub.conf #
grub.conf 配置文件内容如下(升级后的内核版本为4.9.95):
修改配置文件/boot/grub/menu.lst,同上。
重启系统。
$ reboot
二:docker安装。
1.更新portage树(软件包管理系统)
# emerge --sync
安装之前把配置清一遍:
# dispatch-conf //按u然后按q
2.查找可用的docker安装包,有Masked标志的是表示不稳定的软件包。默认安装没带Masked的软件包。
# emerge -S docker
3.使用emerge(portage字符界面管理工具)计算docker依赖。[ebuild N] 标志的都是依赖软件。
emerge -pv app-emulation/docker
4.逐个安装依赖(以下),红色表示必要的扩展,绿色表示可选的扩展,“-”号代表要移去的扩展标志。
使用"= " 安装特定版本的软件。
# USE="(-gccgo)" emerge "=dev-lang/go-1.10.3:0/1.10.3::gentoo"
# emerge "=app-emulation/docker-proxy-0.8.0_p20180411::gentoo"
# emerge "=dev-go/blackfriday-1.2_p20150720::gentoo"
# emerge "=dev-go/sanitized-anchor-name-0_pre20151027::gentoo"
# emerge "=dev-go/go-md2man-1.0.3::gentoo"
安装一下这个软件有可能报错masked by:package mask,这个报错死说这个包不稳定,那么这个时候就需要在/etc/portage/portage.unmask中将对应的包添加到文件夹中。 如果说
# USE="ambient seccomp -apparmor -hardened" emerge "=app-emulation/runc-1.0.0_rc5-r1::gentoo"
# USE="nls ssl -debug -libressl -static-libs" ABI_X86="(64) -32 (-x32)" emerge
"=app-crypt/rhash-1.3.6-r1::gentoo"
# USE="btrfs -hardened" emerge "=app-emulation/containerd-1.0.3::gentoo"
# USE="ncurses -doc -emacs -qt5 -server% -system-jsoncpp {-test} (-qt4%)" emerge "=dev-util/cmake-3.9.6::gentoo"
# USE="args static" emerge "=sys-process/tini-0.16.1::gentoo"
ps:如果在安装依赖过程中带有[blocks B]报错,说明系统中存在和依赖相互冲突的软件包,要先卸载系统中冲突软件包再执行安装即可。
4.安装docker
# emerge app-emulation/docker
5.将docker放入gentoo启动项。
# rc-update add docker
6.停止或者启动docker
查看docker版本
# docker --version
# /etc/init.d/docker stop //停止
# /etc/init.d/docker start //启动