一個小姑娘在運維待了倆禮拜,開會提問說Docker是什麼?

大家好,我是頭部思維的創作者,如果文章對您有幫助,可以點擊右上角關注,感謝你的關注。

我剛去某公司上班的時候,在一次技術週會上,一個小姑娘提問說Docker是什麼,然後不出三天吧,就被辭退了。

不是說運維該不該掌握Docker,而是說既然工作中遇到自己不懂的技術,就要私下用功,瞭解個大概,再請教請教同事,而不是遇到陌生的技術,自己沒有積極的態度,去學習和掌握它,這也許就是職場與學校的區別。


一個小姑娘在運維待了倆禮拜,開會提問說Docker是什麼?


Docker是什麼

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

百度講的比較官方,在理解 docker 之前,首先我們得先區分清楚兩個概念,容器虛擬機

可能很多讀者朋友都用過虛擬機,而對容器這個概念比較的陌生。

我們用的傳統虛擬機如 VMware , VisualBox 之類的需要模擬整臺機器包括硬件,每臺虛擬機都需要有自己的操作系統,虛擬機一旦被開啟,預分配給它的資源將全部被佔用。每一臺虛擬機包括應用,必要的二進制和庫,以及一個完整的用戶操作系統。

而容器技術是和我們的宿主機共享硬件資源及操作系統,可以實現資源的動態分配。容器包含應用和其所有的依賴包,但是與其他容器共享內核。容器在宿主機操作系統中,在用戶空間以分離的進程運行。

容器技術是實現操作系統虛擬化的一種途徑,可以讓您在資源受到隔離的進程中運行應用程序及其依賴關係。通過使用容器,我們可以輕鬆打包應用程序的代碼、配置和依賴關係,將其變成容易使用的構建塊,從而實現環境一致性、運營效率、開發人員生產力和版本控制等諸多目標。容器可以幫助保證應用程序快速、可靠、一致地部署,其間不受部署環境的影響。容器還賦予我們對資源更多的精細化控制能力,讓我們的基礎設施效率更高。

Docker 屬於 Linux 容器的一種封裝,提供簡單易用的容器使用接口。它是目前最流行的 Linux 容器解決方案。


一個小姑娘在運維待了倆禮拜,開會提問說Docker是什麼?


Docker的三個基本要素

說到docker的三大要素,就是鏡像、容器、和倉庫的概念。

那麼先說說鏡像到底是什麼呢?

Docker 鏡像可以看作是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。鏡像不包含任何動態數據,其內容在構建之後也不會被改變。

運維人員常說的打鏡像,構建鏡像,就是通過一些方式打成一個鏡像包,比如常見的有通過dockerfile來創建鏡像,Dockerfile是一個Docker鏡像的描述文件,我們可以理解成火箭發射的A、B、C、D…的步驟。Dockerfile其內部包含了一條條的指令,每一條指令構建一層,因此每一條指令的內容,就是描述該層應當如何構建。鏡像構建完成後,通過鏡像來運行容器。

容器 的定義和鏡像 幾乎一模一樣,也是一堆層的統一視角,唯一區別在於容器的最上面那一層是可讀可寫的。

那倉庫就好理解了,存放鏡像的場所。

簡單來說,鏡像是 Docker 運行容器的前提,倉庫是存放鏡像的場所,可見鏡像更是 Docker 的核心。

除此之外還有倆個要素,就是沙箱和數據卷,簡單來說沙箱就是隔離,將應用之間的必要資源隔離開,防止相互影響。數據卷就是掛載到容器上,用於保存必要數據。

Docker的基本命令

看docker狀態: systemctl status docker

啟動docker: systemctl start docker或systemctl status docker

下載最新版的docker: yum -y install docker-ce

啟動Docker服務: service docker start

停止Docker服務: service docker stop

重新啟動Docker服務: service docker restart

查看Docker的版本號: docker version

從鏡像倉庫中下載: docker pull 鏡像地址:版本

根據鏡像id導出鏡像: docker save a2a69ca5184a > jt-centOS6.tar

根據鏡像名稱導出鏡像: docker save -o redis-3.2.8.tar redis:3.2.8

指定jar包導入鏡像文件: docker load -i docker-centos-6.5.tar

根據Id號刪除鏡像文件: docker rmi 容器Id

強制刪除鏡像文件刪除鏡像前需要先關閉容器: docker rmi -f 容器Id

查詢所有鏡像文件: docker images

查看鏡像文件細節信息: docker inspect index.alauda.cn/tutum/centos:6.5

修改鏡像的名稱: docker tag 舊鏡像名稱和端口 redis-ali:0.0.1

根據dockerfile來創建鏡像文件: docker build -t 鏡像名稱:版本號

根據鏡像名稱啟動容器: docker run -d --name 容器名 鏡像名:版本號

根據鏡像id啟動容器: docker run -d --name 容器名(自定) 鏡像id號

啟動容器,並指定暴露端口: docker run -d -p 虛擬機端口:鏡像端口 --name 容器名 鏡像名:版本號

查看活動的docker容器進程: docker ps

查看全部的容器: docker ps -a/-all

進入指定的容器: docker exec -it 容器id bash

停止指定容器: docker stop 容器Id號

啟動創建好的容器: docker start 容器Id號

關閉和刪除所有的容器: docker stop $(docker ps -q) & docker rm $(docker ps -aq)

刪除指定的容器: docker rm 容器Id

總結了一些,這是些基本的,關於docker還有許多命令操作,在公司的時候,用的最多的還有上傳鏡像包,生成鏡像,查看鏡像,修改鏡像名稱和版本號等等,用到什麼再查資料。


一個小姑娘在運維待了倆禮拜,開會提問說Docker是什麼?


Docker的優點

說了這麼多docker有啥優點呢?說的它的優點,還是要和虛擬機來比較的,docker提供輕量級的虛擬化,通過docker鏡像能創建出多個容器,一個容器相當於一個虛擬機,可以把鏡像快速不說道無數臺服務器上。相對於虛擬機,docker部分共享部分隔離,共享cpu,內存,磁盤甚至操作系統,極為輕量。

方便快捷已經是 Docker的最大優勢,過去需要用數天乃至數週的 任務,在Docker容器的處理下,只需要數秒就能完成。

好了,關於docker就介紹這麼多,如果想深入瞭解,推薦一本書給你《Docker技術入門與實戰》,我這有電子版,需要的話,點擊關注,私信我。

(此處已添加圈子卡片,請到今日頭條客戶端查看)


分享到:


相關文章: