什么是 docker

docker 是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移到其他机器的 docker 应用中,可以实现快速部署。如果出现的故障,可以通过镜像,快速恢复服务。

原理

docker 是利用 Linux 内核虚拟机化技术(LXC),提供轻量级的虚拟化,以便隔离进程和资源。LXC 不是硬件的虚拟化,而是 Linux 内核的级别的虚拟机化,相对于传统的虚拟机,节省了很多硬件资源。

NameSpace

LXC 是利用内核 namespace 技术,进行进程隔离。其中 pid, net, ipc, mnt, uts 等 namespace 将 container 的进程, 网络, 消息, 文件系统和 hostname 隔离开。

Control Group

LXC 利用的宿主机共享的资源,虽然用 namespace 进行隔离,但是资源使用没有收到限制,这里就需要用到 Control Group 技术,对资源使用进行限制,设定优先级,资源控制等。

内核支持

在 CentOS6.8 是可以支持 docker,但是有些特性无法使用,因此至少使用 3.8 的内核版本,建议是使用 3.10 版本以上。国内生产环境很多都是使用 CentOS,所以一般使用 CentOS7 即可。

当然如果是 Ubuntu/Debian/Deepin 系列的发行版本也是支持的。

环境准备

操作系统:CentOS 7.6.1810

软件源:阿里云镜像(在阿里云镜像站上面可以找到 docker-ce 的软件源,使用国内的源速度比较快)

安装 docker-ce

如果没有物理机,可以先使用虚拟机进行学习。操作系统安装,跳过(网上教程很多)。

1、安装依赖

docker 依赖于系统的一些必要的工具,可以提前安装。

yum install -y yum-utils device-mapper-persistent-data lvm2

2、添加软件源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安装 docker-ce

yum clean all

yum makecache fast

yum -y install docker-ce

4、启动服务

通过 systemctl 启动服务

systemctl start docker

5、查看安装版本

这样子就安装成功了,启动服务以后可以使用 docker version 查看一下当前的版本。

docker version
Client:
 Version:           18.09.2
 API version:       1.39
 Go version:        go1.10.6
 Git commit:        6247962
 Built:             Sun Feb 10 04:13:27 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.2
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       6247962
  Built:            Sun Feb 10 03:47:25 2019
  OS/Arch:          linux/amd64
  Experimental:     false