【问题标题】:Use hosts file for docker-in-docker container in kubernetes pod在 Kubernetes pod 中为 docker-in-docker 容器使用 hosts 文件
【发布时间】:2018-10-09 07:58:05
【问题描述】:

我想要什么:

在 Jenkins master 创建的 kubernetes pod 中动态添加主机,并允许 pod 中挂载的 docker 使用这些主机。

我正在使用 Jenkins 为 docker build 创建动态从站,并为 docker build 和 docker push 创建了 docker-in-docker slave 容器。 docker-in-docker 是通过将 VM 的 docker.sock 挂载到容器来创建的:

volumeMounts:
- name: hostpathvolume
  mountPath: '/var/run/docker.sock'

我正在使用 kubernetes 的 hostAliases 将主机文件附加到一些私有 docker 注册表中:

hostAliases:
- ip: 9.110.73.11
  hostnames:
  - devopsprod.icp
- ip: 9.119.42.60
  hostnames:
  - devops.icp

我已经确认创建的 pod 在 /etc/hosts 中有这些主机,但是当我运行时:

docker login -u xxx -p xxx devops.icp:8500

我收到了一个 DNS 错误:

Error response from daemon: Get https://devops.icp:8500/v2/: dial tcp: lookup devops.icp on 0.0.0.0:00: no such host

这意味着我在容器中运行的 docker 没有使用 pod 中的 /etc/hosts 来查找 ip 地址。有没有办法解决这个问题?我不想在 VM 的 /etc/hosts 文件中手动添加主机。

【问题讨论】:

    标签: docker jenkins kubernetes


    【解决方案1】:

    您已将docker.sock 挂载到 Pod 中,但 Docker 仍然使用来自 Node 的配置,而不是来自 Pod 的配置。没有其他选项,您需要在每个节点上为/etc/hosts 添加别名才能使其工作。

    【讨论】:

      猜你喜欢
      • 2019-09-22
      • 2022-11-30
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 2015-11-11
      • 2017-05-09
      • 2020-05-12
      相关资源
      最近更新 更多