在講到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