问题标签 [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.
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?
amazon-web-services - 通过 Docker Remote API 验证 ECR
我需要登录到我的AWS ECR
存储库,以便它可以使用 API 提取所需的任何图像。我需要翻译aws ecr get-login --no-include-email --registry-ids <registry_id>
使用 Docker API 执行的命令。
例如 -
- [已解决]需要对 AWS 进行 API 调用才能获取 docker 的登录凭证
- 对此的 API 调用将为我
base64encoded
提供具有username
和password
- 对此的 API 调用将为我
- 如何
AWS creds
在 docker login API(通过使用Docker Remote API)调用(相当于docker login -u AWS -p <password> <server_address>
)中使用那些?
docker - Golang Docker API:获取事件
我想通过 golang 集成从 docker 获取所有新事件。问题是它返回两个频道,我不知道如何订阅它们。
python - 使用 Python Docker API 从 tar 创建 docker
我想使用远程 docker 主机通过 Python Docker API 从内存中的 tar 构建图像。
当只发送一个 Dockerfile 时,我已经成功创建了一个 docker 映像,如下所示:
但是,当我尝试根据文档custom_context=True
设置和传递 a时,它会失败并出现错误:tar archive
这就是我尝试这样做的方式:
编辑:
如果我通过磁盘路由:
相反,我收到以下错误消息:
docker - 如何使用 Docker api 引擎在容器中执行 cmd
如何使用 Docker api 引擎在容器中执行命令。我想使用 api docker 通过 http 调用在容器中执行 cmds
docker - 使用 docker golang 库的卷挂载选项“z”
如何使用 docker golang 库为卷挂载传递 z 标志?用于支持 Selinux
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 文件中的命令有任何问题,我认为命令很好。我无法弄清楚我错过了什么。请帮助:)
docker - 如何使用 docker Registry API v2 将图像推送到 docker 注册表
我正在编写一个 docker 注册表 API 包装器来从一个私有注册表中提取图像并将它们推送到另一个。
首先,根据文档,我需要为image:tag
. 在 Puling An Image之后,我已经成功下载了特定image:tag
和清单的所有层。
在推送图像之后,我遵循了以下步骤:
POST /v2/<name>/blobs/uploads/
(获取 UUID 即Location
标头)HEAD /v2/<name>/blobs/<digest>
(检查它是否已经存在于注册表中)PUT /v2/<name>/blobs/uploads/<uuid>?digest=<digest>
(Monolithic Upload
)
我不清楚的是以下几点:
- 我推送的每个单独层是
UUID
唯一的还是所有层都重复使用(例如,我是否需要为每个层运行一个新的 POST 并UUID
在尝试上传之前获取一个新的?)。 - Completed Upload部分表示
为了使上传被认为是完整的,客户端必须在上传端点上提交一个带有摘要参数的 PUT 请求
但是,如前所述,我正在使用Monolithic Upload,它使用 aPUT
并且与 Completed Upload 部分中显示的请求相同。那么通过整体上传,我是否也同时完成了上传?
问题
当我完成上述所有步骤时,我
BLOB_UNKNOWN
在上传摘要时收到错误消息,例如{ "errors:" [{ "code": "BLOB_UNKNOWN", "message": "blob unknown to registry", "detail": { "digest": } }, ... ] }
根据文档,推送清单时会产生此错误,并且清单中的其中一个层是未知的:
如果注册表未知一个或多个层,则返回 BLOB_UNKNOWN 错误。错误响应的详细信息字段将包含一个摘要字段,用于标识丢失的 blob。每个未知 blob 都会返回一个错误。响应格式如下:
让我感到困惑的是
- 我推送的是摘要(又名层)而不是清单,那么为什么会返回此错误?
- 我希望 blob 是未知的,因为我正在将新图像推送到注册表中
现在我将使用 docker 客户端,但我还没有在网上找到任何包装器示例来了解它是如何实现的。大概我错过了一些逻辑或误解了文档,但我不确定我哪里出错了?
docker - 无法使用 docker 存储库中供应商目录中的包
我正在尝试使用 docker 的 go api 创建一个容器。我想container.Config.ExposedPorts
在ContainerCreate()
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/nat
到github.com/my_fabric/vendor/go-connections/nat
并用于"github.com/my_fabric/go-connections/nat"
导入而不是"github.com/docker/go-connections/nat"
. 但我收到以下错误。
基本上我想使用 docker 存储库中 vendor 目录中的包。请帮助:)