Docker的介紹和安裝(1)

1、虛擬化簡介

一、虛擬化概念html

  計算機虛擬化(Computing Virtualization),一種資源管理技術,是指經過虛擬化技術將一臺計算機的各類實體資源 , 如處理器 , 網絡 , 內存及存儲等 , 抽像 , 轉換後呈現出來 , 打破實體結構間的不可切割的障礙,虛擬成多臺邏輯計算機。在一臺計算機上同時運行多個邏輯計算機,每一個邏輯計算機可運行不一樣的操做系統,而且應用程序均可以在相互獨立的空間內運行而互不影響,從而顯著提升計算機的工做效率。linux

  虛擬化使用軟件的方法從新定義劃分 IT 資源,能夠實現 IT 資源的動態分配、靈活調度、跨域共享,提升 IT 資源利用率,使 IT 資源可以真正成爲社會基礎設施,服務於各行各業中靈活多變的應用需求。nginx

虛擬化目標 :redis

  同一主機上運行多個系統或應用 , 從而提升系統資源的利用率 , 同時帶來下降成本 , 方便管理和容錯容災docker

二、虛擬化級別shell

  (1)徹底虛擬 -- 處理器密集型技術,由於它要求 hypervisor 管理各個虛擬服務器,並讓它們彼此獨立 (Vmware/Virtual PC)json

  (2)準虛擬 -- 改動客戶操做系統,讓它覺得本身運行在虛擬環境下,可以與 hypervisor 協同工做 (para-virtualization)vim

  (3)系統虛擬 -- 沒有獨立的 hypervisor 層。相反,主機操做系統自己就負責在多個虛擬服務器之間分配硬件資源,而且讓這些服務器彼此獨立windows

  (4)桌面虛擬化—桌面虛擬化主要功能是將分散的桌面環境集中保存並管理起來,包括桌面環境的集中下發,集中更新,集中管理。桌面虛擬化使得桌面管理變得簡單,不用每臺終端單獨進行維護,每臺終端進行更新centos

  因此,Docker 和其餘容器(container)技術都屬於系統虛擬化範疇

三、虛擬化類型

  對於系統虛擬化技術來講,虛擬層爲用戶提供了一個完整的虛擬機:包括內核在內的一個完整的系統鏡像。 CPU 虛擬化技術能夠爲每一個用戶提供一個獨享且和其餘用戶隔離的系統環境,虛擬層能夠爲每一個用戶分配虛擬化後的 CPU 、內存和 IO 設備資源

  物理機咱們通常稱爲宿主機(Host),宿主機上面的虛擬機稱爲客戶機(Guest)。那麼 Host 是如何將本身的硬件資源虛擬化,並提供給 Guest 使用的呢?

  這個主要是經過一個叫作 Hypervisor 的程序實現的。根據 Hypervisor 的實現方式和所處的位置,虛擬化按照結構分爲兩種類型:1型虛擬化和2型虛擬化。

四、虛擬化分類

  1型虛擬化

  Hypervisor 直接安裝在物理機上,多個虛擬機在 Hypervisor 上運行。Hypervisor 實現方式通常是一個特殊定製的 Linux 系統。Xen 和 VMWare 的 ESXi 都屬於這個類型。

  2型虛擬化

  物理機上首先安裝常規的操做系統,好比 Redhat、Ubuntu 和 Windows。Hypervisor 做爲 OS 上的一個程序模塊運行,並對管理虛擬機進行管理。KVM、VirtualBox 和 VMWare Workstation 都屬於這個類型。

理論上講:

  1型虛擬化通常對硬件虛擬化功能進行了特別優化,性能上比2型要高;

  2型虛擬化由於基於普通的操做系統,會比較靈活,好比支持虛擬機嵌套。嵌套意味着能夠在KVM虛擬機中再運行KVM。

  容器位於前二者之上,以進程的形式存在於操做系統之中

  容器爲應用程序提供了隔離的運行空間:每一個容器內都包含一個獨享的完整用戶環境空間,而且一個容器內的變更不會影響其餘容器的運行環境。爲了能達到這種效果,容器技術使用了一系列的系統級別的機制諸如:利用Linux namespaces 來進行空間隔離經過文件系統的掛載點來決定容器能夠訪問哪些文件經過 cgroups 來肯定每一個容器能夠利用多少資源。此外容器之間共享同一個系統內核,這樣當同一個庫被多個容器使用時,內存的使用效率會獲得提高。

2、docker簡介

一、容器虛擬化  

  容器( container-based )虛擬化方案,充分利用了操做系統自己已有的機制和特性,以實現輕量級的虛擬化(每一個虛擬機安裝的不是完整的虛擬機),甚至有人把他稱爲新一代的虛擬化技術, Docker 無疑就是其中的佼佼者

  在一臺服務器上同時運行上百個虛擬機,確定會被認爲是癡人說夢,而在一臺機器上同時運行一千個 Docker 容器,這已成爲現實

二、Docker 的目標

  Build,Ship and Run Any App,Anywhere— 即經過對應用組件的封裝 (Packaging), 發佈(Distribution), 運行(runing) 等生命週期的管理 , 達到應用組件級別的」一次封裝 , 處處運行」。

三、docker的組成

  Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的Linux機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何接口。

  一個完整的Docker有如下幾個部分組成:

  (1)dockerClient客戶端
  (2)Docker Daemon守護進程
  (3)Docker Image鏡像
  (4)DockerContainer容器

容器:
  存儲、運輸工具
  實現對容器內部的物品實現包含(實現了一個相對隔離的環境)
  容器:模擬(虛擬)出一個相對隔離的空間

鏡像:
  用來建立容器的模版,放在鏡像倉庫中,例如nginx,redis,httpd等

四、docker重要網站

  Docker官網:https://www.docker.com/

  Docker官方文檔:https://docs.docker.com/

  Docker倉庫:https://hub.docker.com/

  Docker中文社區:http://www.docker.org.cn/

Docker官方英文資源:   docker官網:http://www.docker.com
  Docker windows入門:https://docs.docker.com/windows/
  Docker Linux 入門:https://docs.docker.com/linux/
  Docker mac 入門:https://docs.docker.com/mac/
  Docker 用戶指引:https://docs.docker.com/engine/userguide/
  Docker 官方博客:http://blog.docker.com/
  Docker Hub: https://hub.docker.com/
  Docker開源: https://www.docker.com/open-source
Docker中文資源:   Docker中文網站:http://www.docker.org.cn
  Docker入門教程: http://www.docker.org.cn/book/docker.html
  Docker安裝手冊:http://www.docker.org.cn/book/install.html
  一小時Docker教程 :https://blog.csphere.cn/archives/22
  Docker紙質書:http://www.docker.org.cn/dockershuji.html
  DockerPPT:http://www.docker.org.cn/dockerppt.html

3、Docker的特色

一、優勢:

  (1)啓動快,資源佔用小 , 資源利用高,快速構建標準化運行環境
  (2)建立分佈式應用程序時快速交付和部署,更輕鬆的遷移和擴展,更簡單的更新管理

二、侷限:

  (1)Docker 是基於 Linux 64bit 的,沒法在 windows/unix 或 32bit 的 linux環境下使用
  (2)LXC 是基於 cgroup 等 linux kernel 功能的,所以 container 的 guest 系統只能是linux
  (3)隔離性相比 KVM 之類的虛擬化方案仍是有些欠缺,全部 container 公用一部分的運行庫
  (4)管理相對簡單,主要是基於 namespace 隔離
  (5)cgroup 的 cpu 和 cpuset 提供的 cpu 功能相比 KVM 的等虛擬化方案相比難以度量 ( 因此 dotcloud 主要是按內存收費 )
  (6)docker 對 disk 的管理比較有限(docker磁盤存儲在一個目錄下)
  (7)container 隨着用戶進程的中止而銷燬, container 中的 log 等用戶數據不便收集

三、docker與虛擬機的比較:

  (1)啓動快比虛擬機 , 能夠秒級啓動
  (2)對資源佔用小 , 宿主機上可運行千臺容器
  (3)方便用戶獲取 , 分佈 , 和更新應用鏡像 , 指令簡單 , 學習費用低
  (4)經過 Dockerfile 配置文件來靈活的自動建立和部署鏡像 & 容器 , 提升工做效率
  (5)Docker 除了運行其中應用外 , 基本不消耗其餘系統資源 , 保證應用性能同時 , 儘可能減少系統開銷

