最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

搭建一個(gè)私有的Docker registry教程

 更新時(shí)間:2016年09月03日 12:59:20   作者:Michelangelo Chasseur  
這篇文章提供了一個(gè)非常務(wù)實(shí)的方法來處理搭建私有Docker registry時(shí)出現(xiàn)的各種錯(cuò)綜復(fù)雜的情況。我們將會(huì)使用一個(gè)運(yùn)行于DigitalOcean(之后簡稱為DO)的非常小巧的512MB VPS 實(shí)例

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

這篇文章提供了一個(gè)非常務(wù)實(shí)的方法來處理搭建私有Docker registry時(shí)出現(xiàn)的各種錯(cuò)綜復(fù)雜的情況。我們將會(huì)使用一個(gè)運(yùn)行于DigitalOcean(之后簡稱為DO)的非常小巧的512MB VPS 實(shí)例。并且我會(huì)假定你已經(jīng)了解了Docker的基本概念,因?yàn)槲冶仨毤芯υ趶?fù)雜的事情上!

本地搭建

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

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

brew install boot2docker docker 

如果一切順利(想要了解搭建docker環(huán)境的完整指南,請(qǐng)參閱 http://boot2docker.io/) ,你現(xiàn)在就能夠通過如下命令啟動(dòng)一個(gè) Docker 運(yùn)行于其中的虛擬機(jī):

boot2docker up 

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

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

好了,Docker已經(jīng)準(zhǔn)備就緒,這就夠了,我們回過頭去搭建registry。

創(chuàng)建服務(wù)器

登錄進(jìn)你的DO賬號(hào),選擇一個(gè)預(yù)安裝了Docker的鏡像文件,創(chuàng)建一個(gè)新的Drople。(本文寫成時(shí)選擇的是 Image > Applications > Docker 1.4.1 on 14.04)

你將會(huì)以郵件的方式收到一個(gè)根用戶憑證。登錄進(jìn)去,然后運(yùn)行docker ps命令來查看系統(tǒng)狀態(tài)。

搭建AWS S3

我們現(xiàn)在將使用Amazo Simple Storage Service(S3)作為我們r(jià)egistry/repository的存儲(chǔ)層。我們將需要?jiǎng)?chuàng)建一個(gè)桶(bucket)以及用戶憑證(user credentials)來允許我們的docker容器訪問它。

登錄到我們的AWS賬號(hào)(如果沒有,就申請(qǐng)一個(gè)http://aws.amazon.com/),在控制臺(tái)選擇S3(Simpole Storage Service)。

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

OK!我們已經(jīng)搭建好存儲(chǔ)部分了。

設(shè)置AWS訪問憑證

我們現(xiàn)在將要?jiǎng)?chuàng)建一個(gè)新的用戶。退回到AWS控制臺(tái)然后選擇IAM(Identity & Access Management)。

dashboard的左邊,點(diǎn)擊Users。然后選擇 Create New Users

如圖所示:

輸入一個(gè)用戶名(例如 docker-registry)然后點(diǎn)擊Create。寫下(或者下載csv文件)你的Access Key以及Secret Access Key。回到你的用戶列表然后選擇你剛剛創(chuàng)建的用戶。

在Permission section下面,點(diǎn)擊Attach User Policy。之后在下一屏,選擇Custom Policy。

custom policy的內(nèi)容如下:

{
 "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"
   ]
  }
 ]
}

這個(gè)配置將允許用戶(也就是regitstry)來對(duì)桶上的內(nèi)容進(jìn)行操作(讀/寫)(確保使用你之前創(chuàng)建AWS S3時(shí)使用的桶名)??偨Y(jié)一下:當(dāng)你想把你的Docker鏡像從你的本機(jī)推送到倉庫中時(shí),服務(wù)器就會(huì)將他們上傳到S3。

安裝registry

現(xiàn)在回過頭來看我們的DO服務(wù)器,SSH登錄其上。我們將要使用一個(gè)官方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將會(huì)從Docker Hub上拉取所需的文件系統(tǒng)分層(fs layers)并啟動(dòng)守護(hù)容器(daemonised container)。

測試registry

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

我們的registry非?;A(chǔ),而且沒有提供任何“驗(yàn)明正身”的方式。因?yàn)樘砑由矸蒡?yàn)證可不是一件輕松事(至少我認(rèn)為沒有一種部署方法是簡單的,像是為了證明你努力過似的),我覺得“查詢/拉取/推送”倉庫內(nèi)容的最簡單方法就是通過SSH通道的未加密連接(通過HTTP)。

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

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

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

如果你現(xiàn)在用瀏覽器訪問 http://localhost:5000/v1/_ping,將會(huì)看到下面這個(gè)非常簡短的回復(fù)。

{}

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

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

創(chuàng)建一個(gè)鏡像

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

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

并創(chuàng)建它:

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

localhost:5000這個(gè)部分非常重要:Docker鏡像名的最前面一個(gè)部分將告知docker push命令我們將要把我們的鏡像推送到哪里。在我們這個(gè)例子當(dāng)中,因?yàn)槲覀円ㄟ^SSH管道連接遠(yuǎn)程的私有registry,localhost:5000精確地指向了我們的registry。

如果一切順利,當(dāng)命令執(zhí)行完成返回后,你可以輸入docker images命令來列出新近創(chuàng)建的鏡像。執(zhí)行它看看會(huì)出現(xiàn)什么現(xiàn)象?

推送到倉庫

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

