docker - 如何仅列出位于特定私有注册表中的图像
问题描述
我在从本地服务器上设置的特定注册表获取图像列表时遇到问题,或者,我可能首先在将它们发布到该注册表时遇到问题,因为这是我的第一次冒险进入 docker 注册表,我可能只是对使用的术语感到困惑。
这里有一个老问题,看起来像我想要实现的目标,但与此同时,docker 似乎已经获得了对此的内置支持,因此这里提到的方法不再相关。
我有 2 台服务器(出于此问题的目的):
- rancher-server:这个服务器有一个
rancher:v2.6.0
运行的容器和一个registry:2
容器。 - k8s-server:这只是一个新安装的服务器,安装了 docker 和 kubernetes 包,我希望 Rancher 服务器管理它。
在k8s-server 上,我正在尝试rancher/rancher-agent:v2.6.0
使用一些参数启动一个 docker 映像,这应该让它将控制权交给牧场主服务器。
这里的诀窍是,这都是在没有互联网访问的情况下工作所必需的(目前有互联网访问,但它是一个 PoC,用于需要气隙的任务)。出于这个问题的目的,我真的只是希望能够使用rancher-server上的注册表在 k8s-server 上启动 docker 容器。
目前,这是rancher-server的状态:
# docker ps --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b9a15ea00d5e registry:2 "/entrypoint.sh /e..." About an hour ago Up About an hour 0.0.0.0:5000->5000/tcp local-registry
1b6bc6b88a8e 08c9693b4357 "entrypoint.sh 08c..." 26 hours ago Up 2 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp goofy_minsky
# docker image ls --all (the list is big, this is just a sample):
REPOSITORY TAG IMAGE ID CREATED
rancher/rancher-agent v2.6.0 9c35a790aa16 2 weeks ago
rancher-server.example.com:5000/rancher/rancher-agent v2.6.0 9c35a790aa16 2 weeks ago
# docker info
Containers: 2
Running: 2
Paused: 0
Stopped: 0
Images: 225
Server Version: 1.13.1
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: journald
Cgroup Driver: systemd
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: docker-runc runc
Default Runtime: docker-runc
Init Binary: /usr/libexec/docker/docker-init-current
containerd version: (expected: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1)
runc version: 66aedde759f33c190954815fb765eedc1d782dd9 (expected: 9df8b306d01f59d3a8029be411de015b7304dd8f)
init version: fec3683b971d9c3ef73f284f176672c44b448662 (expected: 949e6facb77383876aeff8a6944dde66b3089574)
Security Options:
seccomp
WARNING: You're not using the default seccomp profile
Profile: /etc/docker/seccomp.json
selinux
Kernel Version: 3.10.0-1160.41.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 3
CPUs: 2
Total Memory: 3.701 GiB
Name: rancher-server
ID: SA2T:G2IA:CGER:6BC5:HIV2:4T6T:LF3Q:2YVS:SYU7:SQ5V:ACUS:BMEX
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
rancher-server.example.com:5000
127.0.0.0/8
Live Restore Enabled: false
Registries: docker.io (secure)
在k8s-server 上,我尝试列出该注册表的内容:
# docker image ls --all rancher-server.example.com:5000
REPOSITORY TAG IMAGE ID CREATED SIZE
# docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 1.13.1
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: journald
Cgroup Driver: systemd
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: docker-runc runc
Default Runtime: docker-runc
Init Binary: /usr/libexec/docker/docker-init-current
containerd version: (expected: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1)
runc version: 66aedde759f33c190954815fb765eedc1d782dd9 (expected: 9df8b306d01f59d3a8029be411de015b7304dd8f)
init version: fec3683b971d9c3ef73f284f176672c44b448662 (expected: 949e6facb77383876aeff8a6944dde66b3089574)
Security Options:
seccomp
WARNING: You're not using the default seccomp profile
Profile: /etc/docker/seccomp.json
selinux
Kernel Version: 3.10.0-1160.41.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 3
CPUs: 2
Total Memory: 3.701 GiB
Name: k8s-server
ID: QETJ:QSPQ:VS36:OOOA:ZPYL:CDHK:AJ5G:N4BD:ZQUH:UL6O:PHAB:5UOE
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
rancher-server.example.com:5000
127.0.0.0/8
Live Restore Enabled: false
Registries: docker.io (secure)
例如,我必须跳过一些障碍才能到达那里,首先,在 k8s-server 上的 /etc/docker/daemon.json 中将注册表标记为不安全,并在rancher-server上禁用 selinux 。
我已经尝试过docker login rancher-server.example.com:5000
,但这并没有什么不同。在我看来,k8s-server配置正确,但是 rancher-server 上的图像没有被正确标记/推送,但是当我回顾注册表时,我不知道如何以不同的方式做,而且,据我了解注册表,它看起来不错吗?
我已经更改了匿名的服务器名称,并且对输出进行了轻微编辑以进行演示。
编辑:
我想我找到了这里发生的事情的线索,事实证明我实际上可以远程运行这个注册表中的图像,很好,只是碰巧我无法发现图像的名称,但是,如果我做一个docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher-server.example.com:5000/rancher/rancher-agent:v2.6.0 --server https://rancher-server.example.com:5000 --token <token> --ca-checksum <ca-checksum> --etcd --controlplane
它实际上拉动并运行容器,所以看起来注册表本身很好,但也许索引不是?
解决方案
推荐阅读
- mysql - big id 的最佳主键数据类型是什么?
- python - 比较文件的程序
- c# - Xero.netstandard.oauth2 说英国的工资单即将到来.. 我如何在此期间整合?
- ubuntu - 防止禁用的 DAG 在启用时立即运行
- android - “无法找到 adb” android studio 4.0
- javascript - 如何将亚马逊关联广告小部件插入网站
- typescript - 在typecipt的基类中循环自己的属性
- html - 直到我将鼠标悬停在 SVG 线元素上才会呈现
- python - 如何在函数中使用 end="" with?
- tfs - TFS 2018 将 SharePoint 用于什么用途?