1. mkdir /etc/docker/auth
    2. cd /etc/docker/auth
    3. htpasswd -Bnb 用户名 密码 >htpasswd
    4. cat htpasswd显示 用户名:密码


    1. docker run -d -p 5000:5000 —restart=always —name registry \

    -v /registry:/registry \
    -e REGISTRY_STORAGE_DELETE_ENABLED=true \
    -e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \
    -v /etc/docker/auth:/auth \
    -e “REGISTRY_AUTH=htpasswd” \
    -e “REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm” \
    -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
    registry:latest

    备注:
    -d,后台运行容器
    -p 5000:5000 ,映射容器5000端口至宿主机5000端口。
    - - restart always,设置重新启动策略,在docker重新启动时自动重新启动容器my-registry。
    - -name registry,给容器命名。
    -v /registry:/registry,把docker容器中/registry目录的数据加载到宿主机的/registry目录,宿主机的/registry目录如果不存在会自动创建。目的是为了防止docker私有仓库这个容器被删除时,仓库里的镜像也会被删除。宿主机查看到的私有仓库镜像就在这个目录中。
    -e REGISTRY_STORAGE_DELETE_ENABLED,设置是否允许删除仓库存储的镜像。
    -e REGISTRY_HTTP_ADDR=0.0.0.0:5000,设置镜像仓库地址。
    -v 挂载本机的/etc/docker/auth目录至容器/auth目录。
    -e REGISTRY_AUTH:设置环境变量告诉容器密码文件名。
    -e “REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm”:设置身份验证的领域。
    -e REGISTRY_AUTH_HTPASSWD_PATH:设置环境变量告诉容器存放账户、密码的位置。

    测试:
    1.在另外一台装有docker的机器上 执行docker login ‘私有仓库的地址’
    2.输入用户名密码登录
    3.docker pull hello-world
    4.docker tag hello-world:latest ‘私有仓库地址’/hello-world:latest
    5.docker push ‘私有仓库地址’/hello-world:latest
    6.页面访问 ‘私有仓库地址’/v2/_catalog查看是否有推送的镜像