Docker介紹以及Registry的安裝

dd2d 9年前發布 | 15K 次閱讀 Docker

本文介紹了Docker與Registry,作者說Docker是一個application hosting框架,亮點是簡化應用的部署以及應用部署的版本控制。同時,作者介紹了Docker Registry的安裝以及一個可以通過網頁瀏覽Registry的鏡像項目docker-registry-web。

Docker是一個應用托管框架(application hosting framework),它可以通過類似虛擬機一樣的容器來部署、管理應用,容器又可以通過API創建和控制它們。

Docker允許你把依賴/服務器和應用打包成一個疊加在其他鏡像(如Ubuntu,或專為需求準備的內容)之上的瘦小鏡像。有別于虛擬機的是,盡管使用了 LXCcgroups(前 面文章中提到的Linux概念)將它們與其它系統中的程序嚴格地隔離開來,它們卻共享著相同的資源,并且幾乎沒有額外開銷。當你啟動一個虛擬機,你最終得 到的是一個用于安裝或運行應用的提示符或UI。當你啟動一個應用容器,你只要運行一個用于啟動應用及其依賴的腳本,僅此而已。你能在一個系統上運行數個虛 擬機,卻可以運行上千個應用容器。如果你想要流線分布,可以考慮在系統層面上使用 CoreOS來托管你的鏡像。

Docker的另一個功能是版本控制。你可以把容器里做的任何改變提交成一個新的鏡像。當然,你也可以使用同一個鏡像(鏡像本身是不可變的)啟動任意多個容器。

在分發鏡像給其他團隊或公司的過程中,可能需要在你的當前系統之外找個地方發布或定位你的鏡像。這可通過Registry實現。盡管Docker提供了公共的 Docker Hub Registry,你或許想要一個用于自己公司或團隊的私有的Registry。

因為Docker的組件/附件自身經常是通過Docker鏡像發布的,本示例也側面展示了啟動一個以Docker為基礎的應用是多么簡單(如果你 之前并不熟悉這塊)。除了服務占用的端口之外,你無須知道客戶機應用的任何東西。實際上,你可以啟動其他Docker鏡像需要的鏡像(之后就被稱為容 器),讓Docker映射隨機的本地端口給它,然后將提供服務的容器的端口自動轉發到依賴這些服務的容器上(通過“ 鏈接”功能)。

使用類似 Registry項目首頁示例的命令來啟動你的Registry:

$ docker run 
     -e SETTINGS_FLAVOR=s3 
     -e AWS_BUCKET=mybucket 
     -e STORAGE_PATH=/registry 
     -e AWS_KEY=myawskey 
     -e AWS_SECRET=myawssecret 
     -e SEARCH_BACKEND=sqlalchemy 
     -p 5000:5000 
     registry

這主要是為應用設置六個環境變量,讓它保存到S3上,并將宿主(本地)系統的5000端口轉發到客戶機(Registry)的5000端口上。 “registry”是運行的鏡像名稱(如果它是由某個用戶擁有的,那看起來像是“/”)。如果本地尚不存在這個鏡像,它將被定位并拉取(pull)下 來。如果沒有使用registry前綴做限定,將會假定它位于Docker Hub上。

這個示例中,我們從Hub上將Ubuntu鏡像拉取下來,然后推送(push)到我們的Registry里。值得注意的是,我們通過添加Registry的主機名/端口前綴來限定“推送”和“拉取”請求到我們的registry中。

$ sudo docker pull ubuntu:14.04
$ sudo docker tag 826544226fdc yourregistry.net:5000/ubuntu
$ sudo docker push yourregistry.net:5000/ubuntu
$ sudo docker pull yourregistry.net:5000/ubuntu

tag命令在我們的registry中為給定的其他地方的鏡像保留了一個新的位置。你可以在本地列表中得到它的ID字符串。

默認情況下,Registry只與Docker socket直接通訊或通過REST進行管理。如果你想更容易地瀏覽鏡像,請安裝 docker-registry-web項目:

$ docker run -p 8080:8080 -e REG1=http://<system hostname>:5000/v1/ atcol/docker-registry-ui


請記住,它需要與你的Registry實例聯系,所以要確保你提供的registry主機名在docker-registry-web容器里可被解析。

截圖如下:


 


docker-registry-web實際上是一個Java應用,然而它是個設計不佳的鏡像(如果知道這點對你很重要的話)。

最后,在你玩夠Registry實例后,記得將它隱藏在Nginx代理之后,并添加認證(雙向、HTTP等)。

原文鏈接:Intro to Docker, and Private Image Registries(翻譯:Sean 審校:林仁)

來自:http://dockerone.com/article/108#

 本文由用戶 dd2d 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!