对于Docker,只有两个用于注册表通信的命令:
Docker Pull and Docker Push
关于Docker私有注册表,Docker中没有任何默认设置,只能从特定注册表获取拉取。原因是docker image的名称。对于官方docker image有如下直接名称
Centos
. 但在码头登记处也有一些图片是由非官方组织或个人创建的。在这种Docker图像中,总是有用户或组织的名称,比如
pivotaldata/centos
. 因此,这个命名约定有助于docker在public(通过登录)或public registry中查找docker注册表中的图像。
如果您想与私有repo进行更多的交互,可以编写自己的批处理脚本或bash脚本。就像我创建了一个批处理脚本,如果用户给出了错误的标记,它将从私有repo中提取所有标记。
@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
)