当前位置:   article > 正文

【Docker学习】docker run的--add-host选项_docker --add-host

docker --add-host

--add-host:

通过使用一个或多个 --add-host 标志将其他主机添加到容器的 /etc/hosts 文件中。

以下的命令展示了将IPV4的主机my-host4和IPV6的主机my-host6添加到boystar/ubantu系统的/etc/hosts文件中。其中--rm表示退出容器ubantu系统后,会自动删除容器ubantu和其中的文件系统。-it表示进入到ubantu的命令行提示符下。

docker run --add-host=my-host4=8.8.8.8 --add-host=my-host6:[2001:db8::33] --rm -it boystar/ubantu

进入ubantu的命令提示符环境下,查看/etc/hosts,如下图所示:

可以看到主机名和IP地址都加入到文件的最后。

值得注意的是,--add-host后面的主机名对应的IP地址之间,也可以是冒号(:)。上面的命令针对my-host6特意使用了冒号(:),而针对my-host4使用了等号(=)。

备注:

关于--add-host选项,官网上给出的一个例子,引起了我的关注。一开始没看明白,后来自己实操了一遍解决了疑惑。如下图所示:


下面我将我的实操步骤分享出来,一步步解释上图的意思。

1.输出echo后面的文本并存储到./hello文件。

echo "你好!" > ./hello

我将官网示例echo输出的‘hello from host’,改为“你好!”。

2.用python3启动http.server服务,端口号是8000。

python3 -m http.server 8000

  • -m代表模块选项,用来启动Python的模块作为独立的服务器。

  • http.server是python的内置模块,用于快速创建一个简易的http服务器,来模拟服务器环境并测试应用程序。
  • 8000代表开放的端口号,只有通过8000才可以访问这个简易服务器。

执行结果如下:

官网例子并没有运行结果。从中我们可以看到http服务启动了,端口号是8000。不过,命令行提示符也无法输入了,我们只有新建终端才可以继续。

3.新终端输入访问命令

  1. docker run --add-host host.docker.internal=host-gateway \
  2. > curlimages/curl -s host.docker.internal:8000/hello

这个命令创建并运行curlimages/curl容器,将host.docker.internal=host-gateway添加到/etc/hosts中,并向容器传递参数-s和host.docker.internal:8000/hello。其中-s代表静默模式(-s),后面的地址是前面开放8000端口号的简易服务器地址。也就是说,这个命令除了运行容器外,还使用运行的容器curl访问主机的http服务器。host.docker.internal=host-gateway是固定用法,用于容器访问主机。结果如下:

简单解释一下,上面因为找不到本机镜像curlimages/curl所以主动从公共镜像拉取了这个镜像。最后输出了容器访问主机的http服务器得到的hello文件信息,也就是“你好!”。

4.查看http服务器

我们再来看看作为http服务器的终端。

这说明,我们的http服务器收到了请求,将请求打印了出来。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/902276
推荐阅读
相关标签
  

闽ICP备14008679号