在讲到Docker以前,咱们先来说讲什么是Linux容器,咱们称为Linux concatiner,简称为LXC,LXC容器是一种内核虚拟化的技术,能够将用户空间的资源进行隔离,由Linux Namespace实现(名称空间),Nampspace将如下6个资源进行了隔离从而到达容器技术的实现。
(1) UTS namespace UTS(“UNIX Time-sharing System”) namespace容许每一个container拥有独立的hostname和domain name----->2.6.19内核加入特 性
(2) IPC namespace container中进程交互仍是采用linux常见的进程间交互方法(interprocess communication - IPC)----->2.6.19内核加入特性
(3) PID namespace 每一个namespace中的pid是有本身的pid=1的进程(相似/sbin/init进程) 每一个namespace中的进程只能影响本身的同一个namespace或子namespace中的进程等----->2.6.24内核加入特性
(4) NET namespace 每一个net namespace有独立的 network devices, IP addresses, IP routing tables, /proc/net 目录。这样每一个container的网络就能隔离开来----->2.6.29内核加入特性
(5) MNT namespace 相似chroot,将一个进程放到一个特定的目录执行。mnt namespace容许不一样namespace的进程看到的文件结构不一样,这样每一个 namespace 中的进程所看到的文件目录就被隔离开了。同chroot不一样,每一个namespace中的container在/proc/mounts的信息只包含所在namespace的mount point----->2.4.19内核加入特性
(6) USER namespace 每一个container能够有不一样的 user 和 group id, 也就是说能够以container内部的用户在container内部执行程序而非Host上的用户----->3.8内核加入特性
有了以上6种namespace从进程、网络、IPC、文件系统、UTS和用户角度的隔离,一个container就能够对外展示出一个独立计算机的能力,而且不一样container从OS层面实现了隔离。 然而不一样namespace之间资源仍是相互竞争的,仍然须要相似ulimit来管理每一个container所能使用的资源 - LXC 采用的是cgroup,LXC相似于容器的前端工具可是LXC用起来并非很好用,因此就有了Dokcer,Docker在LXC的基础上更进了一步,使得在容器的前端工具上使用起来至关的容易。前端
Client: docker的命令行,可使用docker命令管理镜像和容器,docker命令只能本地使用
Docker_Host: 启动docker daemon后的主机,docker是C/S架构
Images: 镜像,docker启动容器离不开镜像,镜像须要使用docker命令从Registry拉取
Containers: docker启动的多个容器,每个容器只启动一个应用,例如Nginx
Registry: docker镜像的公共仓库,使用docker须要连上互联网,除非是自建私有仓库linux
内核 | 系统 | 版本 |
---|---|---|
3.8以上 | CentOS7 | Docker-ce |
内核必须在3.8以上
建议使用CentOS7,64位操做系统
若是在CentOS6上使用docker,须要升级内核到3.10
docker目前有两个版本docker-ee(企业版须要收费),docker-ce(社区版免费),这里咱们下载使用docker-cedocker
(1)从阿里云镜像站下载docker的repo文件以及EPEL的repo [root@elk_134 ~]# wget -O /etc/yum.repos.d/docker.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo [root@elk_134 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo (2)安装docker-ce社区版,我这里安装的是docker-18.06的版本 [root@elk_134 ~]# yum install docker-ce -y (3)建立docker的配置文件,默认状况下docker的配置文件不存在,而且加入阿里云的镜像站加速 [root@elk_134 ~]# mkdir /etc/docker/ [root@elk_134 ~]# vim /etc/docker/daemon.json { "registry-mirrors": ["https://j3kuccxh.mirror.aliyuncs.com"] } (4)启动docker,启动docker以前先关闭ffirewalld和selinux [root@elk_134 ~]# systemctl stop firewalld [root@elk_134 ~]# setenforce 0 [root@elk_134 ~]# systemctl start docker (5)使用docker命令验证docker是否启动成功 [root@elk_134 ~]# docker version Client: Version: 18.06.1-ce API version: 1.38 Go version: go1.10.3 Git commit: e68fc7a Built: Tue Aug 21 17:23:03 2018 OS/Arch: linux/amd64 Experimental: false Server: Engine: Version: 18.06.1-ce API version: 1.38 (minimum version 1.12) Go version: go1.10.3 Git commit: e68fc7a Built: Tue Aug 21 17:25:29 2018 OS/Arch: linux/amd64 Experimental: false
一步一步来!!!!!!!!!!!!!!!!!!!!!!
其实很简单哒!!!!!!!!!!!!!!!!!!!!!json