如何docker login在脚本中预先设置我的凭据?
我正在使用一个bash脚本,基本上自动完成设置我的自定义VM等的整个过程,但是当我需要在脚本中登录docker来拉取图像时,我收到以下错误:
用户名:FATA [0000]不适合设备的ioctl
我使用的命令如下:
( echo "xxx"; echo "yyy"; echo "zzz" ) | docker login docker.somesite.org
Run Code Online (Sandbox Code Playgroud)
这可能是在不使用和处理现有.dockercfg文件的情况下实现的,
非常感谢.
Nat*_*rot 48
现在有一个官方记录的方法来做到这一点:
cat ~/my_password.txt | docker login --username foo --password-stdin
Run Code Online (Sandbox Code Playgroud)
您可以在命令行上传递所有参数:
docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST
Run Code Online (Sandbox Code Playgroud)
如果您没有指定DOCKER_HOST,您将获得主Docker仓库.如果省略任何参数,系统将提示您输入该参数.
相同的路径正上方,只是你需要还传递一个--email标志.实际上没有检查它的内容,所以一切都很好:
docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST --email whale@docker.com
Run Code Online (Sandbox Code Playgroud)
要以非交互方式运行docker login命令,可以设置--password-stdin标志以通过STDIN提供密码.使用STDIN可防止密码在shell的历史记录或日志文件中结束.
$ echo $DOCKER_PASS | docker login -u$DOCKER_USER --password-stdin $DOCKER_HOST
Run Code Online (Sandbox Code Playgroud)
当您登录到您的私有注册表时,docker 会自动创建一个文件 $HOME/.docker/config.json 该文件具有 Credentials 信息,因此您可以在要登录注册表时保存该文件并复制到任何主机。
文件内容是这样的:
{
"auths": {
"example.com": {
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
Run Code Online (Sandbox Code Playgroud)
附加组件 如果您想在一台服务器上登录多个 docker 注册表,只需添加另一个身份验证信息。像这样:
{
"auths": {
"example.com": {
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
},
"example1.com":{
"auth": "xxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在您可以从 example.com 和 example1.com 推送和拉取图像。
| 归档时间: |
|
| 查看次数: |
22467 次 |
| 最近记录: |