Docker_基础知识
前言:
一直刷題也沒啥意思,學點其他的知識,docker技術也很有意思,而且之后給學弟學妹們搭建web賽題的時候,用docker搭建也比較方便,比較安全。
理論和實操同樣重要,所以先了解一些基礎知識!
0x00:為什么會出現docker
比如開發團隊編寫和運行代碼都沒有問題,但通過源碼打包發送給運維去部署時會出現因環境不同而造成的一些命令無法執行,從而使得環境無法部署,還有另一個原因也是因為通常在服務器上部署的環境都是相同的,如果一臺一臺去裝的話,環境配置會特別麻煩,換一臺機器,就要重新來一次,費力費時,而且運維會崩潰,所以docker技術就出現了,開發團隊在編寫好和運行好之后直接利用docker打包好,運維只需在機器上部署已經打包好的docker環境即可,不用再擔心因環境問題而運行不了,而且在部署相同軟件的時候也可以把原始環境一模一樣的復制過來,不用重復工作,提高了工作效率。
0x01:Docker理念
Docker通過對應用組件的封裝、分發、部署、運行等生命周期的管理,使用戶的APP或WEB應用等及其運行環境能夠做到“一次封裝,到處運行”
0x02:docker是什么
解決了運行環境和配置問題軟件容器,方便做持續集成并有助于整體發布的容器虛擬化技術
0x03:docker能干什么
Docker和傳統虛擬化的不同之處:
0x04:Docker的三要素
- 鏡像(image)
- 容器 (container)
- 倉庫(repository)
Docker鏡像就是一個只讀的模板。鏡像可以用來創建Docker容器,一個鏡像可以創建很多容器。
容器與鏡像的關系類似于面向對象編程中的對象與類
| 容器 | 對象 |
| 鏡像 | 類 |
Docker利用容器獨立運行的一個或一組應用。容器是用鏡像創建的運行實例。可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。
可以把容器看做是一個簡易版的Linux環境(包括root用戶權限、進程空間、用戶空間和網絡空間等)和運行在其中的應用程序。容器的定義和鏡像幾乎一模一樣。也是一堆層的統一視角,唯一區別在于容器的最上面那一層是可讀可寫的。
倉庫是集中存放鏡像文件的場所。
倉庫和倉庫注冊服務器是有區別的。倉庫注冊服務器上往往存放著多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標簽(tag)
倉庫分為公開倉庫和私有倉庫兩種形式。
0x05:知識小結
需要正確的理解倉儲/鏡像/容器這幾個概念:
Docker本身是一個容器運行載體或稱之為管理引擎。我們把應用程序和配置依賴打包好形成一一個可交付的運行環境,這個打包好的運行環境就是image鏡像文件。只有通過這個鏡像文件才能生成Docker容器。image文件可以看作是容器的模板。Docker根據image文件生成容器的實例。同一個image文件,可以生成多個同時運行的容器實例。
- image文件生成的容器實例,本身也是一個文件,稱為鏡像文件。
- 一個容器運行一種服務,當我們需要的時候,就可以通過docker客戶端創建一個對應的運行實例,也就是我們的容器 至于倉儲,就是放了一堆鏡像的地方,我們可以把鏡像發布到倉儲中,需要的時候從倉儲中拉下來就可以了。
0x06:安裝Docker
我做練習的機器是Centos7,安裝下面的方法安裝即可
1、安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
sudo yum install -y yum-utils device-mapper-persistent-data lvm22、設置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo3、安裝docker
這里我安裝的是17.12.1.ce
4、啟動Docker并加入開機啟動
systemctl start docker systemctl enable docker5、驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了)
docker version0x07:阿里云鏡像加速器配置
也比較好配置,按照人家給的代碼復制粘貼即可
0x08:Hello World鏡像
docker run hello-world
由于本地沒有hello-world這個鏡像,所以會下載一個hello-world鏡像,并在容器內運行。
過程如下圖:
0x09:Docker運行底層原理
Docker是怎么工作的?
Docker是一個Client-Server結構的系統,Docker守護進程運行在主機上,然后通過Socket連接從客戶端訪問,守護進程從客戶端接受命令并管理運行在主機上的容器。
為什么Docker比較比vm快?
- docker有著比虛擬機更少的抽象層。由于docker不需要Hypervisor實現硬件資源虛擬化,運行在docker容器上的程序直接使用的都是實際物理機的硬件資源。因此在CPU、內存利用率上docker將會在效率上有明顯優勢。
- docker利用的是宿主機的內核,而不需要Guest OS。因此,當新建一個 容器時,docker不需要和虛擬機-樣 重新加載一個操作系統內核。所以避免引尋、加載操作系統內核返個比較費時費資源的過程,當新建–個虛擬機時,虛擬機軟件需要加載GuestOS,返個新建過程是分鐘級別的。而docker由于直接利用宿主機的操作系統,則省略了返個過程,因此新建一個docker容器只需要幾秒鐘。
總結:
這次就先學習到這里,下次學習Docker相關命令。
總結
以上是生活随笔為你收集整理的Docker_基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Centos Mysql数据还原
- 下一篇: Docker_容器命令