[转帖][Dockerfile] 在Docker build阶段更改hosts

dockerfile,docker,build,阶段,更改,hosts · 浏览次数 : 0

小编点评

**3种方法来修改 docker build 阶段的 hosts 文件:** 1. **直接在 dockerfile 中修改 `/etc/hosts`:** ```dockerfile # 在 dockerfile 中修改 hosts 文件 FROM ubuntu # 添加一行,例如: RUN echo "127.0.0.1 localhost" >> /etc/hosts ``` 2. **使用 `--add-host`选项设置:** ```docker build -t my-image --add-host 127.0.0.1:localhost my-file.py ``` 3. **让容器不去寻找 `/etc/hosts`,而是去找自定义的 hosts 文件:** ```docker build -t my-image --env LD_LIBRARY_PATH="/tmp/lib-override-hosts" my-file.py ``` **注意:** * 在使用 `--add-host` 或 `LD_LIBRARY_PATH` 时,确保 `myHosts` 文件在容器中的 `tmp` 目录中存在。 * 为了确保容器可以找到自定义的 `libnss_files.so.2` 文件,请确保该文件在 `lib-override-hosts` 目录中存在。

正文

https://www.cnblogs.com/MasterMonkInTemple/p/16164805.html

 

怎么在docker build阶段修改hosts啊?试了3种方法:

1.直接在dockerfile里修改/etc/hosts: 不行

2.docker build的时候用--add-host 设置:可行

但是,host太多的时候,写成一长串很不方便

3. 让容器不去找/etc/hosts,而是去找我们自定义的hosts文件: 可行

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Change hosts finding path
RUN cp /etc/hosts /tmp/hosts
RUN mkdir -p -- /lib-override-hosts && cp /lib/x86_64-linux-gnu/libnss_files.so.2 /lib-override-hosts
RUN sed -i 's:/etc/hosts:/tmp/hosts:g' /lib-override-hosts/libnss_files.so.2
ENV LD_LIBRARY_PATH /lib-override-hosts
 
# Add hosts by environment
RUN if "$TEST_ENV" "PROD1Set" ]; then \
    echo "Need to add hosts for "${TEST_ENV}; \
    cat myHosts >> /tmp/hosts; \
else \
    echo "No need to add hosts for "${TEST_ENV}; \
fi
 
# Check hosts
RUN if "$REGION" "US" ]; then \
    host test1.company.com; \
    getent ahosts test1.company.com; \
else \
    host test2.company.com; \
    getent ahosts test2.company.com; \
fi

与[转帖][Dockerfile] 在Docker build阶段更改hosts相似的内容:

[转帖][Dockerfile] 在Docker build阶段更改hosts

https://www.cnblogs.com/MasterMonkInTemple/p/16164805.html 怎么在docker build阶段修改hosts啊?试了3种方法: 1.直接在dockerfile里修改/etc/hosts: 不行 2.docker build的时候用--add-

[转帖]docker build 中的 -f 选项

https://www.jianshu.com/p/06c35fd299b7 需要注意的是,在 docker build 命令接收的参数中,提供给 docker build 命令的 -f 选项应该 Dockerfile 路径名。如果 Dockerfile 文件就叫 Dockerfile 那么文件名可

【转帖】Dockerfile文件指令介绍

https://blog.whsir.com/post-5327.html Dockerfile其实就是一个文本文件,这个文本文件名称叫Dockerfile,里面包含了一些指令(可以理解成多个指令集合成了一个脚本来构建docker镜像),然后通过docker build来构建这个Dockerfile

[转帖]SPEC2006移入docker后的运行问题

https://www.cnblogs.com/csxyc/p/7157890.html 实验需要给SPEC2006的benchmark绑定CPUID,于是想到用docker分配CPU资源,写一个简单的DOCKERFILE文件完成配置 1 FROM cmbant/docker-gcc-build 2

[转帖]如何在一个Docker中同时运行多个程序进程?

https://cloud.tencent.com/developer/article/1683445 我们都知道Docker容器的哲学是一个Docker容器只运行一个进程,但是有时候我们就是需要在一个Docker容器中运行多个进程 那么基本思路是在Dockerfile 的CMD 或者 ENTRYP

[转帖]一文看懂 .dockerignore

https://dhcp.cn/k8s/docker/dockerignore.html#dockerignore-%E8%AF%A6%E7%BB%86%E4%BB%8B%E7%BB%8D 一文看懂 .dockerignore 在 dockerfile 同级目录中创建名为 .dockerignore

[转帖]docker进阶教程之dockerfile优化镜像大小

https://www.jb51.net/hack/ 同样功能的镜像,但是不同的Dockerfile build出来的镜像大小是不一样的,下面这篇文章主要给大家介绍了关于docker进阶教程之dockerfile优化镜像大小的相关资料,需要的朋友可以参考下 + 目录 一、无优化构建镜像 1 2 3

[转帖]Nginx的Docker容器化配置

https://www.cnblogs.com/lizexiong/p/15032552.html 这里只是做一个简单的演示,基础镜像选用 CentOS 7,Nginx 选用 Nginx 的扩展版本 OpenResty 1.15.8.2。 Nginx 镜像 Dockerfile 脚本如下: FROM

[转帖]Docker:Python环境Docker镜像瘦身

https://www.jianshu.com/p/c0ad13e0be85 关键字:Docker,Python 原始镜像 封装一个Python 3.7的环境并且安装Python依赖包实现一个机器学习算法预测任务,Dockerfile如下 FROM python:3.7 MAINTAINER xxx

[转帖]docker 日志方案

https://www.cnblogs.com/charlieroro/p/10294450.html docker logs默认会显示命令的标准输出(STDOUT)和标准错误(STDERR)。下面使用echo.sh和Dockerfile创建一个名为echo.v1的镜像,echo.sh会一直输出”h