目录
一、docker registry方式
1、通过http的方式搭建入门级docker registry仓库
1、下载仓库镜像
2、创建私有仓库容器
3、验证私有仓库是否启动成功
4、打包镜像
5、将打包好的镜像上传到私有仓库
6、查看私有仓库中的镜像
7、从仓库拉取镜像
8、删除镜像
2、通过https的方式搭建docker registry仓库
1、证书获取的方法
2、启动命令
3、带有登录认证的registry
一、docker registry方式
1、通过http的方式搭建入门级docker registry仓库
1、下载仓库镜像
docker pull registry:2
如下图所示:
2、创建私有仓库容器
docker run --name registry --restart=always -p 5000:5000 -v /myregistry:/var/lib/registry -d registry:2
如下图所示:
3、验证私有仓库是否启动成功
4、打包镜像
docker tag letms/kafka 127.0.0.1:5000/mykafka
5、将打包好的镜像上传到私有仓库
docker push 127.0.0.1:5000/mykafka
注意:可能会出现无法push镜像到私有仓库的问题。这是因为我们启动的registry服务不是安全可信赖的。
解决方法如下:
修改docker的配置文件/etc/docker/daemon.json
添加"insecure-registries": ["127.0.0.1:5000"],
如下所示:
保存,退出后。重启docker。
6、查看私有仓库中的镜像
通过浏览器访问:http://127.0.0.1:5000/v2/_catalog
直接在终端通过命令访问:curl http://127.0.0.1:5000/v2/_catalog
7、从仓库拉取镜像
docker pull 127.0.0.1:5000/mykafka
注意:有可能会拉取失败
这个时候注意看一下你服务器的时间,要把时间进行同步更新。设置东八区,选择上海时区,并校验服务器的时间,再次尝试,拉取镜像!
8、删除镜像
方法一:
直接去挂载的目录中,找到镜像对应的文件夹,直接删除。此方法比较暴力。
方法二:
2、通过https的方式搭建docker registry仓库
通过https的方式搭建,方法与上面的相同。区别主要有两点。第一点,需要有自己的证书。第二点,需要修改registry的启动命令,添加证书之类的参数。
1、证书获取的方法
A、购买正规的https证书
B、使用自签发证书
使用自签证书,参见这篇官方链接https://docs.docker.com/registry/insecure/
2、启动命令
docker run -d -p 443:5000 \
--restart=always \
--name registry
-v H:/registry/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/brain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/brain.key \
-v /opt/myregistry:/var/lib/registry \
registry
3、带有登录认证的registry
实现访问限制的最简单方法是通过基本身份验证(这与其他Web服务器的基本身份验证机制非常相似)。本示例使用本机基本身份验证htpasswd
来存储机密。
注意:只有https方式创建的仓库,才能有用户名密码的验证。
A、创建一个密码文件
创建一个用户名为testuser,密码为testpassword的账号
$ mkdir auth
$ docker run \
--entrypoint htpasswd \
registry:2 -Bbn testuser testpassword > auth/htpasswd
B、启动命令
docker run -d -p 443:5000 \
--restart=always \
--name registry
-v /opt/auth:/auth \
-e REGISTRY_AUTH=htpasswd \
-e REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-v /opt/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/brain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/brain.key \
-v /opt/myregistry:/var/lib/registry \
registry
C、登录仓库
现在从仓库拉取或者上传镜像都会报错。需要先登录仓库,命令如下:
docker login brain
输入用户名:testuser
输入密码:testpassword
登录成功后
cd /root/.docker
#认证成功后的信息会自动记录在该文件中,即第一次认证之后再上传镜像便无需在做认证
cat config.json
#可以查看认证的信息