我想在其内容(网页)中看到运行nginx容器的IP地址。我试图修改原始nginx映像(如下所示),但创建的容器显示只有一个(172.17.0.2)显然是从修改后的映像中获得的,而不是相应的容器。
Dockerfile:
FROM nginx:latest
WORKDIR /
COPY a /a
RUN chmod +x /a
RUN ./a
字符串
“a”文件:
echo $(hostname -i) >> /usr/share/nginx/html/index.html
型
然后启动3个容器,但只得到一个地址:172.17.0.2,而不是来自3个服务器的真实的IP。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e30be0255521 ng "/docker-entrypoint.…" 4 seconds ago Up 3 seconds 0.0.0.0:8887->80/tcp, :::8887->80/tcp web2
cc1893432ca8 ng "/docker-entrypoint.…" 14 seconds ago Up 13 seconds 0.0.0.0:8889->80/tcp, :::8889->80/tcp web1
16ac880a4e7a ng "/docker-entrypoint.…" 47 seconds ago Up 46 seconds 0.0.0.0:8888->80/tcp, :::8888->80/tcp web
型
如何修改nginx镜像(或其他东西)以获取nginx内容中的真实的容器IP?
我试图在这里找到解决方案(有几篇文章,但没有人得到解决方案),在网络上和修改Dockerfile。
1条答案
按热度按时间dced5bon1#
我需要回答我自己的问题,无论如何,它可能对任何学习Docker的人都有用。要实现通过默认Nginx位置提供主机IP地址的Docker配置,请按照以下步骤操作:
1.创建一个Dockerfile:
从nginx:latest
CMD [“sh”,“-c”,“hostname -i >/usr/share/nginx/html/index. html & nginx-g 'daemon off”“]
此Dockerfile使用最新的Nginx镜像,将其配置为执行命令,使用$hostname -i捕获主机的IP地址并将其写入默认的Nginx位置(/usr/share/nginx/html/index.html)。构建Docker镜像:
1.构建Docker镜像:执行以下命令构建Docker镜像,并相应地命名(例如,“selfweb”):
docker build -t selfweb .
1.运行Docker容器:启动容器,同时将容器中的端口80Map到主机上的端口,例如端口8080:
docker run -d -p 8080:80 selfweb
1.修改Nginx提供的主机名:使用curl或您喜欢的Web浏览器访问Nginx提供的主机名:
curl http://localhost:8080
x1c 0d1x的数据