欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在 CentOS 6.4(64位) 安装 docker.io

程序员文章站 2022-05-31 11:38:14
...

Docker.io 是轻量级的“容器引擎+映像仓库”,在LXC(linux轻量级容器)的基础上构建,可以运行任何应用程序。

img

docker.io的核心层由以下几个部分组成:

1、可执行程序,“/usr/bin/docker”

2、docker.io网站上有一系列创建好的操作系统和应用程序映像

3、AUFS(另一个统一文件系统)来实现文件系统的快照,文件变化,控制只读或读写的需求。

4、LXC(Linux轻量级容器)

5、Cgroups(各种资源和命名空间的管理)

在本文写作的时候,最新版本是0.5.3,但目前开发很活跃,一些功能和特性可能在新版本中会发生变化。

按下面的步骤安装docker.io:

0、安装centos6.x

1、因为selinux和LXC有冲突,所以需要禁用

[[email protected] ~]# cat /etc/selinux/config # This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:#       enforcing - SELinux security policy is enforced.#       permissive - SELinux prints warnings instead of enforcing.#       disabled - SELinux is fully disabled.SELINUX=disabled# SELINUXTYPE= type of policy in use. Possible values are:#       targeted - Only targeted network daemons are protected.#       strict - Full SELinux protection.SELINUXTYPE=targeted

2、配置Fedora EPEL

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

3、配置hop5.in源

cd /etc/yum.repos.dsudo wget http://www.hop5.in/yum/el6/hop5.repo

4、安装docker-io

[[email protected] ~]# yum install docker-ioLoaded plugins: fastestmirror, securityLoading mirror speeds from cached hostfile * base: centos.excellmedia.net * epel: kartolo.sby.datautama.net.id * extras: centos.excellmedia.net * updates: centos.excellmedia.netSetting up Install ProcessResolving Dependencies--> Running transaction check---> Package docker-io.x86_64 0:0.5.3-4.el6 will be installed--> Processing Dependency: lxc >= 0.8.0 for package: docker-io-0.5.3-4.el6.x86_64--> Processing Dependency: kernel-ml-aufs >= 3.10.5 for package: docker-io-0.5.3-4.el6.x86_64--> Running transaction check---> Package kernel-ml-aufs.x86_64 0:3.10.5-3.el6 will be installed---> Package lxc.x86_64 0:0.8.0-3.el6 will be installed--> Processing Dependency: liblxc.so.0()(64bit) for package: lxc-0.8.0-3.el6.x86_64--> Running transaction check---> Package lxc-libs.x86_64 0:0.8.0-3.el6 will be installed--> Finished Dependency ResolutionDependencies Resolved============================================================================================ Package                   Arch              Version                  Repository       Size============================================================================================Installing: docker-io                 x86_64            0.5.3-4.el6              hop5            1.2 MInstalling for dependencies: kernel-ml-aufs            x86_64            3.10.5-3.el6             hop5             33 M lxc                       x86_64            0.8.0-3.el6              hop5             81 k lxc-libs                  x86_64            0.8.0-3.el6              hop5             75 kTransaction Summary============================================================================================Install       4 Package(s)Total download size: 34 MInstalled size: 159 MIs this ok [y/N]: yDownloading Packages:(1/4): docker-io-0.5.3-4.el6.x86_64.rpm                              | 1.2 MB     00:03     (2/4): kernel-ml-aufs-3.10.5-3.el6.x86_64.rpm                        |  33 MB     00:33     (3/4): lxc-0.8.0-3.el6.x86_64.rpm                                    |  81 kB     00:00     (4/4): lxc-libs-0.8.0-3.el6.x86_64.rpm                               |  75 kB     00:00     --------------------------------------------------------------------------------------------Total                                                       896 kB/s |  34 MB     00:39     Running rpm_check_debugRunning Transaction TestTransaction Test SucceededRunning Transaction  Installing : lxc-libs-0.8.0-3.el6.x86_64                                              1/4   Installing : lxc-0.8.0-3.el6.x86_64                                                   2/4   Installing : kernel-ml-aufs-3.10.5-3.el6.x86_64                                       3/4   Installing : docker-io-0.5.3-4.el6.x86_64                                             4/4   Verifying  : kernel-ml-aufs-3.10.5-3.el6.x86_64                                       1/4   Verifying  : lxc-0.8.0-3.el6.x86_64                                                   2/4   Verifying  : lxc-libs-0.8.0-3.el6.x86_64                                              3/4   Verifying  : docker-io-0.5.3-4.el6.x86_64                                             4/4 Installed:  docker-io.x86_64 0:0.5.3-4.el6                                                            Dependency Installed:  kernel-ml-aufs.x86_64 0:3.10.5-3.el6               lxc.x86_64 0:0.8.0-3.el6                lxc-libs.x86_64 0:0.8.0-3.el6                     Complete![[email protected] ~]#

