加载中…
个人资料
jxywxy
jxywxy
  • 博客等级:
  • 博客积分:0
  • 博客访问:2,977
  • 关注人气:4
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

docker中的端口映射理解

(2019-08-21 15:20:55)
标签:

docker

port

映射

分类: linux
在我们sudo docker ps -a的时候,会看到一个ports项
CONTAINER ID        IMAGE                       COMMAND                  CREATED              STATUS              PORTS                     NAMES
39fb7bcaca17        seemmo/structure:1.4.7.14   "/workspace/seemideo…"   About a minute ago   Up About a minute   0.0.0.0:10006->8006/tcp   jolly_rosalind

这个ports的配置和业务是强相关的,要与业务的约定对应起来。

上面的8006/TCP是docker规定的端口号
10006这个是主机接收业务数据的端口号,即外部访问的ip。如果是http的话,会是http://主机ip:10006 的格式。
数据流:外部数据——》主机:10006——》docker:8006

使用sudo docker inspect container_id可以看到docker虚拟出来的主机ip及其端口号的对应
     "Bridge": "",
            "SandboxID": "2d597d2fc2d27ac0bf043446de5e999cbac56a2216149c6b6afe7b4c991b9a14",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "8006/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "10006"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/2d597d2fc2d2",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "805e43c3dbc6708d50e7f523877006b106a5db23e7250e44e350786d3c6d1442",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "52e4ba014ad72aa24da1b03cfd5bd6dd8a3c1e1240a375c6b0ac401f70d7df42",
                    "EndpointID": "805e43c3dbc6708d50e7f523877006b106a5db23e7250e44e350786d3c6d1442",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }

上面的ip可以用ip addr看到docker0的ip

在我们运行docker时,会做一个映射关系脚本,其中的-p即为主机与docker的端口映射关系:
sudo docker run  --privileged --restart=always -v /dev/shm --tmpfs /dev/shm:exec -v /system:/system  -v /data:/data  -v /usr/lib/:/usr/lib/ -v /lib:/lib -v /etc/localtime:/etc/localtime:ro -p 10006:8006 --ulimit core=0 -itd seemmo/structure:1.4.7.14


参看




0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有