标签: docker-api

Golang - Docker API - 解析ImagePull的结果

我正在开发一个Go脚本,Docker API用于我的项目目的.在我登录到我的存储库后,我拉出了我想要的Docker镜像,但问题是ImagePull函数返回了一个io.ReadCloser实例,我只能通过以下方式传递给系统输出:

io.Copy(os.Stdout, pullResp)
Run Code Online (Sandbox Code Playgroud)

我可以看到响应很酷,但我找不到一个合适的方法来解析它并根据它来实现逻辑,如果已经下载了新版本的图像,它会做一些事情,如果是图像是最新的.
如果你曾经遇到过这个问题,我会很高兴你分享你的经验.

go docker docker-api

5
推荐指数
2
解决办法
1145
查看次数

如何使用 Docker API Python 客户端构建镜像?

我刚刚启动了 Docker Api 并探索了各个部分。但是我一直坚持使用 python 客户端使用 docker api 构建图像,实际上我无法理解如何为 docker client.images.build()方法设置各种所需的参数?

请帮帮我!提前致谢!

python-3.x docker docker-api

5
推荐指数
1
解决办法
1万
查看次数

如何使用 Docker Registry HTTP API V2 获取 Docker 注册表中所有存储库的列表?

与我合作的外部组织允许我访问私有(受身份验证令牌保护的)docker 注册表,最终我希望能够使用 docker 的 HTTP API V2 查询此注册表,以便获取所有注册表中可用的存储库和/或图像。

但在我这样做之前,我首先想获得一些在公共注册表(如Docker Hub )上构建这些类型的 API 查询的基本实践。因此,我继续在 Docker Hub 上使用用户名和密码注册了自己,并查阅了 API V2 文档,其中指出可以请求进行API 版本检查,如下所示:

GET /v2/
Run Code Online (Sandbox Code Playgroud)

或请求存储库列表为:

GET /v2/_catalog
Run Code Online (Sandbox Code Playgroud)

使用 curl 以及我用于注册 Docker Hub 帐户的用户名和密码,我尝试在命令行构造一个 GET 请求:

stachyra> curl -u stachyra:<my_password> -X GET https://index.docker.io/v2/
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}
stachyra> curl -u stachyra:<my_password> -X GET https://index.docker.io/v2/_catalog
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}
Run Code Online (Sandbox Code Playgroud)

当然,<my_password>我用我的实际帐户密码代替了 。

我一直期望从这个查询中得到的响应是一条巨大的 json 消息,列出了数千个存储库名称,但 API 似乎拒绝了我的 Docker Hub 凭据。

问题 1:我什至有index.docker.iodocker hub 注册表的正确 URL ( …

rest restful-authentication docker dockerhub docker-api

5
推荐指数
3
解决办法
6675
查看次数

Docker容器中SizeRootFs和SizeRw之间的确切区别是什么?

在docker容器列表中,您可以获得容器大小SizeRootFs和SizeRw,但我找不到大小的确切含义.

docker docker-api

4
推荐指数
1
解决办法
592
查看次数

错误:使用 node-docker-api 时连接 ENOENT /var/run/docker.sock

我一直在尝试从 Node.js 应用程序调用 docker,为此我使用了 npm 模块文档https://github.com/AgustinCB/docker-api中所述的 node-docker-api 。为了测试我是否能够从 Node.js 与 docker 交互,我正在运行文档中作为示例给出的一个小示例应用程序。但我收到错误为{ Error: connect ENOENT /var/run/docker.sock。完整的错误信息如下所示

dockerOperations.js:

'use strict';
const {Docker} = require('node-docker-api');
var Q = require('q');


var service = {}
service.runDockerCommand = runDockerCommand;
    function runDockerCommand() {
      console.log('inside runDockerCommand');
      var deferred = Q.defer();
      const docker = new Docker({ socketPath: '/var/run/docker.sock' });
      console.log(docker);

      docker.container.create({
        Image: 'ubuntu',
        name: 'test'
      })
        .then(container => container.start())
        .then(container => container.stop())
        .then(container => container.restart())
        .then(container => container.delete({ force: true }))
        .catch(error => console.log(error)); …
Run Code Online (Sandbox Code Playgroud)

javascript node.js docker docker-api

4
推荐指数
1
解决办法
2万
查看次数

如何使用docker远程API连接到现有的docker网络(通过dockerode)

docker-compose用来创建一个容器相互关联的"公园".没有什么特别的,我有API /前端/后端等..有我的docker-compose.yml:

version: "2"

services:
    api:
        build: ./deimos_api/docker
        ports:
            - "39999:80"
        volumes:
            - ./deimos_api:/root/deimos_api
    asset:
        build: ./deimos_asset/docker
        ports:
            - "8000:80"
        volumes:
            - ./deimos_asset:/root/deimos_asset
        depends_on:
            - api
        links:
            - api
    data-manager:
        build: ./deimos_data_manager/docker
        ports:
            - "3333:3333"
        volumes:
            - ./deimos_data_manager:/root/deimos_data_manager
        depends_on:
            - api
        links:
            - api
    backend:
        build: ./deimos_backend/docker
        ports:
            - "1080:80"
        volumes:
            - ./deimos_backend:/root/deimos_backend
            - /var/run/docker.sock:/var/run/docker.sock
        depends_on:
            - api
            - asset
        links:
            - api
Run Code Online (Sandbox Code Playgroud)

我刚学会在新网络上创建一个像这个链接容器一样的"公园".docker network ls结果:

NETWORK ID          NAME                DRIVER
448daa341d56        bridge              bridge              
c7feeeb44cd0 …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose docker-api

3
推荐指数
1
解决办法
1223
查看次数

exec `curl --unix-socket /var/run/docker.sock http:/containers/json` 时出现“404 页面未找到”

docker version: 1.11.2
curl version: 7.50.3 (x86_64-pc-linux-gnu) libcurl/7.50.3 OpenSSL/1.0.1e zlib/1.2.7
Run Code Online (Sandbox Code Playgroud)
/usr/local/sbin/bin/curl  --unix-socket /var/run/docker.sock http://images/json -v
*   Trying /var/run/docker.sock...
* Connected to images (/var/run/docker.sock) port 80 (#0)
> GET /json HTTP/1.1
> Host: images
> User-Agent: curl/7.50.3
> Accept: */*
> 
< HTTP/1.1 404 Not Found
< Content-Type: text/plain; charset=utf-8
< X-Content-Type-Options: nosniff
< Date: Thu, 22 Sep 2016 06:11:52 GMT
< Content-Length: 19
< 
404 page not found
* Curl_http_done: called premature == 0
* Connection #0 to host images …
Run Code Online (Sandbox Code Playgroud)

docker docker-api

3
推荐指数
1
解决办法
1964
查看次数

Docker API 无法应用 json 过滤器

根据https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/list-tasks,过滤器只能用于获取具有特定服务名称的正在运行的容器。由于某种原因,我得到了所有任务的完整列表,无论其名称或所需状态如何。我找不到任何使用带有 Docker API 的 JSON 请求的正确示例。我正在使用以下命令:

A)

curl -X GET -H "Content-Type: application/json" -d '{"filters":[{ "service":"demo", "desired-state":"running" }]}' https://HOSTNAME:2376/tasks --cert ~/.docker/cert.pem --key ~/.docker/key.pem --cacert ~/.docker/ca.pem
Run Code Online (Sandbox Code Playgroud)

返回所有内容

B) 试图从Docker Remote API Filter Exited中获取一些工作

curl https://HOSTNAME:2376/containers/json?all=1&filters={%22status%22:[%22exited%22]} --cert ~/.docker/cert.pem   --key ~/.docker/key.pem   --cacert ~/.docker/ca.pem
Run Code Online (Sandbox Code Playgroud)

这个返回“curl:(60)无法识别对等方的证书颁发者。”,所以我猜测curl请求格式错误。

我在 Docker 论坛上询问过,他们提供了一些帮助。我很惊讶互联网上没有任何关于如何将 Docker API 与curl 一起使用的正确文档,或者它是如此明显而我不明白什么?

json curl docker docker-api

3
推荐指数
1
解决办法
3402
查看次数

Docker - 使用SystemD和"daemon.json"启用远程HTTP API

免责声明:

在使用Ubuntu 14.04并使用Upstart作为init系统的旧机器上,我通过定义DOCKER_OPTSon 启用了HTTP API /etc/default/docker.有用.

$ docker version
Client:
 Version:      1.11.2
 (...)

Server:
 Version:      1.11.2
 (...)
Run Code Online (Sandbox Code Playgroud)

问题:

这个解决方案在最近使用带有SystemD的Ubuntu 16.04的机器上不起作用.

如最近安装的文件顶部所述/etc/default/docker:

# Docker Upstart and SysVinit configuration file

#
# THIS FILE DOES NOT APPLY TO SYSTEMD
#
#   Please see the documentation for "systemd drop-ins":
#   https://docs.docker.com/engine/articles/systemd/
#
(...)
Run Code Online (Sandbox Code Playgroud)

当我在SystemD 的Docker文档页面上检查这些信息时,我需要填写一个daemon.json文件,但正如参考文献中所述,有一些属性不言自明,但其他属性可能不足以解释.

话虽这么说,我正在寻求帮助来转换这个:

DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -G myuser --debug"

daemon.json对象?


笔记

PS1:我知道daemon.json有一个debug: …

ubuntu json systemd docker docker-api

3
推荐指数
3
解决办法
3304
查看次数

我如何在Centos 7上公开Docker Remote API?

在ubuntu上,我可以进入/etc/init/docker.confDOCKER_OPTS='-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock'输入以在我的浏览器上显示json数据,但我如何为Centos执行此操作?

我已经尝试在文件中创建文件/etc/sysconfig/docker并放置other_args="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"在文件内并重新启动docker但它没有做任何事情.

docker centos7 docker-api

2
推荐指数
1
解决办法
8576
查看次数

不存在“Access-Control-Allow-Origin”标头 - Docker 远程 API

使用 Docker 远程 API 时,我不断收到 CORS 错误。

正如 Docker 文档提到的,我确实设置了标志:

"api-cors-header" : "*",
Run Code Online (Sandbox Code Playgroud)

我仍然没有看到Access-Control-Allow-Origin: *响应标头上设置的标头。

我正在使用 Docker 1.13 实验性的。

  • Docker 实验:true
  • 服务器:Docker/1.13.0-rc3(Linux)

这是我的 API 版本:

{
    "Version": "1.13.0-rc3",
    "ApiVersion": "1.25",
    "MinAPIVersion": "1.12",
    "GitCommit": "4d92237",
    "GoVersion": "go1.7.3",
    "Os": "linux",
    "Arch": "amd64",
    "KernelVersion": "4.8.12-moby",
    "Experimental": true,
    "BuildTime": "2016-12-06T01:15:44.725283878+00:00"
}
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么吗?

cors docker docker-api

2
推荐指数
1
解决办法
6058
查看次数

Ubuntu上的DOCKER_TLS_VERIFY,DOCKER_HOST和DOCKER_CERT_PATH

如果DOCKER_TLS_VERIFY,DOCKER_HOST并且DOCKER_CERT_PATH没有在Ubuntu上设置,我自己导出变量的默认值是什么(我不使用Docker Machine)?

ps aux | grep "docker daemon"
Run Code Online (Sandbox Code Playgroud)

返回:

root       1828  2.4  0.5 764036 44804 ?        Ssl  21:32   0:01 /usr/bin/docker daemon --raw-logs
alexzei+   6557  0.0  0.0  15948  2268 pts/15   S+   21:33   0:00 grep --color=auto docker daemon
Run Code Online (Sandbox Code Playgroud)

docker docker-api

1
推荐指数
2
解决办法
9091
查看次数

1
推荐指数
1
解决办法
393
查看次数