你在終端上運(yùn)行的docker命令實(shí)際上都是使用boot2docker虛擬機(jī)來運(yùn)行容器及各種東西。所以當(dāng)你執(zhí)行像docker push some_repo這樣的命令時(shí),是boot2docker虛擬機(jī)在與registry交互,而不是我們自己的機(jī)器。

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

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

在這之前,我們需要對(duì) SSH 做最后一點(diǎn)工作。

設(shè)置 SSH

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

brew install ssh-copy-id 

然后運(yùn)行:

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

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

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

現(xiàn)在我們來測試以下:

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

分開闡述:

boot2docker ssh允許你以參數(shù)的形式傳遞給boot2docker虛擬機(jī)一條執(zhí)行的命令;

最后面那個(gè)&表明這條命令將在后臺(tái)執(zhí)行;
ssh -o 'StrictHostKeyChecking no' -i /Users/michelangelo/.ssh/id_boot2docker -N -L 5000:localhost:5000 root@registry.touchwa.re &是boot2docker虛擬機(jī)實(shí)際運(yùn)行的命令;

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

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

從其他服務(wù)器上拉取

你現(xiàn)在將可以通過下面的簡單命令將你的鏡像推送到遠(yuǎn)端倉庫:

復(fù)制代碼 代碼如下:

docker push localhost:5000/username/repo_name 

在下一篇文章中,我們將會(huì)了解到如何自動(dòng)化處理這些事務(wù),并且真正地容器化一個(gè)Rails應(yīng)用。請(qǐng)繼續(xù)收聽!

如有錯(cuò)誤,請(qǐng)不吝指出。祝你Docker之路順利!

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

作者:Michelangelo Chasseur 譯者:DongShuaike 校對(duì):wxy

相關(guān)文章

  • docker-maven-plugin打包鏡像并上傳到私有倉庫

    docker-maven-plugin打包鏡像并上傳到私有倉庫

    本文主要介紹了docker-maven-plugin打包鏡像并上傳到私有倉庫,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Docker與docker-compose中volume參數(shù)的使用方式

    Docker與docker-compose中volume參數(shù)的使用方式

    文章介紹了Docker中的數(shù)據(jù)卷Volume的概念及其在宿主機(jī)和容器之間的數(shù)據(jù)共享和持久化,它詳細(xì)說明了兩種數(shù)據(jù)掛載方式:通過宿主機(jī)絕對(duì)路徑掛載和通過卷標(biāo)映射掛載,包括匿名掛載和具名掛載,同時(shí),文章還展示了如何通過docker命令查看數(shù)據(jù)卷的宿主機(jī)目錄
    2024-11-11
  • docker中的link和network網(wǎng)絡(luò)互連問題

    docker中的link和network網(wǎng)絡(luò)互連問題

    這篇文章主要介紹了docker中的link和network網(wǎng)絡(luò)互連問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Docker和鏡像的操作方法

    Docker和鏡像的操作方法

    這篇文章主要介紹了Docker和鏡像的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • docker安裝及docker中nginx配置方法

    docker安裝及docker中nginx配置方法

    這篇文章主要介紹了docker安裝及docker中nginx配置方法,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • Docker搭建php環(huán)境教程詳解

    Docker搭建php環(huán)境教程詳解

    這篇文章主要介紹了Docker搭建php環(huán)境教程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Docker如何掛載mysql

    Docker如何掛載mysql

    這篇文章主要介紹了Docker如何掛載mysql問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 詳解docker國內(nèi)鏡像拉取和鏡像加速registry-mirrors配置修改

    詳解docker國內(nèi)鏡像拉取和鏡像加速registry-mirrors配置修改

    由于國內(nèi)訪問直接訪問Docker hub網(wǎng)速比較慢,拉取鏡像的時(shí)間就會(huì)比較長。一般我們會(huì)使用鏡像加速或者直接從國內(nèi)的一些平臺(tái)鏡像倉庫上拉取
    2017-05-05
  • Docker無法連接到Docker?Hub和鏡像加速器的問題詳解

    Docker無法連接到Docker?Hub和鏡像加速器的問題詳解

    這篇文章主要介紹了Docker容器無法連接到DockerHub或鏡像加速器問題的步驟,包括檢查和更換DNS服務(wù)器、測試網(wǎng)絡(luò)連通性、使用鏡像加速器和檢查防火墻及安全組規(guī)則,通過逐一排查,可以解決大多數(shù)連接問題,需要的朋友可以參考下
    2025-03-03
  • Docker swarm 簡單使用教程

    Docker swarm 簡單使用教程

    Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干臺(tái)Docker主機(jī)抽象為一個(gè)整體,并且通過一個(gè)入口統(tǒng)一管理這些Docker主機(jī)上的各種Docker資源,接下來通過本文給大家介紹Docker swarm 簡單使用,感興趣的朋友一起看看吧
    2021-11-11

最新評(píng)論

南投市| 休宁县| 乾安县| 安图县| 永川市| 义马市| 锦州市| 光山县| 太仆寺旗| 武乡县| 盐边县| 阳原县| 惠来县| 南和县| 东辽县| 宜阳县| 改则县| 乡宁县| 黄骅市| 陵川县| 阿城市| 北票市| 正宁县| 轮台县| 微博| 元阳县| 涪陵区| 凌云县| 伊川县| 安泽县| 渝中区| 汶上县| 三江| 三河市| 崇阳县| 抚顺市| 东乡族自治县| 百色市| 江华| 平凉市| 德兴市|