Docker實戰之Docker入門教程(一)

Docker 引言

1. 什麼是虛擬化

在計算機中,虛擬化(英語:Virtualization)是一種資源管理技術,是將計算機的各種實體資源,如服務器、網絡、內存及存儲等,予以抽象、轉換後呈現出來,打破實體結構間的不可切割的障礙,使用戶可以比原本的組態更好的方式來應用這些資源。這些資源的新虛擬部份是不受現有資源的架設方式,地域或物理組態所限制。一般所指的虛擬化資源包括計算能力和資料存儲。

在實際的生產環境中,虛擬化技術主要用來解決高性能的物理硬件產能過剩和老的舊的硬件產能過低的重組重用,透明化底層物理硬件,從而最大化的利用物理硬件 對資源充分利用

虛擬化技術種類很多,例如:軟件虛擬化、硬件虛擬化、內存虛擬化、網絡虛擬化(vip)、桌面虛擬化、服務虛擬化、虛擬機等等


2. 虛擬化種類

虛擬化種類有很多,這裏我們只介紹OS層虛擬化架構硬件層虛擬化架構,有興趣的小夥伴可以直接繼續深入瞭解~~

OS層虛擬化架構

在這裏插入圖片描述

硬件層虛擬化架構

在這裏插入圖片描述

硬件層的虛擬化具有高性能和隔離性,因爲hypervisor直接在硬件上運行,有利於控制VM的OS訪問硬件資源,使用這種解決方案的產品有VMware ESXi 和 Xen server

Hypervisor是一種運行在物理服務器和操作系統之間的中間軟件層,可允許多個操作系統和應用共享一套基礎物理硬件,因此也可以看作是虛擬環境中的“元”操作系統,它可以協調訪問服務器上的所有物理設備和虛擬機,也叫虛擬機監視器(Virtual Machine Monitor,VMM)。

Hypervisor是所有虛擬化技術的核心。當服務器啓動並執行Hypervisor時,它會給每一臺虛擬機分配適量的內存、CPU、網絡和磁盤,並加載所有虛擬機的客戶操作系統。 宿主機

Hypervisor是所有虛擬化技術的核心,軟硬件架構和管理更高效、更靈活,硬件的效能能夠更好地發揮出來。常見的產品有:VMware、KVM、Xen等等。Openstack


3. 什麼是docker

在這裏插入圖片描述

在Docker之前,我們肯定要先了解Docker是什麼。官網的介紹是“Docker is the world’s leading software container platform.”官方給Docker的定位是一個應用容器平臺。至於爲什麼要做這個Docker,官網上還有這麼一句話"Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications, whether on laptops, data center VMs, or the cloud.“這句話用一句非常簡單的話去概括就是”``Build once,Run anyWhere`".這一點跟Java很像。那麼它這樣做是要解決現實中什麼問題,我列舉幾個情況。

**1.合作開發的時候,在本機可以跑,別人的電腦跑不起來**
   這裏我們拿java Web應用程序舉例,我們一個java Web應用程序涉及很多東西,比如jdk、tomcat、spring等等。當這些其中某一項版本不一致的時候,可能就會導致應用程序跑不起來這種情況。Docker則將程序直接打包成鏡像,直接運行在容器中即可。
  **2.服務器自己的程序掛了,結果發現是別人程序出了問題把內存吃完了,自己程序因爲內存不夠就掛了**
  這種也是一種比較常見的情況,如果你的程序重要性不是特別高的話,公司基本上不可能讓你的程序獨享一臺服務器的,這時候你的服務器就會跟公司其他人的程序共享一臺服務器,所以不可避免地就會受到其他程序的干擾,導致自己的程序出現問題。Docker就很好解決了環境隔離的問題,別人程序不會影響到自己的程序。
  **3.公司要弄一個活動,可能會有大量的流量進來,公司需要再多部署幾十臺服務器**
  在沒有Docker的情況下,要在幾天內部署幾十臺服務器,這對運維來說是一件非常折磨人的事,而且每臺服務器的環境還不一定一樣,就會出現各種問題,最後部署地頭皮發麻。用Docker的話,我只需要將程序打包到鏡像,你要多少臺服務,我就給力跑多少容器,極大地提高了部署效率。


4. Docker和虛擬機區別

關於Docker與虛擬機的區別,我在網上找到的一張圖,非常直觀形象地展示出來,話不多說,直接上圖。

在這裏插入圖片描述
在這裏插入圖片描述

比較上面兩張圖,我們發現虛擬機是攜帶操作系統,本身很小的應用程序卻因爲攜帶了操作系統而變得非常大,很笨重。Docker是不攜帶操作系統的,所以Docker的應用就非常的輕巧。另外在調用宿主機的CPU、磁盤等等這些資源的時候,拿內存舉例,虛擬機是利用Hypervisor去虛擬化內存,整個調用過程是虛擬內存->虛擬物理內存->真正物理內存,但是Docker是利用Docker Engine去調用宿主的的資源,這時候過程是虛擬內存->真正物理內存。


5. Docker中基本概念

下面這張圖非常的經典,很形象地展示了,什麼是容器,什麼是鏡像,什麼是倉庫,以及三者之間的聯繫。
在這裏插入圖片描述

接下來我們來解釋一下這張圖。現在我們要造一間廚房,在造之前我們首先要乾的一件事,就是先列舉出我們造廚房需要的東西。我們可能需要一個通了水電煤的房子以及一些必需的廚房用具諸如鍋碗瓢勺、煤氣竈、冰箱、水槽等等這些東西。現在我們知道需要了什麼東西之後,我們就去找這些東西。首先我們先去京東購買一些廚房用具,這些用具就好比我們的Docker鏡像,我們廚房的用具到了之後得找個地方把它們放在,不可能隨處丟吧,不然後面用的時候就找不到它了,那麼我們Docker鏡像也是這樣,需要一個Docker倉庫去存儲這些鏡像。現在我們有了這些廚房用具之後就可以做飯了嗎?答案當然是不能,沒水沒電沒火啊!這時候我們得把廚房用具給裝到一個通了水電煤的房子才行,那麼Docker鏡像也是這樣,單純的Docker鏡像是不能用的,它得裝到Docker容器中通了水電煤才能使用。等我們裝好了廚房用具之後我們就可以開始做飯,那麼我們的Docker鏡像裝到Docker容器之後,我們應用就可以跑起來了。

docker 倉庫——————> docker鏡像——————>docker 容器


6. docker的安裝(centos7.x)

卸載原有docker

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安裝docker

安裝docker依賴

$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

設置docker的yum源

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安裝最新版的docker

$ sudo yum install docker-ce docker-ce-cli containerd.io

指定版本安裝docker

$ yum list docker-ce --showduplicates | sort -r
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
$ sudo yum install docker-ce-18.09.5-3.el7 docker-ce-cli-18.09.5-3.el7 containerd.io

啓動docker

$ sudo systemctl start docker

關閉docker

$ sudo systemctl stop docker

測試docker安裝

$ sudo docker run hello-world

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章