Docker 修改容器hosts文件

Posted by Sunfy on 2023-05-09
Words 345 and Reading Time 1 Minutes
Viewed Times
Viewed Times
Visitors In Total

一、命令

一般正式环境的镜像都是提前编译好的,如果不是采取docker-compose编译的镜像,很难修改host,所以我们只能在启动的时候通过参数配置。

使用命令参数指定—add-host

1
2
3
4
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相关内容如下

1
2
3
4
5
6
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文件放在你的代码根目录下

1
2
# 整个hosts替换
RUN cat /wangscaler/hosts >> /etc/hosts

在原有的hosts文件上追加:

1
RUN echo '1.2.3.4 test.a' >> /etc/hosts

四、使用sh脚本结合dockerfile优化方法

在dockerfile同目录添加执行脚本:hosts.sh

1
2
3
4
5
6
7
8
#!/bin/bash
set -x
echo 'Starting....'

# 在容器的hosts文件中追加
echo '192.168.0.1 www.test.com' >> /etc/hosts

java -jar /tmp/app.jar

修改dockerfile文件,改成下面的内容

1
2
3
COPY hosts.sh /tmp/hosts.sh
RUN chmod +x /tmp/hosts.sh
ENTRYPOINT [ "sh", "/tmp/hosts.sh" ]

这种方式就是容器启动之后,将服务初始化命令改成脚本,在脚本中添加修改hosts文件的相关指令。


Copyright 2021 sunfy.top ALL Rights Reserved

...

...

00:00
00:00