一、命令
一般正式环境的镜像都是提前编译好的,如果不是采取docker-compose编译的镜像,很难修改host,所以我们只能在启动的时候通过参数配置。
使用命令参数指定--add-host
docker run \
--add-host=www.scalerwang.com:192.168.1.100 \
--add-host=blog.scalerwang.com:192.168.1.200 \
--name XXX -it mydocker
二、docker-compose.yml
在yml中指定,编译的docker容器自动配置host文件,yaml相关内容如下
services:
service-nginx:
image: nginx
extra_hosts:
- "www.scalerwang.com:192.168.1.100"
- "blog.scalerwang.com:192.168.1.200"
三、dockerfile
替换hosts文件:dockerfile没有直接的参数可以直接修改host文件,如果想通过dockerfile修改host文件,需要事先准备好host文件放在你的代码根目录下
# 整个hosts替换
RUN cat /wangscaler/hosts >> /etc/hosts
在原有的hosts文件上追加:
RUN echo '1.2.3.4 test.a' >> /etc/hosts
四、使用sh脚本结合dockerfile优化方法
在dockerfile同目录添加执行脚本:hosts.sh
#!/bin/bash
set -x
echo 'Starting....'
# 在容器的hosts文件中追加
echo '192.168.0.1 www.test.com' >> /etc/hosts
java -jar /tmp/app.jar
修改dockerfile文件,改成下面的内容
COPY hosts.sh /tmp/hosts.sh
RUN chmod +x /tmp/hosts.sh
ENTRYPOINT [ "sh", "/tmp/hosts.sh" ]
这种方式就是容器启动之后,将服务初始化命令改成脚本,在脚本中添加修改hosts文件的相关指令。