Nexus新建docker仓库
Nexus的仓库分三类
- docker(proxy):用于代理其它的hub,类似mirror。
- docker(hosted):用于上传本地镜像到仓库。
- docker(group):可将proxy类型和hosted类型的仓库对外统一访问入口(注意不能使用这个地址进行镜像的上传)。
以下为我的配置:
docker(proxy)
docker(hosted)
docker(group)
配置权限
国内镜像站
Nginx反向代理docker仓库
1 | upstream nexus_docker_group { |
podman客户端配置
- 注册私服
1 | wujianjun@wujianjun-work:~$ vi /etc/containers/registries.conf |
注意:insecure
设置为true,表示支持http访问
- 重新加载
1 | wujianjun@wujianjun-work:~$ sudo systemctl daemon-reload |
测试生效
接下来以redis镜像来演示效果
- 拉取镜像
1 | wujianjun@wujianjun-work:~$ podman pull redis:latest |
此时再去私服上可以看到镜像已被镜像到私服上了
- 推送到私服
1 | wujianjun@wujianjun-work:~$ podman tag redis mirror.docker.com/library/myredis:1.0.0 |
- 从私服拉取
1 | wujianjun@wujianjun-work:~$ podman pull myredis:1.0.0 |
常见问题
未登录私服
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25wujianjun@wujianjun-work:~$ podman pull redis:latest
Resolved "redis" as an alias (/home/wujianjun/.cache/containers/short-name-aliases.conf)
Trying to pull mirror.docker.com/library/redis:latest...
Error: initializing source docker://redis:latest: Requesting bear token: invalid status code from registry 403 (Forbidden)
wujianjun@wujianjun-work:~$ podman login -u developer mirror.docker.com
Password:
Login Succeeded!
wujianjun@wujianjun-work:~$ podman pull redis:latest
Resolved "redis" as an alias (/home/wujianjun/.cache/containers/short-name-aliases.conf)
Trying to pull mirror.docker.com/library/redis:latest...
Getting image source signatures
Copying blob a330b6cecb98 skipped: already exists
Copying blob 4f9efe5b47a5 done
Copying blob 6af3a5ca4596 done
Copying blob 14bfbab96d75 done
Copying blob 8b3e2d14a955 done
Copying blob 5da5e1b21a2f done
Copying config 02c7f20544 done
Writing manifest to image destination
Storing signatures
02c7f2054405dadaf295fac7281034e998646996e9768e65a78f90af62218be3
wujianjun@wujianjun-work:~$
wujianjun@wujianjun-work:~$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
mirror.docker.com/library/redis latest 02c7f2054405 3 weeks ago 109 MB根因分析:由于未登录私服故返回403的错误,已登录的信息会保存在
/run/user/1000/containers/auth.json
文件中tag没有对应
1
2
3
4wujianjun@wujianjun-work:~$ podman pull myredis:v1.0.0
✔ mirror.docker.com/library/myredis:v1.0.0
Trying to pull mirror.docker.com/library/myredis:v1.0.0...
Error: initializing source docker://myredis:v1.0.0: reading manifest v1.0.0 in mirror.docker.com/library/myredis: manifest unknown: manifest unknown根因分析:由于tag为v1.0.0的myredis镜像没有找到
未开启http访问
1
2
3
4
5wujianjun@wujianjun-work:~$ podman pull myredis:1.0.0
✔ mirror.docker.com/library/myredis:v1.0.0
Trying to pull mirror.docker.com/library/myredis:1.0.0...
Get https://mirror.docker.com/v2/: http: server gave HTTP response to HTTPS client
Error: error pulling image "mirror.docker.com/library/myredis": unable to pull mirror.docker.com/library/myredis: unable to pull image: Error initializing source docker://mirror.docker.com/library/myredis:1.0.0: error pinging docker registry mirror.docker.com: Get https://mirror.docker.com/v2/: http: server gave HTTP response to HTTPS client根因分析:由于在注册私服地址时没有开启
insecure = true
观点仅代表自己,期待你的留言。