1. docker安装先决条件 1.1 内核版本至少3.1.0,可用如下命令查看内核版本 # uname -r 3.10.5-3.el6.x86_64
1.2 docker需运行在64位CPU架构的计算机,目前不支持32位 1.3 内核必须支持一种适合的存储驱动,例,Device Manager AUFS vfs btrfs,默认存储通常是Device Mapper 检查Device Mapper是否安装,可用如下命令:
$sudo yum list installed | grep device-mapper device-mapper.x86_64 1.02.79-8.el6 @anaconda-CentOS-201311272149.x86_64/6.5 device-mapper-event.x86_64 device-mapper-event-libs.x86_64 device-mapper-libs.x86_64 device-mapper-persistent-data.x86_64
也可检查device-mapper条目
$sudo grep device-mapper /proc/devices 253 device-mapper
1.4 内核必须支持并开启cgroup和命名空间(namespace)功能 2. 安装docker 2.1 centos上安装步骤 $sudo yum update $curl -fsSL https://get.docker.com/ | sh $sudo service docker start $sudo docker run hello-world #验证docker是否安装成功,运行一个hello-world的测试镜像
三种方法安装:yum或curl或二进制安装,具体参考docker安装
2.2 升级docker $sudo yum update $sudo yum install -y docker
2.3 启动docker相关问题 2.3.1 docker启动失败 $sudo service docker start Starting cgconfig service: Error: cannot mount memory to /cgroup/memory: No such file or directory /sbin/cgconfigparser; error loading /etc/cgconfig.conf: Cgroup mounting failed Failed to parse /etc/cgconfig.conf or /etc/cgconfig.d [失败] Starting docker: [确定]
可能是内核升级原因,解决办法:vim /etc/cgconfig.conf 注释掉下面一行
mount { cpuset = /cgroup/cpuset; cpu = /cgroup/cpu; cpuacct = /cgroup/cpuacct; # memory = /cgroup/memory; devices = /cgroup/devices; freezer = /cgroup/freezer; net_cls = /cgroup/net_cls; blkio = /cgroup/blkio; }
再次重启cgconfig正常,/etc/init.d/cgconfig start
2.3.2 docker启动状态是dead $sudo service docker status docker 已死,但是 subsys 被锁
查看docker日志,tailf /var/log/docker: Unable to enable NAT rule 通过如下命令获知缺少nat模块
$sudo lsmod | grep nat ebtable_nat 2007 0 ebtables 27089 1 ebtable_nat
解决方法:需要重新编译内核或使用旧版本
3. docker卸载 3.1 查看是否安装docker $sudo yum list installed | grep docker docker-io.x86_64 1.7.1-2.el6 @epel
3.2 删除docker软件包 $sudo yum -y remove docker-io.x86_64
3.3 删除所有的镜像,容器和卷 $sudo rm -rf /var/lib/docker
4. docker守护进程 4.1 docker服务命令 $sudo service docker start $sudo service docker status $sudo service docker stop
4.2 配置docker守护进程 docker安装完成后,会默认启动docker守护进程,守护进程会监听/var/run/docker.sock这个套接字 可用-H标志绑定监听接口
$sudo /usr/bin/docker -d -H tcp://0.0.0.0:2375
这条命令会将docker守护进程绑定到宿主机上的所有网络接口
要让这些改动永久生效,需要编辑启动配置项 在docker配置文件(/etc/sysconfig/docker或/etc/default/docker)加入一条配置,然后重启docker:
-H=unix:///var/run/docker.sock -H=tcp://0.0.0.0:2375
通过暴露的2375端口,可用curl或java等编程语言调用docker的api