Linux 如何在不首先使用“Docker登录”的情况下为Docker命令提供凭据?
我想知道是否可以为Docker命令(如Linux 如何在不首先使用“Docker登录”的情况下为Docker命令提供凭据?,linux,docker,containers,cloud,Linux,Docker,Containers,Cloud,我想知道是否可以为Docker命令(如Docker pull)的远程注册表提供凭据或docker运行而不首先使用docker登录 原因是我想提供HTTP Basic Auth中的凭据(内联),这样我就不必创建~/.docker/config.json 试验:@似乎不起作用,至少对我来说是这样。这可以通过curl或等效工具使用Docker HTTP API来实现 见正式文件: 引擎API是由Docker引擎提供服务的HTTP API。这就是API Docker客户端用于与引擎通信,因此 Docke
Docker pull)的远程注册表提供凭据代码>或docker运行代码>而不首先使用docker登录
原因是我想提供HTTP Basic Auth中的凭据(内联),这样我就不必创建~/.docker/config.json
试验:@
似乎不起作用,至少对我来说是这样。这可以通过curl
或等效工具使用Docker HTTP API来实现
见正式文件:
引擎API是由Docker引擎提供服务的HTTP API。这就是API
Docker客户端用于与引擎通信,因此
Docker客户端可以通过API完成
大多数客户端命令直接映射到API端点(例如。
docker ps是GET/containers/json)。值得注意的异常是正在运行
容器,它由几个API调用组成
逆向工程:
首先创建一个Unix套接字,用于检查docker
客户端请求:
socat -v UNIX-LISTEN:/tmp/fake,fork UNIX-CONNECT:/var/run/docker.sock
接下来,使用docker
客户端运行docker pull…
:
docker -H unix:///tmp/fake pull db-docker-xsrt-rt.artifactory.example.net/aquasec/kube-hunter
在docker
客户端和dockerd
服务器之间发送的HTTP流量:
> 2021/04/13 12:42:21.445593 length=80 from=0 to=79
GET /_ping HTTP/1.1\r
Host: docker\r
User-Agent: Docker-Client/18.09.6 (linux)\r
\r
< 2021/04/13 12:42:21.446085 length=212 from=0 to=211
HTTP/1.1 200 OK\r
Api-Version: 1.39\r
Docker-Experimental: false\r
Ostype: linux\r
Server: Docker/18.09.6 (linux)\r
Date: Tue, 13 Apr 2021 10:42:21 GMT\r
Content-Length: 2\r
Content-Type: text/plain; charset=utf-8\r
\r
OK> 2021/04/13 12:42:21.447291 length=401 from=80 to=480
POST /v1.39/images/create?fromImage=db-docker-xsrt-rt.artifactory.example.net%2Faquasec%2Fkube-hunter&tag=latest HTTP/1.1\r
Host: docker\r
User-Agent: Docker-Client/18.09.6 (linux)\r
Content-Length: 0\r
Content-Type: text/plain\r
X-Registry-Auth: <redacted>\r
\r
< 2021/04/13 12:42:21.546168 length=352 from=212 to=563
HTTP/1.1 200 OK\r
Api-Version: 1.39\r
Content-Type: application/json\r
Docker-Experimental: false\r
Ostype: linux\r
Server: Docker/18.09.6 (linux)\r
Date: Tue, 13 Apr 2021 10:42:21 GMT\r
Transfer-Encoding: chunked\r
\r
3d\r
{"status":"Pulling from aquasec/kube-hunter","id":"latest"}\r
\r
45\r
{"status":"Already exists","progressDetail":{},"id":"801bfaa63ef2"}\r
\r
< 2021/04/13 12:42:21.552481 length=811 from=564 to=1374
...
对X-Registry-Auth
值进行解码会产生如下结果(编辑):
echo | base64-d
{“用户名”:
POST /v1.39/images/create?fromImage=db-docker-xsrt-rt.artifactory.example.net%2Faquasec%2Fkube-hunter&tag=latest HTTP/1.1\r
Host: docker\r
User-Agent: Docker-Client/18.09.6 (linux)\r
Content-Length: 0\r
Content-Type: text/plain\r
X-Registry-Auth: <redacted>\r
\r
echo <redacted> | base64 -d
{"username":"<redacted","password":"<redacted>","serveraddress":"db-docker-xsrt-rt.artifactory.example.net"}