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