在kubernetes容器中将hosts文件用于docker-in-docker容器

时间:2018-10-09 07:58:05

标签: docker jenkins kubernetes

我想要什么:

动态地在Jenkins master创建的kubernetes容器中添加主机,并允许容器中已安装的docker使用主机。

我正在使用Jenkins为docker构建创建动态从属,并为docker build和docker push创建了docker-in-docker从属容器。通过将VM的docker.sock安装到容器来创建docker-in-docker:

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文件中手动添加主机。

1 个答案:

答案 0 :(得分:0)

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