搭建docker私服倉庫(緩存代理倉庫)

一、生成https通信需要的證書文件

這一步生成與倉庫進行https通信時需要的證書文件宿接,使用的工具是openssl辕录,生成的過程如下:

文件 用途
ca.key ca私鑰文件
ca.csr 根證書的簽發(fā)申請文件
ca.crt/ca.cer 證書文件
ca.cnf 約束根證書只用于簽發(fā)其他證書
site.key 倉庫私鑰
site.csr 倉庫證書簽發(fā)申請文件
site.crt/site.cer 倉庫證書文件
site.cnf 約束倉庫只用于服務(wù)器認證的配置文件

箭頭上的文字代表所使用的openssl子命令走诞,數(shù)字+“#”號表示步驟順序速梗。具體每一步使用的命令在下面有說明姻锁。
這個過程docker文檔中也有一個例子猜欺。不過它使用的Common Name是localhost,而我們的倉庫需要給其他機器訪問涧黄,需要修改為對應(yīng)的ip地址或者域名。

1懊昨、生成CA根證書

  1. 生成ca根證書秘鑰文件ca.key
    openssl genrsa -out "ca.key" 4096
    
  2. 生成根證書簽發(fā)申請文件ca.csr
    openssl req \
              -new -key "ca.key" \
              -out "ca.csr" -sha256 \
              -subj '/C=US/ST=CA/L=San Francisco/O=Docker/CN=Swarm Secret Example CA'
    
  3. 創(chuàng)建根證書配置文件春宣,命名為ca.cnf
    [root_ca]
    basicConstraints = critical,CA:TRUE,pathlen:1
    keyUsage = critical, nonRepudiation, cRLSign, keyCertSign
    subjectKeyIdentifier=hash
    
  4. 簽發(fā)根證書文件月帝,生成ca.crt
     openssl x509 -req  -days 3650  -in "ca.csr" \
                   -signkey "ca.key" -sha256 -out "ca.crt" \
                   -extfile "ca.cnf" -extensions \
                   root_ca
    

2、生成倉庫服務(wù)器https通信證書

  1. 生成一個私鑰site.key
    openssl genrsa -out "site.key" 4096
    
  2. 生成服務(wù)器證書簽證申請文件site.csr
    openssl req -new -key "site.key" -out "site.csr" -sha256 \
          -subj '/C=US/ST=CA/L=San Francisco/O=Docker/CN=localhost'
    

    劃重點: 命令中的localhost需要替換為將來用于訪問倉庫的域名簿姨,例如:registry.local.com扁位。

  3. 創(chuàng)建配置文件site.cnf
    [server]
    authorityKeyIdentifier=keyid,issuer
    basicConstraints = critical,CA:FALSE
    extendedKeyUsage=serverAuth
    keyUsage = critical, digitalSignature, keyEncipherment
    subjectAltName = DNS:localhost, IP:127.0.0.1
    subjectKeyIdentifier=hash
    

    劃重點: localhost127.0.0.1要換為倉庫的訪問域名和ip地址贤牛,例如:registry.local.com
    192.168.10.100则酝。

  4. 用根證書簽證服務(wù)器證書,生成site.crt證書文件
    openssl x509 -req -days 750 -in "site.csr" -sha256 \
    -CA "ca.crt" -CAkey "ca.key"  -CAcreateserial \
    -out "site.crt" -extfile "site.cnf" -extensions server
    

二般卑、在運行倉庫的機器上運行官方倉庫鏡像library/registry

  1. 首先下載該鏡像

    docker pull registry:2.6.2
    
  2. 運行
    這里有三種方式:

    • container(docker run)
    • service(docker service create)
    • stack(docker stack deploy)

    三種方式都可以蝠检,這里以stack為例挚瘟,其他兩種根據(jù)配置做對應(yīng)參數(shù)填充即可。具體參考官方CLI對應(yīng)命令的文檔焰檩。
    但是運行之前订框,要先知道一個重要的文件,

    1. /etc/docker/registry/config.yml
      這是倉庫程序的總配置文件国旷,是一個yml格式的文本文件茫死,可以配置的項很多。具體可以配置的項以及每一項的說明可以在官方文檔找到特漩。
      而這里我們需要配置的項有:

      # config.yml
      version: 0.1
      storage:
        filesystem:
          rootdirectory: /var/lib/registry #鏡像文件存放目錄骨杂,這是默認值,不配置也可以蛤售,需要的可以自己修改
      proxy:
        remoteurl: 上游倉庫訪問地址       # 所代理的倉庫悴能,也就是本地倉庫的上游倉庫
      http:
        addr: 0.0.0.0:443                 # 倉庫綁定的ip地址與端口號
        tls:
          certificate: /certs/site.crt    # 倉庫證書雳灾,就是上面我們用根證書簽證過的服務(wù)器證書
          key: /certs/site.key            # 倉庫私鑰,就是用于生成證書的私鑰(注意不是ca的私鑰)
      

      劃重點: 注意這個配置文件中所有用到的文件和目錄都是從容器內(nèi)部訪問的炒嘲,所以連同這個配置文件本身都需要掛載進容器夫凸。

    2. 不過這個文件并不是必須的阱持,在配置文件中的每一項,都可以通過以一定規(guī)則命名的環(huán)境變量傳遞給容器來配置鸽扁,這個規(guī)則是镶骗,以REGISTRY開頭,之后按照配置文件的樹形結(jié)構(gòu),每一級通過下劃線_連接,例如倉庫目錄的環(huán)境變量是:

      REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/somewhere
      

      如果有數(shù)組值即横,則后跟下劃線和索引如_0东囚,_1……

    3. 現(xiàn)在以stack為例战授,寫一個compose文件來啟動倉庫。

      # registry-compose.yml
      version: '3.3'
      services:
        registry:
          image: registry:2.6.2
          deploy:
            replicas: 1
          ports:
            - 443:443
          volumes:
            - /your/path/to/config.yml:/etc/docker/registry/config.yml 
            - /your/path/to/repository:/var/lib/registry
            - /your/path/to/certs:/certs
      

三份帐、配置客戶端docker

現(xiàn)在要去訪問私有倉庫還需要幾步

1废境、配置使用你的私有倉庫為鏡像筒繁,假設(shè)ip地址是192.168.10.100,則訪問地址為

https://192.168.10.100

或者域名registry.local.com

https://registry.local.com

2驮宴、配置ca根證書

要把最開始用于簽證服務(wù)器ca根證書放置到/etc/docker/certs.d/ip地址或domain/下呕缭,例如:

/etc/docker/certs.d/192.168.10.100/

劃重點: 由于我們使用https的默認端口號443去訪問,這里不需要添加端口號
192.168.10.100是一個文件夾落恼,下同佳谦。

如果配置倉庫鏡像地址時滋戳,使用了域名,這里也要對應(yīng)地用域名咪笑,總而言之娄涩,你用什么訪問就配置成什么映跟,目錄沒有的話自己創(chuàng)建

/etc/docker/certs.d/registry.local.com/

當然努隙,如果你把443映射為其他端口辜昵,也需要在文件夾名稱添加端口號

/etc/docker/certs.d/registry.local.com:5000/

如果你配錯了,會報這個錯誤

Error response from daemon: Get https://192.168.10.100/v2/: x509: certificate signed by unknown authority

四躬存、錯誤

  • 生成證書時site.cnf文件寫錯舀锨,要指定為你用于訪問的域名和ip地址
Error response from daemon: Get https://192.168.10.100/v2/: x509: certificate is valid for 127.0.0.1, not 192.168.10.100
  • 生成證書時沒有傳cnf文件
Error response from daemon: Get https://192.168.10.100/v2/: x509: cannot validate certificate for 192.168.10.100 because it doesn't contain any IP SANs
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末雁竞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子彪腔,更是在濱河造成了極大的恐慌进栽,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件格嗅,死亡現(xiàn)場離奇詭異唠帝,居然都是意外死亡,警方通過查閱死者的電腦和手機襟衰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門瀑晒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人轩褐,你說我怎么就攤上這事玖详∏诜恚” “怎么了拗踢?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我飒硅,道長,這世上最難降的妖魔是什么三娩? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任雀监,我火速辦了婚禮,結(jié)果婚禮上好乐,老公的妹妹穿的比我還像新娘瓦宜。我一直安慰自己,他們只是感情好临庇,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布假夺。 她就那樣靜靜地躺著,像睡著了一般梧田。 火紅的嫁衣襯著肌膚如雪悼尾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天未状,我揣著相機與錄音司草,去河邊找鬼。 笑死埋虹,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的胰柑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼柬讨,長吁一口氣:“原來是場噩夢啊……” “哼踩官!你這毒婦竟也來了境输?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤辩越,失蹤者是張志新(化名)和其女友劉穎信粮,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒋院,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡欺旧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年辞友,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片称龙。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡鲫尊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出咳蔚,到底是詐尸還是另有隱情豪嚎,我是刑警寧澤侈询,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布扔字,位于F島的核電站温技,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏荒揣。R本人自食惡果不足惜系任,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一俩滥、第九天 我趴在偏房一處隱蔽的房頂上張望贺奠。 院中可真熱鬧,春花似錦挂据、人聲如沸儿普。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浪汪。三九已至,卻和暖如春广恢,著一層夾襖步出監(jiān)牢的瞬間呀潭,已是汗流浹背瓦阐。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工睡蟋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留枷颊,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓信卡,卻偏偏與公主長得像题造,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子丢习,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 主要思路: 1. Docker Registry 說明 關(guān)于如何創(chuàng)建和使用本地倉庫,其實已經(jīng)有很多文章介紹了袜腥。因為...
    威谷子閱讀 5,672評論 0 30
  • 為什么要搭建私有docker registry? 外網(wǎng)訪問官方的registry速度很慢鲤屡,而國內(nèi)的registry...
    mr_franklin閱讀 10,813評論 0 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理执俩,服務(wù)發(fā)現(xiàn)役首,斷路器显拜,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 讀《越讀者》档址,感觸最深的就是名人的讀書方法,相信對于我們的讀者也是非常具有實踐指導意義的守伸。 名人是如何讀書的? 陶...
    程云舒閱讀 543評論 0 5
  • 你见芹,于市井之外玄呛,猶如殘翅的蝴蝶 奮力的在花的擁簇中穿息 你和二,于天堂之外,猶如異種的天使 自由的在排斥中游吟 你美的...
    汐潯Leslie閱讀 207評論 2 1