virtualization's docs

4.0.0 docker 本地registry


0. 安装docker

安装本地的registry之前,我们需要首先安装docker。然后使用docker启动一个registry的镜像就启动了registry服务。

docker安装参照docker官方安装文档docker中文安装文档(centos7)


1. 启动本地registry

docker run -d -p 5000:5000 --restart=always --name registry registry:2

因为我们是第一次运行registry这个镜像,docker需要先从公共registry上去下载它,然后再运行它


2. 从docker HUB上拷贝镜像到本地registry

  1. 从docker HUB上下载镜像
    docker pull ubuntu:16.04
    
  2. tag下载的镜像
    docker tag ubuntu:16.04 localhost:5000/my-ubuntu
    docker images
    REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
    registry                   2                   c2a449c9f834        8 days ago          33.2MB
    ubuntu                     16.04               d355ed3537e9        2 weeks ago         119MB
    localhost:5000/my-ubuntu   latest              d355ed3537e9        2 weeks ago         119MB
    
  3. 上传镜像到本地registry中
    docker push localhost:5000/my-ubuntu
    
  4. 移除本地镜像
    docker image remove ubuntu:16.04
    docker image remove localhost:5000/my-ubuntu
    
  5. 从本地registry中下载镜像
    docker pull localhost:5000/my-ubuntu
    

3. 关停registry

docker stop registry

重新启动registry后,上传的镜像依然存在

docker stop registry && docker rm -v registry

删除了容器后,上传的镜像也会删除


4. registry服务配置

  1. 自动启动registry

    docker run -d \
    -p 5000:5000 \
    --restart=always \
    --name registry \
    registry:2
    

    docker使用--restart=always来重新启动无论因为任何原因退出的容器,当然,不包括手动执行docker stop命令。加上此参数开启的容器,可以尝试kill掉它的进程,会发现它会自动启动。

  2. 自定义端口 如果5000端口已经被使用,使用-p 5001:5000来指定5001端口

    docker run -d \
    -p 5001:5000 \
    --name registry-test \
    registry:2
    

    但如果希望改变容器内部的运行端口, 使用-e REGISTRY_HTTP_ADDR=0.0.0.0:5001

    docker run -d \
    -e REGISTRY_HTTP_ADDR=0.0.0.0:5001 \
    -p 5001:5001 \
    --name registry-test \
    registry:2
    
  3. 挂载外部目录储存数据
    docker run -d \
    -p 5000:5000 \
    --restart=always \
    --name registry \
    -v /mnt/registry:/var/lib/registry \
    registry:2