docker 私有倉庫搭建


概要

docker hub 使用非常方便,而且上面有大量的鏡像可以使用。 但是,每次都遠程下載鏡像速度非常慢,如果能在本地做一個 docker 的倉庫,多人協作開發的時候更新效率就會提高很多。

所以,下面我們嘗試搭建自己的 docker 倉庫。

本地私有倉庫

首先搭建一個只有自己本機能夠使用的 docker 倉庫,目的是為了嘗試私有倉庫的最簡化方法。

  1. 安裝 registry

    $ docker pull registry
    Using default tag: latest
    latest: Pulling from library/registry
    709515475419: Pull complete 
    df6e278d8f96: Pull complete 
    4b0b08c1b8f7: Pull complete 
    80119f43a01e: Pull complete 
    acf34ba23c50: Pull complete 
    Digest: sha256:412e3b6494f623a9f03f7f9f8b8118844deaecfea19e3a5f1ce54eed4f400296
    Status: Downloaded newer image for registry:latest
    
  2. 運行本地的 registry

    docker run -d -p 5000:5000 --restart=always --name registry \
        -v /your/path/to/registry-images:/var/lib/registry \
        registry:latest
    
    
  3. 將某個已有的 image 存入 registry

    docker tag jdeathe/centos-ssh:centos-7 localhost:5000/ssh:7     
    docker push localhost:5000/ssh:7
    
    • jdeathe/centos-ssh:centos-7 是已有的 image
    • localhost:5000/ssh:7 是准備提交到 本地 registry 的 image,這里 localhost:5000 是本地 registry 的
  4. pull 已經提交到 registry 的鏡像

    docker pull localhost:5000/ssh:7
    

局域網私有倉庫

如上,搭建一個只有本機訪問的私有鏡像非常簡單,不用對已有的 docker 服務進行任何配置。 如果要搭建一個能在局域網內訪問的 docker 倉庫,就需要對 docker 服務進行一些簡單的配置。

首先,在主機 A 上:

  1. 安裝 registry 鏡像(同上)

  2. 將某個 image 導入 registry,這里使用主機 A 的 IP 而不是 localhost

    docker tag jdeathe/centos-ssh:centos-7 192.168.0.111:5000/ssh:7     
    docker push 192.168.0.111:5000/ssh:7
    
  3. 修改主機 A 的 docker 配置(/etc/docker/daemon.json 文件不存在則直接創建)

    {
        "insecure-registries": ["192.168.0.111:5000"]
    }
    
  4. 重啟 docker 服務

    sudo systemctl restart docker
    

在同一局域網中的另一台主機 B 上

  1. 修改 docker 配置(/etc/docker/daemon.json 文件不存在則直接創建),使 docker daemon 能連上私有的 registry

    {
        "registry-mirrors": ["192.168.0.111:5000"],
        "insecure-registries": ["192.168.0.111:5000"]
    }
    
  2. 重啟 docker 服務

    sudo systemctl restart docker
    
  3. 下載主機 A 中倉庫的鏡像,在局域網中速度非常快,以后開發過程中做部署測試就非常方便了。

    docker pull 192.168.0.111:5000/ssh:7
    

總結

上面只是簡單的搭建了私有倉庫,主要用在開發和測試環境中,如果要在生產環境中搭建 docker 私有倉庫的話, 就不能使用上面 insercure-registry 的方式,需要配置 tls 的證書和認證,確保私有倉庫的安全性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM