Open liusheng opened 4 years ago
搭建私有的Docker image仓库很简单,官方提供了现成的镜像,可以用于搭建自己私有的docker registry。
docker run -d -p 5000:5000 --restart=always --name registry registry:2
简单的docker 镜像仓库已经起来,如果仅限于本机使用,就可以直接通过docker命令上传和下载镜像。
和正常使用流程一样,可以通过下面的命令来上传和下载镜像:
docker image tag ubuntu localhost:5000/myfirstimage docker push localhost:5000/myfirstimage docker pull localhost:5000/myfirstimage
上面的docker image仓库仅限于本地使用,如果直接使用的话,默认docker会做https的安全校验,如果只是私有使用的话,可以在各个需要使用该registry的节点上的/etc/docker/daemon.json配上:
/etc/docker/daemon.json
{ "insecure-registries" : ["myregistrydomain.com:5000"] }
这样,就会对个人私有的仓库不做安全校验,最后systemctl restart docker重启各个机器上的docker守护进程。这样仅限于在局域网内测试使用。
systemctl restart docker
docker container stop registry && docker container rm -v registry
默认情况下,上面部署的docker registry是不限制外部访问的,可以通过htpasswd工具结合registry镜像提供的能力来配置用户访问认证。
htpasswd
registry
apache2-utils
apt-get install -y apache2-utils
htpasswd -Bbn yourname yourpassword> auth/htpasswd
docker run -d \ -p 5000:5000 \ --restart=always \ --name registry \ -v "$(pwd)"/auth:/auth \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ registry:2
docker login localhost:5000 docker push localhost:5000/imagename
如果想要将私有的docker registry服务提供给外部使用,首先需要先配置TLS安全校验。这里为了简单起见,我们使用自签名的CA证书来配置。
mkdir -p certs openssl req \ -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \ -x509 -days 365 -out certs/domain.crt
docker run -d \ -p 5000:5000 \ --restart=always \ --name registry \ -v "$(pwd)"/auth:/auth \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ -v "$(pwd)"/certs:/certs \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ registry:2
参考: https://docs.docker.com/registry/
搭建私有的Docker image仓库很简单,官方提供了现成的镜像,可以用于搭建自己私有的docker registry。
1. 起本地docker registry容器
简单的docker 镜像仓库已经起来,如果仅限于本机使用,就可以直接通过docker命令上传和下载镜像。
2. 使用本地docker镜像
和正常使用流程一样,可以通过下面的命令来上传和下载镜像:
3. 配置非安全校验docker镜像仓库使用
上面的docker image仓库仅限于本地使用,如果直接使用的话,默认docker会做https的安全校验,如果只是私有使用的话,可以在各个需要使用该registry的节点上的
/etc/docker/daemon.json
配上:这样,就会对个人私有的仓库不做安全校验,最后
systemctl restart docker
重启各个机器上的docker守护进程。这样仅限于在局域网内测试使用。4. 停止docker镜像仓库并清理所有的镜像数据
5. 配置用户认证访问
默认情况下,上面部署的docker registry是不限制外部访问的,可以通过
htpasswd
工具结合registry
镜像提供的能力来配置用户访问认证。apache2-utils
,用来提供htpasswd
工具6. 配置docker registry服务提供给外部使用
a) 配置TLS安全校验
如果想要将私有的docker registry服务提供给外部使用,首先需要先配置TLS安全校验。这里为了简单起见,我们使用自签名的CA证书来配置。
b) 重新启动docker registry并且开启TLS
参考: https://docs.docker.com/registry/