我是Docker的新手。我知道默认注册表是“ docker hub”。还有关于导航``Docker Hub''的教程,例如搜索图像等。但是这类操作是通过Web在Docker Hub UI中执行的。
我被授予一个私有Docker注册中心。使用docker login someremotehost:8080
之类的命令登录后,我不知道要使用哪个命令来浏览注册表内部。我不知道有哪些可用图像及其标记。
在用户登录后,任何人都可以共享有关使用什么命令来探索私有远程注册表的某些信息/链接吗?
此外,要使用私有注册表中的图像,我需要使用的名称类似于'my.registry.address:port/repositoryname
。
是否可以更改docker应用程序的配置,从而使my.registry成为默认注册表,并且我可以使用repositoryname
,而无需在每个docker命令中指定注册表名称?
答案 0 :(得分:1)
除docker pull
和docker push
外,没有标准的CLI命令可与远程注册表交互。注册表本身可能提供某种类型的UI(例如,Amazon ECR可以通过标准AWS控制台列出图像),或者您的本地开发团队可能有一个Wiki,列出了通常可用的内容。
您不能更改默认的Docker注册表。您强烈希望例如 ubuntu
确实是docker.io/library/ubuntu
,而不是其他东西。
答案 1 :(得分:0)
对于Docker,只有两个用于注册表通信的命令:
Docker Pull and Docker Push
关于docker私有注册表,docker中没有任何默认设置,只能从特定注册表中获取请求。原因是docker映像的名称。对于正式的docker映像,有一个直接名称,例如Centos
。但是在docker注册表中,也有一些由非官方组织或个人创建的映像。在这种docker映像中,总是有用户名或组织名,例如pivotaldata/centos
。因此,此命名约定有助于docker在public(通过登录)或public注册表中的Docker注册表中查找映像。
如果您想与私人仓库进行更多交互,则可以编写自己的批处理脚本或bash脚本。就像我创建了一个批处理脚本,如果用户输入了错误的标签,该脚本将从私有仓库中提取所有标签。
@echo off
docker login --username=xxxx --password=xxxx
docker pull %1:%2
IF NOT %ERRORLEVEL%==0 (
echo "Specified Version is Not Found "
echo "Available Version for this image is :"
for /f %%i in (' curl -s -H "Content-Type:application/json" -X POST -d "{\"username\":\"user\",\"password\":\"password\"}" https://hub.docker.com/v2/users/login ^|jq -r .token ') do set TOKEN=%%i
curl -sH "Authorization: JWT %TOKEN%" "https://hub.docker.com/v2/repositories/%1/tags/" | jq .results[].name
)