docker生態圈有哪些

生態圈有:1、docker Hub,是預先寫好的Dockerfile官方資源,提供公共的和私人的鏡像存儲庫;2、Docker Engine,用于運行和管理容器的核心軟件;3、Kitematic,是一個可視化管理工具;4、Machine和Swarm,為各種虛擬化和云服務提供商提供了一套簡單的工具集用以移動和縮放它們的本地項目;5、Compose;6、Cloud;7、Center。

docker生態圈有哪些

本教程操作環境:linux5.9.8系統、docker-1.13.1版、Dell G3電腦。

Docker是一個用來創建“容器”的工具,這些容器僅僅包含你所需要的一個獨立的應用或者技術堆棧。與虛擬機不同的是,這些容器共享相同的資源來管理容器與主機之間的相互作用。這一點使得Docker容器快速、輕量、安全并且共享。 ?

當前可用的Docker生態系統存在部分,包括:Docker Hub、Docker Engine、Kitematic、Docker Machine、Swarm、Docker Compose、Dokcer Cloud以及Data Center,下面會詳細介紹這些工具的功能,以及怎樣能夠更好地將這些工具結合起來。

Docker Hub

任何使用Docker的項目的核心是一個 ?Dockerfile ?文件。這個文件包含Docker如何創建一個鏡像的指示說明。讓我們來看一個簡單的例子: ?

FROM python:2.7 ADD . /code WORKDIR /code RUN pip install -r requirements.txt

在這個例子中,該Dockerfile文件拉取一個特定版本的現有鏡像,將當前本地目錄復制進容器的文件系統,并設置它為工作目錄,然后通過pip命令從一個文本文件下載Python依賴。? ?

Docker Hub ?是預先寫好的Dockerfile官方資源,提供公共的(免費的)和私人的(付費的)鏡像存儲庫。如果你正在尋找一個Dockerfile來滿足你的需求,首先在Docker Hub上搜索,使用項目文檔、下載量和鏡像等級來幫助指導你的決定。? ?

docker生態圈有哪些

Docker Engine(引擎)

Docker?Engine(引擎)是用來運行和管理容器的核心軟件。通常人們會簡單地將其代指為 Docker 或 Docker 平臺。Docker 引擎由許多專用的工具協同工作,從而可以創建和運行容器,例如 API、執行驅動、運行時、shim 進程等。

Docker Engine創建Dockerfile文件并把它們轉化為可用的容器。Docker Engine是Docker的核心,如果沒有Docker Engine那么什么也運行不了。依據你的操作系統不同有幾種下載Docker Engine的方案,你可以 ?在這里發現更多的細節 ?。? ?

依據Docker Hub中的一個鏡像開啟一個容器,應該首先拉取這個鏡像并運行它。繼續以Python為例: ?

docker pull python docker run -it --rm --name script-name -v "$PWD":/usr/src/appname -w /usr/src/appname python:3 python app.py

?這樣就會拉取最新的Python鏡像然后開啟一個容器運行一個Python腳本并且運行完后退出容器。run命令提供了更多的選項設置,你可以 ?在這里閱讀完整的指南 ?。? ?

當一個Docker run命令開始變得更為復雜,它可以創建自己的自定義Dockerfile文件或許是一個更好的主意。開啟一個基于本地Dockerfile文件的容器,運行以下里面包含文件的目錄: ?

docker build -t my_image .

這個命令將會創建一個名為my_image的鏡像。運行以下命令開啟一個基于這個鏡像的容器: ?

docker run -name my_image_container -i -t my_image

這個命令會開啟一個基于自定義的my_image鏡像的容器,這個容器命名為my_image_container。 ?

Kitematic(Docker可視化管理工具)

對于那些寧愿避免命令行的用戶來說, ?Kitematic ?是一個 Docker?GUI?工具,它可以更快速、更簡單的運行Docker容器,現在已經支持 Mac /Windows/Linux。

搜索你需要的鏡像,創建一個容器,你最好去Kitematic。Kitematic提供了基本的配置選項,但對于更高級的設置,你可能需要進入命令行。? ?

docker生態圈有哪些

你的容器出現在左手邊,在那里它們可以被啟動、停止、重啟,更有用的是,你可以在那里找到容器日志和直接SSH(exec按鍵)訪問。? ?

docker生態圈有哪些

Docker Machine和Swarm

生產中使用Docker的第一步是了解 ?Machine ?和Swarm,它們為各種虛擬化和云服務提供商提供了一套簡單的工具集用以移動和縮放他們的本地項目。 ?

“生產中使用Docker的第一步是了解Machine和Swarm。” ?

例如,在Azure上創建一個Docker實例: ?

docker-machine create -d azure --azure-subscription-id="XXX" --azure-subscription-cert="/mycert.pem" ecodemo

這個命令使用預裝的Docker創建一個Ubuntu 12.04-based虛擬機并命名為ecodemo。每個供應商都需要不同的參數和認證方法,這些默認設置可以被重寫。在 ?這個文檔 ?中可以閱讀到更多的細節。? ?

當與 ?Swarm ?結合后,Machine可以創建Docker實例的集群,這個集群被視為一個單一的、大的Docker實例。每一個Swarm集群都需要一個master實例,這個master實例可以用下面的命令來創建: ?

