centos6.5安装docker

Docker 包括三个基本概念

镜像(Image)
容器(Container)
仓库(Repository)
理解了这三个概念,就理解了 Docker 的整个生命周期。

Docker 镜像

Docker 镜像就是一个只读的模板。
例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。
镜像可以用来创建 Docker 容器。
Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做
好的镜像来直接使用。
容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其
中的应用程序。
注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层

Docker 容器

Docker 利用容器来运行应用。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其
中的应用程序。
*注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。

Docker 仓库

仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际
上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub,存放了数量庞大
的镜像供用户下载。 国内的公开仓库包括 Docker Pool等,可以提供大陆用户更稳定快速的访问。
当然,用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用 push 命令将它上传
到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
注:Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。

一、升级内核(带aufs模块)

1、yum安装带aufs模块的3.10内核(或到这里下载kernel手动安装:http://down.51cto.com/data/1903250)

cd /etc/yum.repos.d 
wget http://www.hop5.in/yum/el6/hop5.repo
yum install kernel-ml-aufs kernel-ml-aufs-devel

2、修改grub的主配置文件/etc/grub.conf,设置default=0,表示第一个title下的内容为默认启动的kernel(一般
新安装的内核在第一个位置)

# vi /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/vmvg-root
# initrd /initrd-[generic-]version.img
#boot=/dev/vda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (3.10.5-3.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-3.10.5-3.el6.x86_64 ro root=/dev/mapper/vmvg-root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vmvg/root rd_LVM_LV=vmvg/swap KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-3.10.5-3.el6.x86_64.img
title CentOS (2.6.32-431.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vmvg-root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vmvg/root rd_LVM_LV=vmvg/swap KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-431.el6.x86_64.img

然后重启机器 内核升级成功
# uname -r
3.10.5-3.el6.x86_64

3、升级device-mapper-libs,如果不升级,运行docker -d 会出现 缺少libdevmapper.so.1.02类库的情况:

yum upgrade device-mapper-libs

4、下载epel源

# cd /etc/yum.repos.d/
# rpm -Uvh http://epel.mirror.net.in/epel/6/x86_64/epel-release-6-8.noarch.rpm

二、安装docker
1、首先关闭selinux:

setenforce 0
sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config

2、在Fedora EPEL源中已经提供了docker-io包,下载安装epel:

rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
sed -i 's/^mirrorlist=https/mirrorlist=http/' /etc/yum.repos.d/epel.repo

3、yum安装docker-io:

yum -y install docker-io

4、启动docker:

service docker start
chkconfig docker on

5、验证docker是否安装成功:

# docker info
Containers: 0
Images: 0
Storage Driver: devicemapper
 Pool Name: docker-253:0-526372-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: extfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 305.7 MB
 Data Space Total: 107.4 GB
 Data Space Available: 63.39 GB
 Metadata Space Used: 733.2 kB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.147 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.117-RHEL6 (2016-04-01)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.5-3.el6.x86_64
Operating System: <unknown>
CPUs: 4
Total Memory: 7.812 GiB
Name: NH-Test-44
ID: JV4M:GCH5:QOLJ:34WT:MQKM:MN5T:BHSO:EGUI:4PKH:U7Q3:OBOO:7WHM
WARNING: No swap limit support

6、查看docker版本:

# docker -version
Client version: 1.7.1
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 786b29d/1.7.1
OS/Arch (client): linux/amd64
Server version: 1.7.1
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 786b29d/1.7.1
OS/Arch (server): linux/amd64

三、docker常用命令

查看版本:docker -v
查看帮助信息:docker
在官方仓库搜寻镜像:docker search centos
查看本地镜像:docker images
下载仓库镜像到本地:docker pull centos:latest
上传本地镜像到仓库:docker push NAME[:TAG]
将镜像保存为tar文件:docker save -o tar文件 镜像ID/镜像tag
将tar文件加载为镜像:docker load -i tar文件
修改镜像tag:docker tag 镜像ID 镜像tag
删除镜像:docker rmi 镜像ID/镜像tag
制作镜像:docker build -t centos:autosshd - < dockerfile.txt

dockerfile.txt:

dockerfile.txt:
FROM centos
MAINTAINER YH, http://yuanhuan.blog.51cto.com
RUN yum install passwd openssl openssh-server -y
RUN echo '123456' | passwd --stdin root
RUN ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
RUN ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
RUN sed -i '/^sessions+requireds+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
EXPOSE 22
CMD ip addr ls eth0 | awk '{print $2}' | egrep -o '([0-9]+.){3}[0-9]+';/usr/sbin/sshd -D

查看镜像历史:docker history 镜像ID/镜像tag
创建容器:docker run -d --name=容器名称 镜像ID/镜像tag
启动容器:docker start 容器名称/容器ID
查看容器:docker ps
重启容器:docker restart 容器名称/容器ID
停止容器:docker stop 容器名称/容器ID
删除容器:docker rm 容器名称/容器ID
暂停容器:docker pause 容器名称/容器ID
恢复容器:docker unpause 容器名称/容器ID
执行命令:docker exec -ti 容器名称/容器ID /bin/bash
获取容器日志:docker logs 容器名称/容器ID

参考文档:
http://www.centoscn.com/image-text/install/2014/1128/4202.html
http://www.mamicode.com/info-detail-891132.html
https://docs.docker.com/engine/installation/linux/centos/

原文地址:https://www.cnblogs.com/sfnz/p/5650604.html