docker私有仓库部署

 docker私有仓库部署比较简单,直接执行下面指令即可

docker run -d \
  -p 5000:5000 \
  --restart=always \
  --name registry \
  -v /mnt/registry:/var/lib/registry \
  registry:2

 

为了安全可以添加认证和证书

生成自签证书

注意:当我们使用 IP 地址作为访问服务器如果拿此时生成的证书去配置 Docker Registry,我们将无法完成 pull/push 操作。配置的 Registry 根本无法在局域网中使用。需要修改openssl.cnf,

在 [v3_ca] 节点添加配置项:
subjectAltName = IP:192.168.1.1

然后通过执行下面openssl指令生成证书

mkdir -p /var/docker-data/{registry,certs,auth}

openssl req -subj '/C=CN/ST=SH/L=SH/CN=192.168.1.1'\
    -newkey rsa:4096 -nodes -sha256 -keyout /var/docker-data/certs/domain.key \
    -x509 -days 365 -out /var/docker-data/certs/domain.crt  -config openssl.cnf

生成认证文件

yum install -y httpd-tools
htpasswd -Bbn test testpass >> /var/docker-data/auth//htpasswd

其中 test为用户 testpass 为密码

然后启动容器即可

docker run -d \
    --restart=always \
    --name registry \
    -v /var/docker-data/registry/:/var/lib/registry \
    -v /var/docker-data/certs:/certs \
    -v /var/docker-data/auth:/auth \
    -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
    -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
    -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
    -e REGISTRY_STORAGE_DELETE_ENABLED="true" \
    -e "REGISTRY_AUTH=htpasswd" \
    -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
    -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
    -p 443:443 \
    registry:2

 

由于配置了证书在docker客户端机器上要拷贝证书

mkdir -p /etc/docker/certs.d/192.168.1.1
cp /var/docker-data/certs/domain.crt /etc/docker/certs.d/192.168.1.1/ca.crt
简单使用

docker login 192.168.1.1
docker tag busybox 192.168.1.1/busybox
docker push  192.168.1.1/busybox

 

posted @ 2021-06-17 16:20  泉love水  阅读(174)  评论(0编辑  收藏  举报