【Docker学习】docker run的--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.新终端输入访问命令

docker run --add-host host.docker.internal=host-gateway \
> 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服务器收到了请求,将请求打印了出来。

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值