docker安装卸载

2016-04-25 22:52:41

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