Docker 容器化部署1小時簡單入門

2022-03-28 21:38:53 字數 2746 閱讀 8859

docker是dotcloud開源的、可以將任何應用包裝在linux container中執行的工具。2023年3月發布首個版本,當前最新版本為1.3。docker基於go語言開發,**託管在github上,目前超過10000次commit。基於docker的沙箱環境可以實現輕型隔離,多個容器間不會相互影響;docker可以自動化打包和部署任何應用,方便地建立乙個輕量級私有paas雲,也可以用於搭建開發測試環境以及部署可擴充套件的web應用等。

docker 在容器的基礎上,進行了進一步的封裝,從檔案系統、網路互聯到程序隔離等等,極大的簡化了容器的建立和維護。使得 docker 技術比虛擬機器技術更為輕便、快捷。

比較下 docker 和傳統虛擬化方式的不同之處。傳統虛擬機器技術是虛擬出一套硬體後,在其上執行乙個完整作業系統,在該系統上再執行所需應用程序;而容器內的應用程序直接執行於宿主的核心,容器內沒有自己的核心,而且也沒有進行硬體虛擬。因此容器要比傳統虛擬機器更為輕便。

特性容器

虛擬機器啟動

秒級分鐘級

硬碟使用

一般為mb

一般為gb

效能接近原生

弱於系統支援量

單機支援上千個容器

一般幾十個

docker 包括三個基本概念

理解了這三個概念,就理解了 docker 的整個生命週期。

我們都知道,作業系統分為核心和使用者空間。對於 linux 而言,核心啟動後,會掛載root檔案系統為其提供使用者空間支援。而 docker 映象(image),就相當於是乙個root檔案系統。比如官方映象ubuntu:18.04就包含了完整的一套 ubuntu 18.04 最小系統的root檔案系統。

docker 映象是乙個特殊的檔案系統,除了提供容器執行時所需的程式、庫、資源、配置等檔案外,還包含了一些為執行時準備的一些配置引數(如匿名卷、環境變數、使用者等)。映象不包含任何動態資料,其內容在構建之後也不會被改變。

映象(image)和容器(container)的關係,就像是物件導向程式設計中的例項一樣,映象是靜態的定義,容器是映象執行時的實體。容器可以被建立、啟動、停止、刪除、暫停等。

容器的實質是程序,但與直接在宿主執行的程序不同,容器程序執行於屬於自己的獨立的 命名空間。因此容器可以擁有自己的root檔案系統、自己的網路配置、自己的程序空間,甚至自己的使用者 id 空間。容器內的程序是執行在乙個隔離的環境裡,使用起來,就好像是在乙個獨立於宿主的系統下操作一樣。這種特性使得容器封裝的應用比直接在宿主執行更加安全。也因為這種隔離的特性,很多人初學 docker 時常常會混淆容器和虛擬機器。

前面講過映象使用的是分層儲存,容器也是如此。每乙個容器執行時,是以映象為基礎層,在其上建立乙個當前容器的儲存層,我們可以稱這個為容器執行時讀寫而準備的儲存層為容器儲存層

容器儲存層的生存週期和容器一樣,容器消亡時,容器儲存層也隨之消亡。因此,任何儲存於容器儲存層的資訊都會隨容器刪除而丟失。

按照 docker 最佳實踐的要求,容器不應該向其儲存層內寫入任何資料,容器儲存層要保持無狀態化。所有的檔案寫入操作,都應該使用 資料卷(volume、或者繫結宿主目錄,在這些位置的讀寫會跳過容器儲存層,直接對宿主(或網路儲存)發生讀寫,其效能和穩定性更高。

資料卷的生存週期獨立於容器,容器消亡,資料卷不會消亡。因此,使用資料卷後,容器刪除或者重新執行之後,資料卻不會丟失。

映象構建完成後,可以很容易的在當前宿主機上執行,但是,如果需要在其它伺服器上使用這個映象,我們就需要乙個集中的儲存、分發映象的服務,[docker registry] 就是這樣的服務。

乙個docker registry中可以包含多個倉庫repository);每個倉庫可以包含多個標籤tag);每個標籤對應乙個映象。

通常,乙個倉庫會包含同乙個軟體不同版本的映象,而標籤就常用於對應該軟體的各個版本。我們可以通過《倉庫名》:《標籤》的格式來指定具體是這個軟體哪個版本的映象。如果不給出標籤,將以latest作為預設標籤。

最常使用的 registry 公開服務是官方的 docker hub,這也是預設的 registry,並擁有大量的高質量的官方映象。

國內也有一些雲服務商提供類似於 docker hub 的公開服務。比如 時速雲映象倉庫、網易雲映象服務、daocloud 映象市場、阿里雲映象庫 等。

docker 分為 ce 和 ee 兩大版本。ce 即社群版(免費,支援週期 7 個月),ee 即企業版,強調安全,付費使用,支援週期 24 個月。

docker ce 支援 64 位版本 centos 7,並且要求核心版本不低於 3.10。 centos 7 滿足最低核心的要求,但由於核心版本比較低,部分功能(如overlay2儲存層驅動)無法使用,並且部分功能可能不太穩定。

uname -r

yum -y install docker

service docker start

docker run hello-world

docker version

sudo systemctl enable docker

到此 在centos7上安裝的docker 服務 完畢。 下一節更新利用docker 快速安裝 redis

Docker容器化部署技術

docker是乙個開源的應用容器引擎,它讓開發者可以將應用及其依賴環境打包起來在乙個可移植的容器 中執行,不同容器是相互隔離的,互不影響,相比虛擬機器,docker容器更加輕量級,開銷更小。docker有兩個版本,社群版 docker ce 和企業版 docker ee 社群版是免費的,適合個人或小...

專案docker容器化部署步驟

docker在部署時的一些基本步驟 主要針對我公司的專案環境 1.專案中存在不需要使用容器化的服務,所以請安裝jdk7 redis mq zookeeper dubbo控制台 2.映象匯入 3.編寫專案中的服務指令碼 以下是時代智囊在容器化部署中的一些批處理命令 sdznhelp 容器化部署的基礎命...

docker容器化部署nodejs應用

使用 dockerfile 建立映象 bossnodejs test v1.0.1 映象名稱 v版本號 空格 點 dockerfile 檔案所在目錄,可以指定dockerfile 的絕對路徑 docker build t bossnodejs test v1.0.1 標記本地映象,將其歸入某一倉庫 ...