docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。
Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为 Docker Inc。Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中广泛应用。
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包装系统。
值得关注的特性:
文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。
资源隔离:系统资源,像CPU和内存等可以分配到不同的容器中,使用cgroup。
网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和IP地址。
日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。
交互式shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次***互shell。
一、centos编译安装docker
1、升级内核到4.3
yum install -y make gcc gcc-c++ openssl openssl--devel ncurses ncurses-devel bc wget http://mirrors.dwhd.org/Kernel/v4.x/linux-4.3.tar.xz tar xf linux-4.3.tar.xz -C /usr/src/ cd /usr/src/linux-4.3/ cp /boot/config-`uname -r` .config sh -c 'yes "" | make oldconfig' # make menuconfig ###自定义需要编译的选项 # scripts/kconfig/mconf Kconfig ###自定义需要编译的选项 make -j `awk '/processor/{a++}END{print a}' /proc/cpuinfo` bzImage make -j `awk '/processor/{a++}END{print a}' /proc/cpuinfo` modules make -j `awk '/processor/{a++}END{print a}' /proc/cpuinfo` modules_install make install # make mrproper ###编译出错重新编译需要做清除处理 sed -ri 's/(default=).*/\10/' /boot/grub/grub.conf reboot uname -a
2、关闭SELinux
sed -ri 's/^#?((\s+)?SELINUX(TYPE)?.*)/#\1/;$a SELINUX=disabled\nSELINUXTYPE=targeted' /etc/sysconfig/selinux /usr/sbin/setenforce 0
3、编译高版本git
yum -y remove git yum -y install zlib-devel perl-CPAN gettext curl-devel expat-devel gettext-devel openssl-devel wget http://mirrors.dwhd.org/Git/git-2.6.3.tar.xz tar xf git-2.6.3.tar.xz cd git-2.6.3 ./configure --prefix=/usr/local make -j $(awk '/processor/{i++}END{print i}' /proc/cpuinfo) && make install && cd .. echo "PATH=/usr/local/bin:\$PATH" >/etc/profile.d/git.sh . /etc/profile.d/git.sh which git /usr/local/bin/git git --version
4、检测iptables版本 xz版本和ps命令,iptables≥1.4,xz≥4.9
which ps iptables -V xz -V
5、安装cgroup
yum install -y libcgroup libcgroup-devel libcgroup-pam
6、安装go
wget https://storage.googleapis.com/golang/go1.5.linux-amd64.tar.gz tar xf go1.5.linux-amd64.tar.gz -C /usr/local/ echo "export GOROOT=/usr/local/go export PATH=\$PATH:\$GOROOT/bin export GOPATH=/home/go" >/etc/profile.d/go.sh . /etc/profile.d/go.sh which go /usr/local/go/bin/go go version
二、YUM安装docker在CentOS7系统上
centos7.x安装docker
rpm -Uvh http://dl.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum -y install docker-io # 仅此一条命令就可以搞定; service docker start # 启动docker chkconfig docker on
# 加入开机启动
另外一种:
yum clean all cat >/etc/yum.repos.d/docker.repo <<-EOF [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7 enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF yum makecache yum install -y docker-engine systemctl start docker.service systemctl enable docker.service ln -s '/usr/lib/systemd/system/docker.service' '/etc/systemd/system/multi-user.target.wants/docker.service' systemctl status docker.service docker run hello-world
Ubuntu安装
1、更新Ubuntu内核
使用如下命令行更新内核至3.8.0-25
sudo apt-get install linux-image-3.8.0-25-generic sudo apt-get install linux-headers-3.8.0-25-generic
完成后重启电脑,通过命令 “uname -r” 来查看内核是否成功更新。
2、安装lxc-docker
sudo apt-get install software-properties-common #增加 add-apt-repository 命令 sudo apt-get install python-software-properties sudo add-apt-repository ppa:dotcloud/lxc-docker #增加一个ppa源,如:ppa:user/ppa-name sudo apt-get update #更新系统 sudo apt-get install lxc-docker