5、检查安装情况

[[email protected] ~]# docker -hUsage of docker:  -D=false: Debug mode  -H=[unix:///var/run/docker.sock]: tcp://host:port to bind/connect to or unix://path/to/socket to use  -api-enable-cors=false: Enable CORS requests in the remote api.  -b="": Attach containers to a pre-existing network bridge. Use 'none' to disable container networking  -d=false: Daemon mode  -dns="": Set custom dns servers  -g="/var/lib/docker": Path to graph storage base dir.  -p="/var/run/docker.pid": File containing process PID  -r=false: Restart previously running containers

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

[[email protected] ~]# echo "none                    /sys/fs/cgroup          cgroup  defaults        0 0" >> /etc/fstab[[email protected] ~]# mount /sys/fs/cgroup

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

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

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

[[email protected] ~]# uname -r3.10.5-3.el6.x86_64[[email protected] ~]# grep aufs /proc/filesystems nodev   aufs

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

[[email protected] ~]# docker -d 2013/08/21 07:47:07 WARNING: Your kernel does not support cgroup swap limit.2013/08/21 07:47:07 Listening for HTTP on /var/run/docker.sock (unix)

10、在centos6.4容器里输出hello world

[[email protected] ~]# docker run centos:6.4 echo "hello world"2013/08/21 07:48:41 POST /v1.4/containers/create2013/08/21 07:48:41 POST /v1.4/containers/c6bc9e80097e/start2013/08/21 07:48:41 POST /v1.4/containers/c6bc9e80097e/attach?logs=1&stderr=1&stdout=1&stream=1hello world

11、从容器里测试ping

[[email protected] ~]# docker -dns '8.8.8.8' run centos:6.4 ping -c 3 yahoo.com2013/08/21 08:02:15 POST /v1.4/containers/create2013/08/21 08:02:15 POST /v1.4/containers/c40a1244f9bc/start2013/08/21 08:02:15 POST /v1.4/containers/c40a1244f9bc/attach?logs=1&stderr=1&stdout=1&stream=1PING yahoo.com (98.138.253.109) 56(84) bytes of data.64 bytes from ir1.fp.vip.ne1.yahoo.com (98.138.253.109): icmp_seq=1 ttl=48 time=323 ms64 bytes from ir1.fp.vip.ne1.yahoo.com (98.138.253.109): icmp_seq=2 ttl=48 time=329 ms64 bytes from ir1.fp.vip.ne1.yahoo.com (98.138.253.109): icmp_seq=3 ttl=49 time=302 ms--- yahoo.com ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2304msrtt min/avg/max/mdev = 302.032/318.318/329.656/11.807 ms

常见错误:

"DNS/Networking Errors inside the docker"

[[email protected] ~]# docker -dns="8.8.8.8" run centos:6.4 yum install hiphop-php2013/08/21 07:53:05 POST /v1.4/containers/create2013/08/21 07:53:05 POST /v1.4/containers/6d9fef14bd1a/start2013/08/21 07:53:05 POST /v1.4/containers/6d9fef14bd1a/attach?logs=1&stderr=1&stdout=1&stream=1Loaded plugins: fastestmirrorError: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try againCould not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os error was14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"

可以执行下面的命令来重置docker的运行环境,从而解决上述问题。

pkill dockeriptables -t nat -Fifconfig docker0 downbrctl delbr docker0docker -d

感谢sciurus在创建kernel-ml-aufs的相关文件时付出的辛勤工作。