需要登录 https://hub.docker.com–> 注册帐号
docker login
要进行推送得先登录 dockerhub 帐号
docker tag busybox:latest redtestdocker/busybox:latest
docker push redtestdocker/busybox:latest
尽量挑选小的镜像去推送,快
再回到网页,可以看到相应的镜像已经推送成功
(可以先删除 busybox 镜像,已经有的话只会进行更新)
docker pull redtestdocker/busybox:latest
选择 setting–>delete–> 再输入一次仓库名确认 --> 删除
搭建私有仓库的原因
1.dockerhub 需要连网,慢;
2.所有人都可以访问;
3.企业内部镜像放到外网不安全
4.docker 公司已经把 registry 开源,可以搭建私有的
因为docker的官网在国外,我们使用docker pull 拉取镜像是比较慢的,我们可以使用阿里云提供的镜像加速器。登陆阿里云,注册帐号,找到镜像加速器,就会生成一个加速器地址。
docker pull registry
下载 registry 镜像
docker images
docker history registry:latest
docker run -d -p 5000:5000--name registry registry
运行并做端口映射
netstat-tnlp
看到本地的 5000 端口已经打开
docker volume ls
查看逻辑卷
docker tag nginx:latest localhost:5000/nginx:latest
#需要先给镜像重新打 tag
docker push localhost:5000/nginx
##通过本机 5000 端口进行上传
curl localhost:5000/v2/_catalog
##查看仓库内容,v2 表示 registry 版本是 2 版本 ;也可以在本地挂载的目录中查看
tree docker
查看目录结构,看到 nginx
这时候仓库搭建完成,但是现在命令行操作不方便,而且如果远程连接时,必须要走 tls 加密,不然用户名密码是名文,不安全。
可以在https://docs.docker.com/registry/insecure 复制
mkdir -p certs
创建证书目录
opensl req \ #生成加密证书和 key
>-newkeyrsa:4096-nodes-sha256-keyoutcerts/westos.org.key\
>-x509-days365-outcerts/westos.org.crt
CN->Shaanxi->Xi'an->Westos->Linux->red.org(最好写域名)->[email protected]
ls certs/
docker rm -f registry
删除,要重载 registry
docker run -d \
> --restart=always\ ##表示容器开机自启动
> --name registry\ > -v"$(pwd)"/certs:/certs\ ##指定数据目录
> -e REGISTRY_HTTP_ADDR=0.0.0.0:443\ ##-e 表示编辑容器运行的参数
> -eREGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt\ ##指定证书文件
> -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key\ ##指定key
> -p 443:443\
> registry
netstat -tnlp
443 端口打开
先要配置域名的解析,默认是以域名方式通信
mkdir -p /etc/docker/certs.d/red.org
创建证书目录
cp/ root/certs/red.org.crt /etc/docker/certs.d/red.org/ca.crt
拷贝证书
docker tag nginx:latest red.org/nginx:latest
打 标 签 , red.org 必须要有解析
docker push red.org/nginx
上传成功,此时使用的就是 tls 加密
1 添加用户
mkdir auth
docker run --rm\
>--entrypointht passwd\
>registry-Bbnadminwestos
>auth/htpasswd
2 再次添加用户
docker run --rm --entrypoint htpasswd registry -Bbn wsp redhat >> auth/htpasswd
3.用户认证
docker rm -f registry
docker run -d
--restart=always
--name registry
-v "$(pwd)"/certs:/certs
-e REGISTRY_HTTP_ADDR=0.0.0.0:443
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/red.org.crt
-e REGISTRY_HTTP_TLS_KEY=/certs/red.org.key
-p 443:443
-v "$(pwd)"/auth:/auth
-e "REGISTRY_AUTH=htpasswd"
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm"
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
registry
4.测试
docker login westos.org
测试认证登录
docker logout westos.org
测试认证登出
docker push westos.org/nginx
无法上传
docker login westos.org
登录上传,可以
server2 上安装docker,并且要做解析
scp -r /etc/docker/* server2:/etc/docker/
把证书发送给 server2, 必须有证书才能登录(server1 在启动容器时加入了认证,所以要先认证)
docker login red.org
认证登录
docker pull red.org/nginx
成功拉取
docker run -d --name nginx -p 80:80 red.org/nginx
运行容器
curl localhost