繁体   English   中英

如何在 Docker 容器内的主机文件中添加条目?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM