问题标签 [terraform-provider-docker]
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.
terraform - 如何让 Terraform 中的 Docker 提供程序在尝试连接之前等待地址可用?
我在 Terraform 中有以下资源:
这依赖于在ipv4_address
连接到 docker 机器之前要知道的值。在供应另一个资源之前,该值是未知的:
当我运行时terraform plan
,我收到以下错误:
错误:初始化 Docker 客户端时出错:无法解析 docker 主机 ``
在 docker.tf 第 1 行,在提供者“docker”中:1:提供者“docker”{
这似乎ipv4_address
是空的,因为 docker 插件在配置之前尝试连接到 docker 机器。我如何告诉它在尝试连接之前等待机器配置好?
我试过的一件事:
当我这样做时,我收到此错误:
错误:提供程序块中的保留参数名称
在 docker.tf 第 4 行,在提供者“docker”中:4:depends_on = [
提供者参数名称“depends_on”保留供 Terraform 在未来版本中使用。
但是阅读更多内容depends_on
,我认为这不是解决方案。
docker - Terraform Docker Provider:将端口“绑定”到特定网络
启动支持三个网络的 Docker 容器:默认桥(OAM)、桥(数据输入)和 MacVLAN(数据输出)。问题是 Docker 提供程序似乎在默认桥上设置了所有定义的端口。如何告诉 Terraform 将定义的端口绑定到特定的 Docker 网络?
.tf 文件片段:
Docker 网络:
端口 222 有效,端口 881 无效。
来自运行 Docker 的主机操作系统的 IPTables:
该tcp dpt:881
行需要有一个目的地192.168.32.3
。syslog 容器仅使用 Data-In Docker 网络,因此具有正确的 IP 地址。
任何建议/解决方法?谢谢!:)
docker - Terraform Docker Provider:有什么方法可以在 Docker 主机上执行命令?
鉴于 Terraform Docker 提供程序的限制(请参阅Terraform Docker 提供程序:“绑定”端口到特定网络),有没有办法在容器启动后在 Docker 主机上执行命令?
由于您无法指定将特定端口{} 块附加到哪个 Docker 网络,也许我可以只定义一个网络来启动我的 CNF,以便 Terraform 将端口绑定到该网络,然后将其他网络添加到容器中,然后启动还是重启呢?我的 Docker 主机是远程的,否则我只会使用 shell 脚本来正确启动,而不会受到 Terraform 的限制。
terraform - Terraform:为输出指定特定的 Docker 网络名称
我有一个连接到三个 Docker 网络的容器化网络功能 (CNF):
我正在尝试获取“外网”IP 地址以用作另一个容器的输入。我这样指定:
当它是第三个元素时,它可以正常工作....但问题是 Terraform(或 Docker,两者之一)并不总是将“外部网络”作为第三个网络:(
有没有办法指定 [network_name="outside-net"] 而不是索引号?
docker - 如何使用 terraform destroy 强制删除 Docker 映像
我正在关注terraform.io 上的教程,该教程让我使用 terraform 配置 docker 映像和容器,然后销毁 terraform 堆栈。但是,我收到以下错误:
我知道本机 Docker 解决方案正在运行docker rmi -f 540a289bab6c
。但是,我想知道是否有一种 terraform 方法来解决这个问题?
terraform 资源的文档docker_image
显示了 terraform 试图破坏图像的原因terraform destroy
:模板main.tf
已keep-locally
设置为true
. 但它没有说明如何强制进行这种破坏。
教程的main.tf
内容如下:
那么,如何terraform destroy
在不借助 docker 原生工具的手动干预的情况下强制使用此模板呢?
docker - Terraform docker 无法使用远程主机的容器注册表进行身份验证
我在使用 Terraform 0.13.4 的 Windows 机器上,并尝试使用 Terraform 和 Docker 提供程序在远程主机上启动一些容器:
我很难做到这一点,因为它无法通过我的私人注册表进行身份验证。总是越来越401 Unauthorized
。
如果我不这样做来获取sha256_digest
并仅使用docker_container
资源,那么一切正常,但它会强制替换正在运行的容器。
docker - 如何在 terraform 0.14 中选择正确的 docker 提供程序
为了与 Docker 集成,我将 terraform 设置如下:
所需的提供者:
该提供者的实例化:
最后我在资源中按如下方式使用它:
当我运行时terraform init
,它似乎仍然指的是 HashiCorp 的“旧” terraform 提供程序:
当我运行时,terraform providers
我确实看到了参考,原因是docker_registry_image
:
笔记:
- 所有其他提供商都在其最新版本上。
- 我正在使用 terraform 0.14.6。
- 上面给出的资源是我正在使用的唯一 docker 资源。
- 我已经尝试在提供者和资源上使用别名,但它不起作用。
我该如何解决这个问题?谢谢!
docker - Terraform 在每一步都要求 Docker 主机的密码
我实际上正在学习 Terraform,我一直在尝试使用它在远程服务器上创建 docker 容器。它正在工作,但问题是它在每一步都不断要求输入密码。我只想在开始时输入一次密码,然后部署我的所有资源。这是我的地形代码。
这是部署的交互式输出,您可以看到对于每个 SSH 命令,我一直在输入密码。
我使用 ssh-keygen 命令生成了 SSH 密钥,并将密钥复制到本地计算机上的 SSH 配置文件中:
这是SSH配置文件
我怎样才能通过只提供一次 SSH 密码来执行此代码?