最近折騰centos6,需要在其上配置docker,而以前都是在ubuntu上玩的,網上的文章沒有找到一個讓我直接能配成功的,多少都會有些坑,綜合了幾篇文章,折騰了老久,終于成功了。
我保證你按我下面的步驟一步步做,一定能一次成功!
1、因為selinux和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內核)
4、安裝docker-io
# yum install docker-io
6、要想docker正常運行還需要在/etc/fstab里增加cgroup文件系統
# echo "none /sys/fs/cgroup cgroup defaults 0 0" >> /etc/fstab
# mount /sys/fs/cgroup
只有重新啟動才能掛載/sys/fs/cgroup(因為當前運行的內核不支持cgroup),所以上面掛載的命令也可以不執行,但系統需要重新啟動。
7、重啟系統,選擇“3.10.5-3.el6.x86_64”內核
8、系統啟動后,確認當前運行的內核
# uname -r
3.10.5-3.el6.x86_64
# grep aufs /proc/filesystems
nodev aufs
9、以守護模式運行docker.io(在一個新的終端里)
# docker -d
10、重置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
常見錯誤解決范例:
例1
執行yum就開始報錯:
Error: Cannot retrieve metalink for repository: epel. Please ...
解決辦法都是編輯/etc/yum.repos.d/epel.repo,把基礎的恢復,鏡像的地址注釋掉
#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'"
可以執行下面的命令來重置docker的運行環境,從而解決上述問題。
pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
docker -d