1. 程式人生 > >Docker入門和安裝

Docker入門和安裝

最近Linux上安裝軟體越來越多采用Docker,方便快捷,這邊我們從幾個簡單的問題,幫助小夥伴們入門。

什麼是Docker?

       Docker 是一個開源專案,誕生於 2013 年初,最初是 dotCloud 公司內部的一個業餘專案。它基於 Google 公司推出的 Go 語言實現。專案後來加入了 Linux 基金會,遵從了 Apache 2.0 協議,專案程式碼在GitHub 上進行維護。 Docker 自開源後受到廣泛的關注和討論,以至於 dotCloud 公司後來都改名為 Docker Inc。Redhat 已經在其 RHEL6.5 中集中支援 Docker;Google 也在其 PaaS 產品中廣泛應用。 Docker 專案的目標是實現輕量級的作業系統虛擬化解決方案。Docker 的基礎是 Linux 容器(LXC)等技術。 

      在 LXC 的基礎上 Docker 進行了進一步的封裝,讓使用者不需要去關心容器的管理,使得操作更為簡便。使用者操作 Docker 的容器就像操作一個快速輕量級的虛擬機器一樣簡單。簡單來說,你可以認為就是一個配置好環境、軟體的虛擬機器。

優勢是什麼?

       下面盜了張圖說明下:

      官網總結的Docker的優勢,我們來看下:

更高效的利用系統資源:由於容器不需要進行硬體虛擬以及執行完整作業系統等額外開銷,Docker 對系統資源的利用率更高。無論是應用執行速度、記憶體損耗或者檔案儲存速度,都要比傳統虛擬機器技術更高效。因此,相比虛擬機器技術,一個相同配置的主機,往往可以執行更多數量的應用。

更快速的啟動時間:傳統的虛擬機器技術啟動應用服務往往需要數分鐘,而Docker 容器應用,由於直接運行於宿主核心,無需啟動完整的作業系統,因此可以做到秒級、甚至毫秒級的啟動時間。大大的節約了開發、測試、部署的時間。

一致的執行環境:開發過程中一個常見的問題是環境一致性問題。由於開發環境、測試環境、生產環境不一 致,導致有些bug 並未在開發過程中被發現。而Docker 的映象提供了除核心外完整的執行時環境,確保了應用執行環境一致性,從而不會再出現「這段程式碼在我機器上沒問題啊」這類問題。

持續交付和部署:Docker是build once,run everywhere. 使用Docker 可以通過定製應用映象來實現持續整合、持續交付、部署。開發人員可以通過Dockerfile 來進行映象構建,並結合持續整合(Continuous Integration) 系統進行整合測試,而運維人員則可以直接在生產環境中快速部署該映象,甚至結合持續部署(Continuous Delivery/Deployment) 系統進行自動部署。

更輕鬆的遷移:Docker 使用的分層儲存以及映象的技術,使得應用重複部分的複用更為容易,也使得應用的維護更新更加簡單,基於基礎映象進一步擴充套件映象也變得非常簡單。此外,Docker 團隊同各個開源專案團隊一起維護了一大批高質量的官方映象,既可以直接在生產環境使用,又可以作為基礎進一步定製,大大的降低了應用服務的映象製作成本。使用Dockerfile 使映象構建透明化,不僅僅開發團隊可以理解應用執行環境,也方便運維團隊理解應用執行所需條件,幫助更好的生產環境中部署該映象。

Docker的基本概念?

一、映象(Image)

映象,從認識上簡單的來說,就是面向物件中的類,相當於一個模板。從本質上來說,映象相當於一個檔案系統。Docker 映象是一個特殊的檔案系統,除了提供容器執行時所需的程式、庫、資源、配置等檔案外,還包含了一些為執行時準備的一些配置引數(如匿名卷、環境變數、使用者等)。映象不包含任何動態資料,其內容在構建之後也不會被改變。

二、容器(Container)

容器,從認識上來說,就是類建立的例項,就是依據映象這個模板創建出來的實體。容器的實質是程序,但與直接在宿主執行的程序不同,容器程序運行於屬於自己的獨立的名稱空間。因此容器可以擁有自己的root 檔案系統、自己的網路配置、自己的程序空間,甚至自己的使用者ID 空間。容器內的程序是執行在一個隔離的環境裡,使用起來,就好像是在一個獨立於宿主的系統下操作一樣。這種特性使得容器封裝的應用比直接在宿主執行更加安全。 

三、倉庫(Repository) 

倉庫,從認識上來說,就好像軟體包上傳下載站,有各種軟體的不同版本被上傳供使用者下載。映象構建完成後,可以很容易的在當前宿主機上執行,但是,如果需要在其它伺服器上使用這個映象,我們就需要一個集中的儲存、分發映象的服務,Docker Registry 就是這樣的服務。

三者關聯如下:

簡單點可以這樣理解,比如:我們需要安裝fastDFS,我們需要從倉庫(Repository) 中去拉取映象(Image),然後啟動容器(Container) ,我們可以用同一個映象(Image)啟動多個容器(Container)。

下面我們實際操作介紹下Docker安裝以及一些常用命令

Docker安裝(以centOS7.2為例)

1、Docker 要求 CentOS 系統的核心版本高於 3.10 ,先驗證你的CentOS 版本是否支援 Docker 。

[[email protected] ~]# uname -r
3.10.0-514.26.2.el7.x86_64

2、安裝docker

yum update -y
yum -y install docker

3、啟動docker 

systemctl start docker.service

4、 設定為開機啟動

systemctl enable docker.service

至此docker安裝完成。

下面介紹一些Docker常用的命令

1、列出本地主機上的全部映象

docker images

2、 Docker啟動的容器列表

docker ps

3、檢視docker建立的所有容器 

docker ps -a

4、啟動、停止、重啟某個docker 容器

docker start fastDFS
docker stop fastDFS
docker restart fastDFS

5、 刪除某個容器,若正在執行,需要先停止 

docker rm fastDFS

docker stop fastDFS
docker rm fastDFS

6、進入Docker容器內部

docker attach fastDFS

以上為Docker的一些入門,後續會更新一些Docker實際應用。