问题标签 [docker-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
212 浏览

docker - Golang 的 Docker SDK 无法连接到覆盖网络内的守护进程

我有一个 docker swarm,以及该 swarm 上覆盖网络内的一个容器。该容器有一个用 golang 编写的应用程序,它通过创建一个容器并启动它来与 Docker API 交互。当我在主机上运行我的 golang 应用程序时,一切都运行完美,它可以毫无问题地创建和运行容器。但是,当我将应用程序放入容器并在我的覆盖网络中运行它时,它不再可以访问 API。

我假设这与网络有关,但我的项目的想法是有多个服务,每个服务都有自己的网络,可以创建、启动和删除他们认为合适的容器。不幸的是,目前不能在覆盖网络之外的应用程序中运行 SDK。

错误:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

0 投票
1 回答
306 浏览

amazon-web-services - 通过 Docker Remote API 验证 ECR

我需要登录到我的AWS ECR存储库,以便它可以使用 API 提取所需的任何图像。我需要翻译aws ecr get-login --no-include-email --registry-ids <registry_id>使用 Docker API 执行的命令。

例如 -

  1. [已解决]需要对 AWS 进行 API 调用才能获取 docker 的登录凭证
    • 对此的 API 调用将为我base64encoded提供具有usernamepassword
  2. 如何AWS creds在 docker login API(通过使用Docker Remote API)调用(相当于docker login -u AWS -p <password> <server_address>)中使用那些?
0 投票
1 回答
922 浏览

docker - Golang Docker API:获取事件

我想通过 golang 集成从 docker 获取所有新事件。问题是它返回两个频道,我不知道如何订阅它们。

0 投票
1 回答
672 浏览

python - 使用 Python Docker API 从 tar 创建 docker

我想使用远程 docker 主机通过 Python Docker API 从内存中的 tar 构建图像。

当只发送一个 Dockerfile 时,我已经成功创建了一个 docker 映像,如下所示:

但是,当我尝试根据文档custom_context=True设置和传递 a时,它会失败并出现错误:tar archive

这就是我尝试这样做的方式:

编辑:

如果我通过磁盘路由:

相反,我收到以下错误消息:

0 投票
1 回答
1491 浏览

docker - 如何使用 Docker api 引擎在容器中执行 cmd

如何使用 Docker api 引擎在容器中执行命令。我想使用 api docker 通过 http 调用在容器中执行 cmds

0 投票
1 回答
368 浏览

docker - 使用 docker golang 库的卷挂载选项“z”

如何使用 docker golang 库为卷挂载传递 z 标志?用于支持 Selinux

0 投票
1 回答
104 浏览

rest - Docker REST API:创建图像问题:需要参数 fromSrc 的帮助:

嗨,伙计们需要你的帮助。

我正在通过 docker REST API 创建一个图像。

以下参数提到的链接fromSrc是描述:

fromSrc:要导入的源。该值可以是可以从中检索图像的 URL,或者 - 从请求正文中读取图像。此参数只能在导入图像时使用。

如果有人可以提出to read the image from the request body部分的含义以及我们如何测试

0 投票
1 回答
890 浏览

docker - 无法在通过 docker-engine 的 go sdk api 创建的容器中运行启动命令

我正在尝试使用 docker 引擎的 go sdk api 创建一个容器。我需要在容器中启动时运行一个命令,我将它作为参数传递给Client.ContainerCreate()api。我尝试以不同的方式传递该命令,但每次都发现一些问题。下面是我使用的代码:

1)如果我不提供Cmd参数,则创建容器。

2) 如果我提供Cmd参数 as Cmd: []string{"/bin/sh"," fabric-ca-server start -b admin:adminpw"},则ContainerCreate()返回一个容器 ID,但docker container list不显示任何容器并docker container inspect显示状态为已退出。

3) 如果我提供Cmd参数 as Cmd: []string{"sh -c"," fabric-ca-server start -b admin:adminpw"},则ContainerCreate()返回一个容器 ID,但ContainerStart()给出“exec: \"sh -c\": executable file not found in $PATH" 错误。docker container list不显示任何容器。

4) 如果我提供Cmd参数 as Cmd: []string{"fabric-ca-server start -b admin:adminpw"},则ContainerCreate()返回一个容器 ID,但ContainerStart()给出 \"exec: \\"fabric-ca-server start -b admin:adminpw\\": executable file not found in $PATH\": unknown" 错误.docker container list不显示任何容器。

有一个 .yaml 文件可以通过docker-compose命令创建相同的容器,其中sh -c 'fabric-ca-server start -b admin:adminpw'作为启动命令传递并创建容器。我正在尝试通过 go 代码创建该容器并面临问题。

由于我没有看到 .yaml 文件中的命令有任何问题,我认为命令很好。我无法弄清楚我错过了什么。请帮助:)

0 投票
1 回答
2105 浏览

docker - 如何使用 docker Registry API v2 将图像推送到 docker 注册表

我正在编写一个 docker 注册表 API 包装器来从一个私有注册表中提取图像并将它们推送到另一个。

首先,根据文档,我需要为image:tag. 在 Puling An Image之后,我已经成功下载了特定image:tag和清单的所有层。

推送图像之后,我遵循了以下步骤:

  1. POST /v2/<name>/blobs/uploads/(获取 UUID 即Location标头)
  2. HEAD /v2/<name>/blobs/<digest>(检查它是否已经存在于注册表中)
  3. PUT /v2/<name>/blobs/uploads/<uuid>?digest=<digest>( Monolithic Upload)

我不清楚的是以下几点:

  1. 我推送的每个单独层是UUID唯一的还是所有层都重复使用(例如,我是否需要为每个层运行一个新的 POST 并UUID在尝试上传之前获取一个新的?)。
  2. Completed Upload部分表示

为了使上传被认为是完整的,客户端必须在上传端点上提交一个带有摘要参数的 PUT 请求

但是,如前所述,我正在使用Monolithic Upload,它使用 aPUT并且与 Completed Upload 部分中显示的请求相同。那么通过整体上传,我是否也同时完成了上传?

问题

  1. 当我完成上述所有步骤时,我BLOB_UNKNOWN 在上传摘要时收到错误消息,例如

    { "errors:" [{ "code": "BLOB_UNKNOWN", "message": "blob unknown to registry", "detail": { "digest": } }, ... ] }

根据文档,推送清单时会产生此错误,并且清单中的其中一个层是未知的:

如果注册表未知一个或多个层,则返回 BLOB_UNKNOWN 错误。错误响应的详细信息字段将包含一个摘要字段,用于标识丢失的 blob。每个未知 blob 都会返回一个错误。响应格式如下:

让我感到困惑的是

  1. 我推送的是摘要(又名层)而不是清单,那么为什么会返回此错误?
  2. 我希望 blob 是未知的,因为我正在将新图像推送到注册表中

现在我将使用 docker 客户端,但我还没有在网上找到任何包装器示例来了解它是如何实现的。大概我错过了一些逻辑或误解了文档,但我不确定我哪里出错了?

0 投票
2 回答
943 浏览

docker - 无法使用 docker 存储库中供应商目录中的包

我正在尝试使用 docker 的 go api 创建一个容器。我想container.Config.ExposedPortsContainerCreate()API 中公开一个端口。下面是代码

当我编译时出现以下错误

由于包"github.com/docker/go-connections/nat"位于供应商目录中"github.com/docker/docker/vendor/github.com/docker/go-connections/nat",因此我在工作目录中创建了供应商目录,并将其内容复制github.com/docker/docker/vendor/github.com/docker/go-connections/natgithub.com/my_fabric/vendor/go-connections/nat并用于"github.com/my_fabric/go-connections/nat"导入而不是"github.com/docker/go-connections/nat". 但我收到以下错误。

基本上我想使用 docker 存储库中 vendor 目录中的包。请帮助:)