docker與kvm的對比 kvm:   1. 虛擬機   2. 使用複雜   3. 啓動過程相對慢(分鐘)   4. 模版文件較大   5. 和物理徹底隔離   6. 模擬的是一個完整系統,能夠登陸並實現管理 docker:   1. 直接虛擬出來一個用戶空間   2. 使用簡單   3. 啓動很是塊(秒級)   4. 模版文件很小(體積小)(容器只要包含用到的組件便可,而虛擬機是整個操做系統的打包)   5. 在必定程度上和物理機隔離   6. 僅僅是模擬一部分用戶空間,不方便管理

四、docker使用理由

  (1)快速部署服務
  (2)多租戶
  (3)實現隔離
  (4)讓一個主機運行多個容器
  (5)提升開發效率
  (6)簡化配置過程
  (7)實現軟件的跨平臺

五、docker的主要用途:

  (1)提供一次性的環境。好比,本地測試他人的軟件、持續集成的時候提供單元測試和構建的環境。

  (2)提供彈性的雲服務。由於 Docker 容器能夠隨開隨關,很適合動態擴容和縮容。

  (3)組建微服務架構。經過多個容器,一臺機器能夠跑多個服務,所以在本機就能夠模擬出微服務架構。

4、docker的安裝

一、docker的安裝

  安裝docker須要配置網絡源

(1)配置阿里雲的網絡源

  第一步:下載阿里雲的docker安裝包(yum倉庫的目錄下)

[root@ren7 yum.repos.d]# wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  第二步:配置extra和epel源

[extra]
name=centos extra
enabled=1
gpgcheck=0
baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/
[epel]
name=epel
enabled=1
gpgcheck=0
baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/

  第三步:使用yum安裝

  docker-ce 是社區版,免費的

  docker-ee 是企業版,收費的

[root@ren7 ~]# yum install docker-ce -y

(2)配置雲惟圖書館的源

  第一步:vim /etc/resolv.conf

nameserver 172.16.254.110

  第二步:下載docker安裝腳本

[root@ren7 ~]# wget http://download2.yunwei.edu/shell/docker.tar.gz

  第三步:解壓並執行安裝腳本

[root@ren7 ~]# tar xzf docker.tar.gz
[root@ren7 ~]# cd docker
[root@ren7 docker]# ls
ca.crt  docker-app.tar.gz  docker.sh  remove.sh
[root@ren7 docker]# ls
ca.crt  docker-app.tar.gz  docker.sh  remove.sh
[root@ren7 docker]# sh docker.sh 
docker
docker-compose
docker-containerd
docker-containerd-ctr
docker-containerd-shim
dockerd
docker-init
docker-proxy
docker-runc
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /etc/systemd/system/docker.service.
[root@ren7 docker]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@ren7 docker]# cat docker.sh 
#/bin/bash

tar zxvf docker-app.tar.gz -C /usr/local/bin/

mkdir -p /etc/docker
mkdir -p /etc/docker/certs.d/reg.yunwei.edu

cp ca.crt /etc/docker/certs.d/reg.yunwei.edu/

echo "172.16.254.20 reg.yunwei.edu">>/etc/hosts

cat <<EOF>/etc/docker/daemon.json
{
  "registry-mirrors": ["http://cc83932c.m.daocloud.io"],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
    }
}
EOF

cat <<EOF>/etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.io

[Service]
Environment="PATH=/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin"
ExecStart=/usr/local/bin/dockerd
ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
ExecReload=/bin/kill -s HUP $MAINPID
Restart=on-failure
RestartSec=5
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload && systemctl enable docker.service && systemctl start docker.service

二、docker鏡像加速配置

  由於docker鏡像都在國外,而國內網絡訪問的比較慢,後續拉取docker鏡像十分緩慢,因此在安裝docker以後須要配置加速器。

(1)獲取阿里雲加速地址

第一步:打開阿里雲官網

  https://www.aliyun.com/?utm_content=se_1000301910

第二步:選擇產品與服務 --->鏡像與服務

第三步:選擇鏡像加速器,獲取本身docker的加速器地址

(2)vim /etc/docker/daemon.json 中寫入以下內容(若是文件不存在請手動建立)

{
  "registry-mirrors": ["https://registry.docker-cn.com","https://twk069lg.mirror.aliyuncs.com","http://cc83932c.m.daocloud.io"]
}

  添加一個網址便可

(3)重啓服務

systemctl restart docker
相關文章
相關標籤/搜索