亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

搭建一個私有的Docker registry教程

2024-09-01 13:48:07
字體:
來源:轉載
供稿:網友

為什么需要搭建一個私有的registry呢?嗯,對于新手來說,Docker Hub(一個Docker公共倉庫)只允許你擁有一個免費的私有版本庫(repo)。其他的公司也開始提供類似服務,但是價格可不便宜。另外,如果你需要用Docker部署一個用于生產環境的應用,恐怕你不希望將這些鏡像放在公開的Docker Hub上吧!

這篇文章提供了一個非常務實的方法來處理搭建私有Docker registry時出現的各種錯綜復雜的情況。我們將會使用一個運行于DigitalOcean(之后簡稱為DO)的非常小巧的512MB VPS 實例。并且我會假定你已經了解了Docker的基本概念,因為我必須集中精力在復雜的事情上!

本地搭建

首先你需要安裝boot2docker以及docker CLI。如果你已經搭建好了基本的Docker環境,你可以直接跳過這一步。

從終端運行以下命令(我假設你使用OS X,使用 HomeBrew 來安裝相關軟件,你可以根據你的環境使用不同的包管理軟件來安裝):

brew install boot2docker docker 

如果一切順利(想要了解搭建docker環境的完整指南,請參閱 http://boot2docker.io/) ,你現在就能夠通過如下命令啟動一個 Docker 運行于其中的虛擬機:

boot2docker up 

按照屏幕顯示的說明,復制粘貼book2docker在終端輸出的命令。如果你現在運行docker ps命令,終端將有以下顯示。

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

好了,Docker已經準備就緒,這就夠了,我們回過頭去搭建registry。

創建服務器

登錄進你的DO賬號,選擇一個預安裝了Docker的鏡像文件,創建一個新的Drople。(本文寫成時選擇的是 Image > Applications > Docker 1.4.1 on 14.04)

Docker,registry

你將會以郵件的方式收到一個根用戶憑證。登錄進去,然后運行docker ps命令來查看系統狀態。

搭建AWS S3

我們現在將使用Amazo Simple Storage Service(S3)作為我們registry/repository的存儲層。我們將需要創建一個桶(bucket)以及用戶憑證(user credentials)來允許我們的docker容器訪問它。

登錄到我們的AWS賬號(如果沒有,就申請一個http://aws.amazon.com/),在控制臺選擇S3(Simpole Storage Service)。

Docker,registry

點擊 Create Bucket,為你的桶輸入一個名字(把它記下來,我們一會需要用到它),然后點擊Create。

Docker,registry

OK!我們已經搭建好存儲部分了。

設置AWS訪問憑證

我們現在將要創建一個新的用戶。退回到AWS控制臺然后選擇IAM(Identity & Access Management)。

Docker,registry

dashboard的左邊,點擊Users。然后選擇 Create New Users。

如圖所示:

Docker,registry

輸入一個用戶名(例如 docker-registry)然后點擊Create。寫下(或者下載csv文件)你的Access Key以及Secret Access Key?;氐侥愕挠脩袅斜砣缓筮x擇你剛剛創建的用戶。

在Permission section下面,點擊Attach User Policy。之后在下一屏,選擇Custom Policy。

Docker,registry

custom policy的內容如下:

{ "Version": "2012-10-17", "Statement": [  {   "Sid": "SomeStatement",   "Effect": "Allow",   "Action": [    "s3:*"   ],   "Resource": [    "arn:aws:s3:::docker-registry-bucket-name/*",        "arn:aws:s3:::docker-registry-bucket-name"   ]  } ]}

這個配置將允許用戶(也就是regitstry)來對桶上的內容進行操作(讀/寫)(確保使用你之前創建AWS S3時使用的桶名)??偨Y一下:當你想把你的Docker鏡像從你的本機推送到倉庫中時,服務器就會將他們上傳到S3。

安裝registry

現在回過頭來看我們的DO服務器,SSH登錄其上。我們將要使用一個官方Docker registry鏡像。

輸入如下命令,開啟registry。

docker run /      -e SETTINGS_FLAVOR=s3 /     -e AWS_BUCKET=bucket-name /     -e STORAGE_PATH=/registry /     -e AWS_KEY=your_aws_key /     -e AWS_SECRET=your_aws_secret /     -e SEARCH_BACKEND=sqlalchemy /     -p 5000:5000 /     --name registry /     -d /     registry

Docker將會從Docker Hub上拉取所需的文件系統分層(fs layers)并啟動守護容器(daemonised container)。

測試registry

如果上述操作奏效,你可以通過ping命令,或者查找它的內容來測試registry(雖然這個時候容器還是空的)。

我們的registry非常基礎,而且沒有提供任何“驗明正身”的方式。因為添加身份驗證可不是一件輕松事(至少我認為沒有一種部署方法是簡單的,像是為了證明你努力過似的),我覺得“查詢/拉取/推送”倉庫內容的最簡單方法就是通過SSH通道的未加密連接(通過HTTP)。

打開SSH通道的操作非常簡單:

ssh -N -L 5000:localhost:5000 root@your_registry.com

這條命令建立了一條從registry服務器(前面執行docker run命令的時候我們見過它)的5000號端口到本機的5000號端口之間的 SSH 管道連接。

如果你現在用瀏覽器訪問 http://localhost:5000/v1/_ping,將會看到下面這個非常簡短的回復。

{}

這個意味著registry工作正常。你還可以通過登錄 http://localhost:5000/v1/search 來查看registry內容,內容相似:

{ "num_results": 2, "query": "", "results": [  {   "description": "",   "name": "username/first-repo"  },  {   "description": "",   "name": "username/second-repo"  } ]}

創建一個鏡像

我們現在創建一個非常簡單的Docker鏡像,來檢驗我們新弄好的registry。在我們的本機上,用如下內容創建一個Dockerfile(這里只有一點代碼,在下一篇文章里我將會展示給你如何將一個Rails應用綁定進Docker容器中。):

# ruby 2.2.0 的基礎鏡像FROM ruby:2.2.0MAINTAINER Michelangelo Chasseur <michelangelo.chasseur@touchwa.re> 

并創建它:

docker build -t localhost:5000/username/repo-name . 

localhost:5000這個部分非常重要:Docker鏡像名的最前面一個部分將告知docker push命令我們將要把我們的鏡像推送到哪里。在我們這個例子當中,因為我們要通過SSH管道連接遠程的私有registry,localhost:5000精確地指向了我們的registry。

如果一切順利,當命令執行完成返回后,你可以輸入docker images命令來列出新近創建的鏡像。執行它看看會出現什么現象?

推送到倉庫

接下來是更好玩的部分。實現我所描述的東西著實花了我一點時間,所以如果你第一次讀的話就耐心一點吧,跟著我一起操作。我知道接下來的東西會非常復雜(如果你不自動化這個過程就一定會這樣),但是我保證到最后你一定都能明白。在下一篇文章里我將會使用到一大波shell腳本和Rake任務,通過它們實現自動化并且用簡單的命令實現部署Rails應用。

你在終端上運行的docker命令實際上都是使用boot2docker虛擬機來運行容器及各種東西。所以當你執行像docker push some_repo這樣的命令時,是boot2docker虛擬機在與registry交互,而不是我們自己的機器。

接下來是一個非常重要的點:為了將Docker鏡像推送到遠端的私有倉庫,SSH管道需要在boot2docker虛擬機上配置好,而不是在你的本地機器上配置。

有許多種方法實現它。我給你展示最簡短的一種(可能不是最容易理解的,但是能夠幫助你實現自動化)

在這之前,我們需要對 SSH 做最后一點工作。

設置 SSH

讓我們把boot2docker 的 SSH key添加到遠端服務器的“已知主機”里面。我們可以使用ssh-copy-id工具完成,通過下面的命令就可以安裝上它了:

brew install ssh-copy-id 

然后運行:

ssh-copy-id -i /Users/username/.ssh/id_boot2docker root@your-registry.com

用你ssh key的真實路徑代替/Users/username/.ssh/id_boot2docker。

這樣做能夠讓我們免密碼登錄SSH。

現在我們來測試以下:

boot2docker ssh "ssh -o 'StrictHostKeyChecking no' -i /Users/michelangelo/.ssh/id_boot2docker -N -L 5000:localhost:5000 root@registry.touchwa.re &" & 

分開闡述:

boot2docker ssh允許你以參數的形式傳遞給boot2docker虛擬機一條執行的命令;

最后面那個&表明這條命令將在后臺執行;
ssh -o 'StrictHostKeyChecking no' -i /Users/michelangelo/.ssh/id_boot2docker -N -L 5000:localhost:5000 root@registry.touchwa.re &是boot2docker虛擬機實際運行的命令;

-o 'StrictHostKeyChecking no'——不提示安全問題;
-i /Users/michelangelo/.ssh/id_boot2docker指出虛擬機使用哪個SSH key來進行身份驗證。(注意這里的key應該是你前面添加到遠程倉庫的那個)

最后我們將打開一條端口5000映射到localhost:5000的SSH通道。

從其他服務器上拉取

你現在將可以通過下面的簡單命令將你的鏡像推送到遠端倉庫:

 

復制代碼 代碼如下:

docker push localhost:5000/username/repo_name 

 

在下一篇文章中,我們將會了解到如何自動化處理這些事務,并且真正地容器化一個Rails應用。請繼續收聽!

如有錯誤,請不吝指出。祝你Docker之路順利!

via: http://cocoahunter.com/2015/01/23/docker-2/

作者:Michelangelo Chasseur 譯者:DongShuaike 校對:wxy

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久国产精品亚洲| yellow中文字幕久久| 亚洲成人激情图| 欧美激情极品视频| 国产亚洲欧美日韩精品| 欧美老女人性视频| 2019国产精品自在线拍国产不卡| 久久久久久久电影一区| 久久影院在线观看| 日韩动漫免费观看电视剧高清| 日本视频久久久| 国产精品自产拍在线观看中文| 亚洲第一网中文字幕| 亚洲天堂av在线免费观看| 国产偷国产偷亚洲清高网站| 久久精品精品电影网| 亚洲xxxx在线| 91chinesevideo永久地址| 亚洲一区亚洲二区亚洲三区| 97碰碰碰免费色视频| 国产精品电影久久久久电影网| 国产精品一香蕉国产线看观看| 亚洲乱码国产乱码精品精天堂| 一本色道久久88综合日韩精品| 国产精品白丝jk喷水视频一区| 91地址最新发布| 97视频免费看| 日本国产一区二区三区| 国产精品欧美风情| 成人午夜在线观看| 97国产成人精品视频| 成人免费观看网址| 日韩在线小视频| 欧美一区在线直播| 色偷偷av一区二区三区乱| 久久免费视频在线| 国产主播欧美精品| 国产精品日日做人人爱| 亚洲伊人第一页| 夜夜嗨av色综合久久久综合网| 亚洲精品白浆高清久久久久久| 国产亚洲精品va在线观看| 亚洲三级av在线| 91免费国产视频| 日韩av在线电影网| 91精品久久久久久久久久久| 日韩视频一区在线| 欧美亚洲国产另类| 91色中文字幕| 国产91精品久| 亚洲福利视频网站| 欧美在线精品免播放器视频| 国产精品99久久久久久久久| 久久九九精品99国产精品| 91av中文字幕| 91精品中文在线| 91亚洲精品一区| 国产91精品在线播放| 欧美在线视频一区二区| 亚洲自拍偷拍一区| 久久资源免费视频| 热久久99这里有精品| 日韩精品高清在线| 成人精品福利视频| 亚洲欧美另类中文字幕| 啪一啪鲁一鲁2019在线视频| 欧美老女人性生活| 午夜精品久久久久久99热软件| 欧美综合第一页| 亚洲一区二区中文字幕| 欧美在线一级va免费观看| 欧美午夜视频一区二区| 国产日韩欧美日韩| 国产精品久久久久久av| 亚洲欧美日韩精品久久亚洲区| 久久久久久久av| 欧美三级xxx| 91av在线国产| 国产日韩在线观看av| 97在线视频免费播放| 国产一区二区激情| 色综合视频一区中文字幕| 国产日韩专区在线| 日韩av在线一区| 日韩有码在线播放| 日本高清视频精品| 成人天堂噜噜噜| 亚洲精品91美女久久久久久久| 日本久久久久久| 国产精品尤物福利片在线观看| 国产91在线播放| 欧美激情视频在线免费观看 欧美视频免费一| 国模gogo一区二区大胆私拍| 97色在线观看免费视频| 高清亚洲成在人网站天堂| 在线观看国产精品淫| 国产精品99久久99久久久二8| 成人久久精品视频| 成人性生交大片免费看视频直播| 91久久嫩草影院一区二区| 亚洲图片在区色| 亚洲综合中文字幕在线观看| 午夜精品视频网站| 亚洲另类图片色| 欧美日韩亚洲视频| 亚洲精品永久免费| 国产精品成人一区二区| 久久久噜噜噜久噜久久| 成人午夜两性视频| 亚洲国产精久久久久久久| 久久综合亚洲社区| 国产91色在线|| 亚洲欧洲av一区二区| 正在播放国产一区| 91亚洲va在线va天堂va国| 亚洲在线观看视频网站| 欧美国产亚洲精品久久久8v| 久久中国妇女中文字幕| 欧美色图在线视频| 精品爽片免费看久久| 午夜精品www| 国产精品一区二区三区久久久| 九九久久综合网站| 综合国产在线视频| 国产精品电影观看| 亚洲a在线观看| 精品久久中文字幕久久av| 国产精品wwww| 欧美日韩中文在线观看| 国产97色在线| 最近更新的2019中文字幕| 国产主播精品在线| 久久久久久久久久av| 欧美一级大片在线免费观看| 北条麻妃久久精品| 亚洲欧洲一区二区三区在线观看| 欧美激情va永久在线播放| 一区二区亚洲精品国产| 亚洲一区二区免费在线| 欧美黑人一级爽快片淫片高清| 九九热这里只有在线精品视| 精品久久久视频| 欧美性生交大片免网| 国产精品免费久久久久影院| 亚洲xxx视频| 国产精品久久久久久av福利软件| 色综合天天狠天天透天天伊人| 欧美高清视频一区二区| 成人久久久久久久| 亚洲国产成人精品电影| 亚洲丁香久久久| 成人久久久久久久| 国产大片精品免费永久看nba| 国产97免费视| 亚洲xxx自由成熟| 久久国产一区二区三区| 成人免费观看49www在线观看| 欧美日韩电影在线观看| 日本a级片电影一区二区| 欧美第一页在线| 欧美黑人性生活视频| 亚洲日本中文字幕免费在线不卡| 中文字幕精品在线视频| 久久久久一本一区二区青青蜜月|