Docker
Docker网址: https://www.docker.com/
PS:本文所涉及到的Docker知识都是在linux内核版本3.10及以后的,也有部分3.10之前也支持。
一、Docker容器的原理
Docker利用Linux中的核心分离机制,例如Cgroups,以及Linux的核心Namespace(名字空间)来创建独立的容器。一句话概括起来Docker就是利用Namespace做资源隔离,用Cgroup做资源限制,利用Union FS做容器文件系统的轻量级虚拟化技术。Docker容器的本质还是一个直接运行在宿主机上面的特殊进程,看到的文件系统是隔离后的,但是操作系统内核是共享宿主机OS,所以说Docker是轻量级的虚拟化技术, 如果我们了解它们的使用方法和原理,就能清楚 Docker 的实现原理。
Docker虚拟化与普通虚拟化的区别
虚拟化 | 区别 |
---|---|
Docker虚拟化 | 直接运行于宿主机的内核,容器内没有自己的内核,而且也没有进行硬件虚拟,每个容器有自己的文件系统,互不干扰,启动时间块,资源占用少,可灵活分配资源 |
普通虚拟化 | 在宿主机上虚拟出一套硬件后,再运行一个完整操作系统,在该系统上再运行所需应用进程,启动时间长,占用资源多 |
二、Docker核心概念
- 镜像:类似虚拟机的快照,一个镜像是一个完整的操作系统,属于只读的
- 容器:从镜像创建的运行实例,可以被启动、停止、删除
- 仓库:存储镜像的地方
三、安装Docker
PS:因为网速的原因,我们选择国内下载安装,国内很多网站都提供了docker-ce的镜像站,比如阿里云、网易云、清华大学镜像站等。
我们选择阿里云下载
[root@docker ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@docker ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo //下载docker的repo源文件到yum.read目录
[root@docker ~]# yum repolist
[root@docker ~]# yum makecache
[root@docker ~]# yum list docker-ce.x86_64 --showduplicates | sort -r //查看docker-ce可用版本
[root@docker ~]# yum -y install docker-ce-18.09.0-3.el7 docker-ce-cli-18.09.0-3.el7 containerd.io-1.2.10-el7
[root@docker ~]# systemctl start docker.service
[root@docker ~]# systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
查看docker版本还可以查看docker服务
[root@docker ~]# docker version
Client:
Version: 18.09.0
API version: 1.39
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:48:22 2018
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.0
API version: 1.39 (minimum version 1.12)
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:19:08 2018
OS/Arch: linux/amd64
Experimental: false
开启路由转发功能
PS:做路由转发的意义是为了后期的主机互相访问
[root@docker ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
[root@docker ~]# sysctl -p
为docker容器设置镜像下载加速器
[root@docker ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
docker version >= 1.12
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}
Success.
You need to restart docker to take effect: sudo systemctl restart docker
[root@docker ~]# systemctl restart docker.service
PS: 加速器完成之后,会生产/etc/docker/daemon.json文件,里边记载着刚 刚加载成功的加速器的网址。如果想要替换其他网站的加速器,只需要更 改此网址即可。
[root@docker ~]# cat /etc/docker/daemon.json
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}