[英]How to add an entry to the hosts file inside a Docker container?
我有一个 Kafka 实例在我的本地机器(macOS Mojave)上运行,我试图让一个 Docker 容器看到它。
Java 程序中有两个文件将被构建为 Docker 容器:
docker-entrypoint.sh
:
#!/bin/bash
HOST_DOMAIN="kafka"
HOST_IP=$(awk '/32 host/ { print f } {f=$2}' <<< "$(</proc/net/fib_trie)" | head -n 1)
Dockerfile
:
# ...
COPY docker-entrypoint.sh ./
RUN chmod 755 docker-entrypoint.sh
RUN apt-get install -y sudo
CMD ["./docker-entrypoint.sh"]
现在我想写以下行:
$HOST_IP\\t$HOST_DOMAIN
到/etc/hosts
以便 Docker 容器可以与 Kafka 一起使用。 考虑到写入该文件需要提升访问权限,我该怎么做? 我试过这些:
1- 将CMD ["./docker-entrypoint.sh"]
更改为CMD ["sudo", "./docker-entrypoint.sh"]
2- 使用sudo tee
3- 使用su root;tee ...
4- 运行echo "%<user> ALL=(ALL) ALL" | tee -a /etc/sudoers > /dev/null
echo "%<user> ALL=(ALL) ALL" | tee -a /etc/sudoers > /dev/null
,所以我可以tee ...
没有sudo
。
1、2和3导致以下错误:
sudo: no tty present and no askpass program specified
我不明白这个错误。 搜索它有解决方案,可以解决何时ssh
运行命令,但这里没有ssh
。
要做 4,我已经需要成为sudo
,对吗?
那么,我怎样才能实现我想要做的事情呢?
除非您更改了用户帐户,否则 Dockerfile 命令通常以 root 身份运行,因此您不需要 sudo。
您不需要编辑任何主机文件
您可以使用host.docker.internal
从容器访问主机
https://docs.docker.com/docker-for-mac/networking/
否则,如果你想在本地设置东西,只需在容器中运行 Kafka
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.