docker-machine create -d virtualbox --swarm --swarm-master --swarm-discovery token://TOKEN_ID swarm-master

這樣就會在VirtualBox中創建一個Docker實例并且設置這個Docker實例為Swarm集群的一個master節點。TOKEN_ID非常重要,因為它可以幫助集群中的所有節點識別彼此。除了手動創建TOKEN_ID標識以外,Swarm也有 ?發現系統 ?來幫助你管理這個過程。?

下面的命令使用相同的TOKEN_ID標識添加Docker實例到Swarm集群: ?

docker-machine create -d virtualbox --swarm --swarm-discovery token://TOKEN_ID swarm-node-n

swarm-node-n對于集群中的每一個節點來說都是一個唯一的名字。? ?

現在,代替從單個虛擬機中開啟容器,你可以在集群中開啟容器,master節點將會把這個容器分配給最可用的和最有能力的節點。?

Docker Compose

Compose ?使得由多個組件(像容器)組成的應用程序更加簡單,你可以開始使用一個命令在一個單一的配置文件中聲明所有這些組件。? ?

下面是一個Compose文件(稱為docker-compose.yml)的例子,這個例子創建三個 ?Crate ?數據庫實例和一個 ?Laravel ?(用一些額外的配置)PHP框架實例。最重要的是,容器與Links配置選項相連。 ?

crate1: image: crate ports: - "4200:4200" - "4300:4300" crate2: image: crate crate3: image: crate volumes: - ./data:/importdata laravelcomposer: image: dylanlindgren/docker-laravel-composer volumes: - /laravel-application:/var/www command: --working-dir=/var/www install links: - crate1 laravelartisan: image: dylanlindgren/docker-laravel-artisan links: - crate1 volumes_from: - laravelcomposer working_dir: /var/www command: serve --host=0.0.0.0:8080 ports: - "8000:8000" - "8080:8080"

所有這些實例和它們的配置現在可以通過運行以下在同一目錄中的docker-compose.yml文件的命令來開始: ?

docker-compose up

docker生態圈有哪些

你可以使用相同的子命令作為Docker的命令來影響所有以docker-compose開始的容器。例如,docker-compose stop命令可以停止以docker-compose開始的容器。? ?

docker生態圈有哪些

Docker Cloud

容器的自動化管理和編排是Docker的主要功能,但卻一直由第三方服務來提供,直到去年Docker獲得了 ?Tutum(它支撐著Docker云) ?。雖然沒有完整的命令行工具(還沒有),Docker云服務允許Docker Compose文件設置應用程序棧,所以它不是來自于生態型的其它部分的一個大的導流。 ?

“容器的自動化管理是Docker的重要組成,但知道最近一直由第三方來提供。” ?

例如: ?

crate1: image: crate ports: - "4200:4200" - "4300:4300" command: crate -Des.network.publish_host=_ethwe:ipv4_ crate2: image: crate command: crate -Des.network.publish_host=_ethwe:ipv4_ crate3: image: crate command: crate -Des.network.publish_host=_ethwe:ipv4_

這樣就創建了同一個鏡像的三個實例,其中一個手動設置主機與Docker之間的端口分配,其他的端口分配是自動的。我將很快重新訪問command。? ?

如果你想在超過一個節點(節點能夠運行它可以管理的足夠多的容器和一個私有倉庫上擴展應用程序,Docker Cloud是有償服務。這對于實驗目的來說足夠了。記住,Docker Cloud默認管理托管在第三方托管服務器上的容器,所以你也需要支付費用。使得Docker Cloud代理運行在任何你管理的Linux主機上是可能的,你可以 ?在這里找到操作指南 ?。? ?

docker生態圈有哪些

上面的截圖顯示了三個使用預先設定的規則運行在跨越兩個數字海洋的實例上的Docker容器,這個預先設定的規則是根據你設置的參數來將容器分配給主機。它會自動確保你指定數量的容器始終在運行。? ?

在之前的Docker Compose例子中,你可能已經注意到_ethwe:ipv4_。這是Docker Cloud的另外一個重要特征。許多分布式應用和服務依賴“ ?服務發現 ?”來找到同一服務的其他實例并進行通信。當在數據中心和物理機器上傳播服務時,這往往需要實例的手動說明或者需要另一種方式來找到彼此。? ?

Docker Cloud包括支持 ?Weave ?在你的實際網絡中創建一個“軟”網絡;所有的容器和應用都可以發現彼此,無論它們被托管在哪里。在上面的例子中,我們重寫了向容器發出的默認命令,以確保它接收它需要使用此功能的信息。 ?

Data Center

到目前為止,本文涉及的大部分工具都是你安裝,主機,和支持的工具。對企業用戶來說,他們尋找安全性、性能和支持較高的保證,Docker提供了 ?數據中心 ?。? ?

它使用了覆蓋這里的許多相同的工具包,但是增加了一個放置你的鏡像的私有倉庫,一個私有云,高級支持,和供應商可能吸引企業用戶的第三方集成。這些包括LDAP and Active Directory用戶管理,容器檢測,和日志記錄。 ?

推薦學習:《在這里找到操作指南

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享