Centos虚拟机系统装Docker的每一步坑

今天由于之前严重可怕的好奇心和做的错误决定,开始接受任务,在虚拟机上装Docker,但是才发现这是入坑的第一步,而且,网上教程真的不适用,理解起来挺困难,内心绝望无比。痛定思痛,决心自己写个文章,祝大家一站到底。

1.打开虚拟机Terminal, 输入uname -r, 然后你会发现,如果是3.1一下,那么恭喜你了,耐心看完这个教程,估计从下午到晚上你就又事干了。

进入管理员高级用户等级:     # su -

输入密码:    XXXXXXX

2.开始安装yum,该包依赖于python

查看、卸载已安装的yum包

查看已安装的yum包

#rpm –qa|grep yum

卸载软件包

#rpm –e –nodeps yum

3.下载安装依赖包wget path

下载地址http://centos.ustc.edu.cn/centos/6.5/os/x86_64/Packages/,如果打不开,选择镜像:

http://mirrors.163.com/centos/6/os/x86_64/Packages/

找到对应包如:python-2.6.6-51.el6.x86_64.rpm python-iniparse-0.3.1-2.1.el6.noarch.rpm

源地址可以从网上找一些速度比较快的,自身测试这两个地址速度还不错。包的名字可能跟上面不同,主要是版本和操作系统位数的不同,建议不要在页面搜索全部,ctrl + F 搜索,如第一个包只搜索python,第二个包搜索python-iniparse。

4.安装 #rpm –ivh python-2.6.6-51.el6.x86_64.rpm python-iniparse-0.3.1-2.1.el6.noarch.rpm

下载安装yum包

下载地址http://centos.ustc.edu.cn/centos/6.5/os/x86_64/Packages/,找不到打开镜像:

http://mirrors.163.com/centos/6/os/x86_64/Packages/

找到对应包如:http://centos.ustc.edu.cn/centos/6.5/os/x86_64/Packages/ 

yum-plugin-fastestmirror-1.1.30-14.el6.noarch.rpm yum-metadata-parser-1.1.2-16.el6.x86_64.rpm

yum-3.2.29-40.el6.centos.noarch.rpm

#rpm-ivh yum-*

若安装失败可重新输入此命令并加参数--nodeps –force

查找包的方法与步骤二相同,在此不做赘述。

5.此处使用vi, 方式是vi + 命令行,上下左右键移动光标,i开启改写,esc退出改写,:wq保存并关闭。

更改yum源

下载配置文件

http://mirrors.163.com/.help/CentOS6-Base-163.repo  将此配置文件替换/etc/yum.repos.d同名文件

编辑配置文件

#cd /etc/yum.repos.d

#vi CentOS-Base.repo

6.将文件中$releasever改成对应版本(6/6.5)将源mirrorlist.centos.org改为使用的yum源centos.ustc.edu.cn/mirrors.163.com

保存配置文件即可

7.清理yum缓存

#yum clean all

将服务器软件包信息缓存至本地,提高搜索安装效率

#yum makecache

 若上面两条命令有报错,一般为配置文件更改不完全,可根据错误信息查找配置文件中更改错误

 测试

#yum install vim

 完成

8.你以为的万事大吉也只是你以为,接下来还有刺激的

9.由于内核不够,接下来扩内核

 取消selinux,因为它会干扰lxc的正常功能
sudo vim /etc/selinux/config 
SELINUX=disabled
SELINUXTYPE=targeted

配置Fedora EPEL 源

# yum install http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm

配置hop5.in源

# cd /etc/yum.repos.d
# wget http://www.hop5.in/yum/el6/hop5.repo
# yum install kernel-ml-aufs kernel-ml-aufs-devel (yum安装带aufs模块的3.10内核)

安装docker-io

# yum install docker-io

要想docker正常运行还需要在/etc/fstab里增加cgroup文件系统

# echo "none /sys/fs/cgroup cgroup defaults 0 0" >> /etc/fstab

# mount /sys/fs/cgroup

只有重新启动才能挂载/sys/fs/cgroup(因为当前运行的内核不支持cgroup),所以上面挂载的命令也可以不执行,但系统需要重新启动。

重启系统,选择“3.10.5-3.el6.x86_64”内核

系统启动后,确认当前运行的内核

# uname -r
3.10.5-3.el6.x86_64
# grep aufs /proc/filesystems 

nodev aufs

以守护模式运行docker.io(在一个新的终端里)

# docker -d 

重置docker的运行环境,从而解决上述问题。

# pkill docker
# iptables -t nat -F
# ifconfig docker0 down
# brctl delbr docker0

# docker -d

安装了新的内核,就存在启动时的选择问题,这个要通过修改/boot/grub/grub.conf文件来实现。

grub.conf 文件参数意义

default=1 # 默认启动的内核title, 0 表示是第一个 
timeout=5 # 默认等待时间 
splashimage=(hd0,0)/grub/splash.xpm.gz # 指定菜单的背景图片的路径。为xpm格式,采用gzip压缩,只能为14bits色 
hiddenmenu # 隐藏菜单 
title CentOS (2.6.32-358.el6.x86_64) # 标题名,用户可自定义 
root (hd0,0) # 指定 grub 的根位置 
# 指定 kernel 文件的位置,还要指出 root(系统启动后) 的位置,挂载方式 ro,这项很关键。 
# 加载后会启动 init 进程。 
kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DM LANG=en_US.UTF-8 rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg0/root KEYBOARDTYPE=pc KEYTABLE=us rhgb crashkernel=auto quiet rhgb quiet 
# 在内核启动过程中装载根文件系统时有用 
initrd /initramfs-2.6.32-358.el6.x86_64.img 



如果无论你怎么做都无法升级内核,那就那这个步骤来:

安装软件

编译安装新内核,依赖于开发环境和开发库

yum grouplist   //查看已经安装的和未安装的软件包组,来判断我们是否安装了相应的开发环境和开发库;

yum groupinstall "Development Tools"   //一般是安装这两个软件包组,这样做会确定你拥有编译时所需的一切工具

yum install ncurses-devel    //你必须这样才能让 make *config 这个指令正确地执行

yum install qt-devel    //如果你没有 X 环境,这一条可以不用

yum install hmaccalc zlib-devel binutils-devel elfutils-libelf-devel    //创建 CentOS-6 内核时需要它们

编译内核

获取并解压内核源码,配置编译项

去 http://www.kernel.org 首页,可以看到有stable, longterm等版本,longterm是比stable更稳定的版本,会长时间更新,因此我选择 3.18.19

[root@root ~]# tar -xf linux-3.18.19.tar.xz

[root@root ~]# cd linux-3.18.19

我们在系统原有的内核配置文件的基础上建立新的编译选项,所以复制一份到当前目录下,命名为.config

[root@root llinux-3.18.19]# cp /boot/config-2.6.32-358.el6.x86_64 .config  ( 注意要在解压缩的包的目录里面)

sh -c 'yes "" | make oldconfig'


##########################################################################################

######make oldconfig会读取当前目录下的.config文件,在.config文件里没有找到的选项则提示用户填写。有的文档里介绍使用make memuconfig,它便是根据需要手动选择菜单定制模块,在这里我们不需要。make oldconfig会在生成新的.config之前备份为.config.old,并生成新的.config文件。

######(上面这个命令就自动按之前你装的os的模块来自动编译了sh -c 'yes "" | make oldconfig')

##########################################################################################


开始编译

[root@root linux-3.10.58]# make -j4 bzImage  //生成内核文件

[root@root linux-3.10.58]# make -j4 modules  //编译模块

[root@root linux-3.10.58]# make -j4 modules_install  //编译安装模块

-j后面的数字是线程数,用于加快编译速度,一般的经验是,逻辑CPU,就填写那个数字,例如有8核,则为-j8。

安装

make install


实际运行到这一步时,出现

modinfo: could not find module vmware_balloon,但是不影响内核安装,是由于vsphere需要的模块没有编译,要避免这个问题,需要在make之前时修改.config文件,加入

HYPERVISOR_GUEST=y

CONFIG_VMWARE_BALLOON=m 


修改Grub引导顺序

vim /etc/grub.conf

数一下刚刚新安装的内核在哪个位置,从0开始,然后设置default为那个数字,一般新安装的内核在第一个位置,所以设置default=0


reboot




  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值