亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何搭建一個私有的Docker registry

發布時間:2022-05-26 16:35:12 來源:億速云 閱讀:150 作者:iii 欄目:大數據

這篇文章主要介紹“如何搭建一個私有的Docker registry”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“如何搭建一個私有的Docker registry”文章能幫助大家解決問題。

本地搭建

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

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

brew install boot2docker docker

如果一切順利(想要了解搭建docker環境的完整指南,請參閱 ) ,你現在就能夠通過如下命令啟動一個 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 ps命令來查看系統狀態。

搭建aws s3

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

登錄到我們的aws賬號(如果沒有,就申請一個),在控制臺選擇s3(simpole storage service)。

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

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

設置aws訪問憑證

我們現在將要創建一個新的用戶。退回到aws控制臺然后選擇iam(identity & access management)。

dashboard的左邊,點擊users。然后選擇 create new users

輸入一個用戶名(例如 docker-registry)然后點擊create。寫下(或者下載csv文件)你的access key以及secret access key。回到你的用戶列表然后選擇你剛剛創建的用戶。

在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時使用的桶名)。總結一下:當你想把你的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 管道連接。

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

{}

這個意味著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.0
maintainer 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 

關于“如何搭建一個私有的Docker registry”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青州市| 巴林左旗| 北流市| 伊川县| 梓潼县| 福鼎市| 成都市| 怀柔区| 五大连池市| 明星| 双鸭山市| 黎川县| 宜兴市| 封开县| 文昌市| 鄄城县| 阳信县| 济南市| 襄垣县| 刚察县| 平安县| 社旗县| 睢宁县| 延庆县| 安乡县| 射阳县| 稻城县| 嘉定区| 远安县| 酉阳| 澄迈县| 衡阳县| 蒲城县| 临城县| 武乡县| 景德镇市| 揭西县| 惠水县| 呈贡县| 永登县| 玛沁县|