这是我的Dockerfile
FROM javamachine_0.1.2
MAINTAINER Meiram
RUN /report/report.sh start
ENV LANG C.UTF-8 ENV LANGUAGE C.UTF-8 ENV LC_ALL C.UTF-8
RUN echo "nameserver 192.168.1.100" > /etc/resolv.conf
COPY resolv.conf /etc/resolv.conf
EXPOSE 9090
创建容器指令docker run -dns时也不要更改/etc/resolv.conf中的条目
如何永久更改/etc/resolv.conf中的条目?
答案 0 :(得分:2)
如果您使用--dns,则可能需要删除这些行:
RUN echo "nameserver 192.168.1.100" > /etc/resolv.conf
COPY resolv.conf /etc/resolv.conf
另外,
尝试交换行.COPY命令将覆盖前一行。
答案 1 :(得分:1)
我找到了答案
当您需要使用默认网络设置(172.0.0.x)
创建容器时键 - dns 正在运行。 但不适用于用户定义的网络--net some_name_of_your_network
因此,如果您需要创建容器,可以在/ etc / hosts
中定义主机名使用此命令
docker run --net my_net --ip 192.168.1.x --add-host webserver:192.168.1.100 --add-host mysqlserver:192.168.1.x -td someimage
但这个解决方案对我来说是不可接受的。因为我需要编辑/etc/resolv.conf
答案 2 :(得分:1)
有关详细信息,请参阅https://docs.docker.com/engine/userguide/networking/default_network/configure-dns/。
您希望将以下内容添加到docker命令行,而不是所有--add-host
选项(假设您的主机可以通过dns解析)
--dns=192.168.1.100
基于您运行多个服务的事实,如果您的Web服务器和mysqlserver也是docker容器,您可能希望通过docker-compose配置容器集合。有关详细信息,请参阅https://docs.docker.com/compose/overview/。
答案 3 :(得分:1)
如果你使用docker-compose,你可以在docker-compose.yml中简单地添加你的dns-server
my-app:
build: my-app
dns:
- 10.20.20.1 # dns server 1
- 10.21.21.2 # dns server 2
dns_search: ibm-edv.ibmnet.int
请参阅https://bitbucket.org/snippets/mountdiablo/9yKxG/docker-compose-reference-yaml-file-with