docker - 端口映射
  KRsXEGSB49bk 2023年11月02日 45 0

三、端口映射:

当创建nginx镜像时,并且启动nginx时,只能在容器内部区访问nginx的网址.为了容器之外能访问,需要暴露端口,即将容器内部的端口映射出去.

真实机A上跑了一个台虚拟机vagrant(192.168.205.10 B)中启动一台nginx容器(172.17.0.2 C).

  • B在vagrant宿主机中可以ping通容器中C的ip,即B -> C ok.
  • C在容器中也可以ping通vagrant宿主机B的ip,即B -> A ok.
  • 真实机A可以ping通B的ip,但是ping不通C容器中的ip,即A -> B ok,A -> C ng.

1. 运行一个nginx提供web服务:

$ docker run -d --name web nginx
$ docker exec web ip a    # 命令使用不了,最小安装,以下方式获得ip
  OCI runtime exec failed: exec failed: container_linux.go:345:
  starting container process caused "exec: \"ip\":
  executable file not found in $PATH": unknown
$ docker inspect bridge
  "Containers": {
    "0cad3a7cf5c0f77......": {
        "Name": "web",
        "IPv4Address": "172.17.0.2/16",
    }
  }
# 宿主机操作
$ ping 172.17.0.2        # 可以通,因为有docker0网桥
$ telnet 172.17.0.2 80   # 成功,显示Connected
$ curl 172.17.0.2        # 成功,访问到nginx welcome
$ ping 192.168.205.10    # 可以通
$ curl 192.168.205.10    # 不成功
$ curl 127.0.0.1         # 不成功
# 真实机操作
$ curl 192.168.205.10

说明: ①. nginx是一个独立的namesapce空间,它只绑定到了172.17.0.2这个网络空间中. ②. 在宿主机是可以提供web服务的,但是需要给外面提供服务的.

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论