最近折騰centos6,需要在其上配置docker,而以前都是在ubuntu上玩的,網(wǎng)上的文章沒(méi)有找到一個(gè)讓我直接能配成功的,多少都會(huì)有些坑,綜合了幾篇文章,折騰了老久,終于成功了。
我保證你按我下面的步驟一步步做,一定能一次成功!
1、因?yàn)閟elinux和LXC有沖突,所以需要禁用
# vi /etc/selinux/config
SELINUX=disabled
2、配置Fedora EPEL 源
# yum install http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
3、配置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內(nèi)核)
4、安裝docker-io
# yum install docker-io
6、要想docker正常運(yùn)行還需要在/etc/fstab里增加cgroup文件系統(tǒng)
# echo "none /sys/fs/cgroup cgroup defaults 0 0" >> /etc/fstab
# mount /sys/fs/cgroup
只有重新啟動(dòng)才能掛載/sys/fs/cgroup(因?yàn)楫?dāng)前運(yùn)行的內(nèi)核不支持cgroup),所以上面掛載的命令也可以不執(zhí)行,但系統(tǒng)需要重新啟動(dòng)。
7、重啟系統(tǒng),選擇“3.10.5-3.el6.x86_64”內(nèi)核
8、系統(tǒng)啟動(dòng)后,確認(rèn)當(dāng)前運(yùn)行的內(nèi)核
# uname -r
3.10.5-3.el6.x86_64
# grep aufs /proc/filesystems
nodev aufs
9、以守護(hù)模式運(yùn)行docker.io(在一個(gè)新的終端里)
# docker -d
10、重置docker的運(yùn)行環(huán)境,從而解決上述問(wèn)題。
# pkill docker
# iptables -t nat -F
# ifconfig docker0 down
# brctl delbr docker0
# docker -d
安裝了新的內(nèi)核,就存在啟動(dòng)時(shí)的選擇問(wèn)題,這個(gè)要通過(guò)修改/boot/grub/grub.conf文件來(lái)實(shí)現(xiàn)。
grub.conf 文件參數(shù)意義
default=1 # 默認(rèn)啟動(dòng)的內(nèi)核title, 0 表示是第一個(gè)
timeout=5 # 默認(rèn)等待時(shí)間
splashimage=(hd0,0)/grub/splash.xpm.gz # 指定菜單的背景圖片的路徑。為xpm格式,采用gzip壓縮,只能為14bits色
hiddenmenu # 隱藏菜單
title CentOS (2.6.32-358.el6.x86_64) # 標(biāo)題名,用戶(hù)可自定義
root (hd0,0) # 指定 grub 的根位置
# 指定 kernel 文件的位置,還要指出 root(系統(tǒng)啟動(dòng)后) 的位置,掛載方式 ro,這項(xiàng)很關(guān)鍵。
# 加載后會(huì)啟動(dòng) init 進(jìn)程。
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
# 在內(nèi)核啟動(dòng)過(guò)程中裝載根文件系統(tǒng)時(shí)有用
initrd /initramfs-2.6.32-358.el6.x86_64.img
常見(jiàn)錯(cuò)誤解決范例:
例1
執(zhí)行yum就開(kāi)始報(bào)錯(cuò):
Error: Cannot retrieve metalink for repository: epel. Please ...
解決辦法都是編輯/etc/yum.repos.d/epel.repo,把基礎(chǔ)的恢復(fù),鏡像的地址注釋掉
#baseurl 改成 baseurl
mirrorlist 改成 #mirrorlist
例2
"DNS/Networking Errors inside the docker"
[root@localhost ~]# docker -dns="8.8.8.8" run centos:6.4 yum install hiphop-php
2013/08/21 07:53:05 POST /v1.4/containers/create
2013/08/21 07:53:05 POST /v1.4/containers/6d9fef14bd1a/start
2013/08/21 07:53:05 POST /v1.4/containers/6d9fef14bd1a/attach?logs=1stderr=1stdout=1stream=1
Loaded plugins: fastestmirror
Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6arch=x86_64repo=os error was
14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"
可以執(zhí)行下面的命令來(lái)重置docker的運(yùn)行環(huán)境,從而解決上述問(wèn)題。
pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
docker -d