zoukankan      html  css  js  c++  java
  • docker--container的port映射

    使用nginx为例

    先运行nginx

    [root@localhost ~]# docker run --name web -d nginx
    Unable to find image 'nginx:latest' locally
    latest: Pulling from library/nginx
    0a4690c5d889: Pull complete 
    9719afee3eb7: Pull complete 
    44446b456159: Pull complete 
    Digest: sha256:b4b9b3eee194703fc2fa8afa5b7510c77ae70cfba567af1376a573a967c03dbb
    Status: Downloaded newer image for nginx:latest
    WARNING: IPv4 forwarding is disabled. Networking will not work.
    06537c95ca2e0c1885a93755e9fa92aa1a8c7b98ce169764c3197e0208febf79
    [root@localhost ~]# docker container ls
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    06537c95ca2e        nginx               "nginx -g 'daemon of…"   8 minutes ago       Up 8 minutes        80/tcp              web
    19216c85489e        busybox             "/bin/sh -c 'while t…"   About an hour ago   Up About an hour                        test4
    cec10f0cd32d        busybox             "/bin/sh -c 'while t…"   6 hours ago         Up 6 hours                              test3
    68789fa4dc47        busybox             "/bin/sh -c 'while t…"   19 hours ago        Up 19 hours                             test2
    cba625871070        busybox             "/bin/sh -c 'while t…"   24 hours ago        Up 24 hours                             test1
    [root@localhost ~]#

    查看 IP

    [root@localhost ~]# docker network inspect bridge 
    [
        {
            "Name": "bridge",
            "Id": "4e8172ef8e0169e74285225030d0b5f271494df46c4f7bc3ba38e9ca87a1c6f9",
            "Created": "2019-07-17T06:50:29.144315528-07:00",
            "Scope": "local",
            "Driver": "bridge",
            "EnableIPv6": false,
            "IPAM": {
                "Driver": "default",
                "Options": null,
                "Config": [
                    {
                        "Subnet": "172.17.0.0/16",
                        "Gateway": "172.17.0.1"
                    }
                ]
            },
            "Internal": false,
            "Attachable": false,
            "Ingress": false,
            "ConfigFrom": {
                "Network": ""
            },
            "ConfigOnly": false,
            "Containers": {
                "06537c95ca2e0c1885a93755e9fa92aa1a8c7b98ce169764c3197e0208febf79": {
                    "Name": "web",
                    "EndpointID": "8ee4eb75d3551bd76a19790f0bdc9f8bbd555e5674daa69e9b51e96d38deb9f1",
                    "MacAddress": "02:42:ac:11:00:04",
                    "IPv4Address": "172.17.0.4/16",
                    "IPv6Address": ""
                },

    在宿主机能访问nginx

    [root@localhost ~]# curl http://172.17.0.4
    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    <style>
        body {
             35em;
            margin: 0 auto;
            font-family: Tahoma, Verdana, Arial, sans-serif;
        }
    </style>
    </head>
    <body>
    <h1>Welcome to nginx!</h1>
    <p>If you see this page, the nginx web server is successfully installed and
    working. Further configuration is required.</p>
    
    <p>For online documentation and support please refer to
    <a href="http://nginx.org/">nginx.org</a>.<br/>
    Commercial support is available at
    <a href="http://nginx.com/">nginx.com</a>.</p>
    
    <p><em>Thank you for using nginx.</em></p>
    </body>
    </html>
    [root@localhost ~]#

     我的宿主机是在VMware虚拟的centos,因为IP是绑定在nginx container网络空间, 想要让nginx能从外面访问,则需要做端口映射,把container上的80端口,映射到宿主机上

      1 [root@localhost ~]# docker run -d --name web -p 8080:80 nginx #-p 8080:80 把本地8080端口映射到container 80端口
      2 c24bf84a9d3bdd46fa33f13032c27bbba22ff4cb24ba9cb2309d2570a41e2853
      3 [root@localhost ~]# docker container ps
      4 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
      5 c24bf84a9d3b        nginx               "nginx -g 'daemon of…"   14 seconds ago      Up 13 seconds       0.0.0.0:8080->80/tcp   web
      6 [root@localhost ~]# docker network inspect bridge #查看container IP
      7 [
      8     {
      9         "Name": "bridge",
     10         "Id": "ac664a242c917c931998806bfc970c0fb3c7c9c5b0cbed7769b5a71978ff9748",
     11         "Created": "2019-07-19T02:40:37.951941039-07:00",
     12         "Scope": "local",
     13         "Driver": "bridge",
     14         "EnableIPv6": false,
     15         "IPAM": {
     16             "Driver": "default",
     17             "Options": null,
     18             "Config": [
     19                 {
     20                     "Subnet": "172.17.0.0/16",
     21                     "Gateway": "172.17.0.1"
     22                 }
     23             ]
     24         },
     25         "Internal": false,
     26         "Attachable": false,
     27         "Ingress": false,
     28         "ConfigFrom": {
     29             "Network": ""
     30         },
     31         "ConfigOnly": false,
     32         "Containers": {
     33             "c24bf84a9d3bdd46fa33f13032c27bbba22ff4cb24ba9cb2309d2570a41e2853": {
     34                 "Name": "web",
     35                 "EndpointID": "0eab9a9edb82d03bec9193175689159a2c8826ecfa70b183e84227251a5713fe",
     36                 "MacAddress": "02:42:ac:11:00:02",
     37                 "IPv4Address": "172.17.0.2/16",
     38                 "IPv6Address": ""
     39             }
     40         },
     41         "Options": {
     42             "com.docker.network.bridge.default_bridge": "true",
     43             "com.docker.network.bridge.enable_icc": "true",
     44             "com.docker.network.bridge.enable_ip_masquerade": "true",
     45             "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
     46             "com.docker.network.bridge.name": "docker0",
     47             "com.docker.network.driver.mtu": "1500"
     48         },
     49         "Labels": {}
     50     }
     51 ]
     52 [root@localhost ~]# curl http://172.17.0.2 #访问container IP可以访问
     53 <!DOCTYPE html>
     54 <html>
     55 <head>
     56 <title>Welcome to nginx!</title>
     57 <style>
     58     body {
     59          35em;
     60         margin: 0 auto;
     61         font-family: Tahoma, Verdana, Arial, sans-serif;
     62     }
     63 </style>
     64 </head>
     65 <body>
     66 <h1>Welcome to nginx!</h1>
     67 <p>If you see this page, the nginx web server is successfully installed and
     68 working. Further configuration is required.</p>
     69 
     70 <p>For online documentation and support please refer to
     71 <a href="http://nginx.org/">nginx.org</a>.<br/>
     72 Commercial support is available at
     73 <a href="http://nginx.com/">nginx.com</a>.</p>
     74 
     75 <p><em>Thank you for using nginx.</em></p>
     76 </body>
     77 </html>
     78 [root@localhost ~]# curl http:/127.0.0.1:8080
     79 curl: (6) Could not resolve host: http; Name or service not known
     80 [root@localhost ~]# curl http://127.0.0.1:8080 #测试宿主机 8080端口
     81 <!DOCTYPE html>
     82 <html>
     83 <head>
     84 <title>Welcome to nginx!</title>
     85 <style>
     86     body {
     87          35em;
     88         margin: 0 auto;
     89         font-family: Tahoma, Verdana, Arial, sans-serif;
     90     }
     91 </style>
     92 </head>
     93 <body>
     94 <h1>Welcome to nginx!</h1>
     95 <p>If you see this page, the nginx web server is successfully installed and
     96 working. Further configuration is required.</p>
     97 
     98 <p>For online documentation and support please refer to
     99 <a href="http://nginx.org/">nginx.org</a>.<br/>
    100 Commercial support is available at
    101 <a href="http://nginx.com/">nginx.com</a>.</p>
    102 
    103 <p><em>Thank you for using nginx.</em></p>
    104 </body>
    105 </html>
    106 [root@localhost ~]#

    如果本机是公网IP,则可以直接互联网访问,我这是虚拟机,如果虚拟机网络模式是NAT,则在本地可以直接用虚拟机IP:8080访问,如果想用本地IP则需要配置NAT端口转换,比如下面:

    配置生效后我可以用本地IP:8081访问 web

     

  • 相关阅读:
    内存页面的各种属性(就是Read, Write, Execute的组合)
    分配粒度和内存页面大小(x86处理器平台的分配粒度是64K,内存页是4K,所以section都是0x1000对齐,硬盘扇区大小是512字节,所以PE文件默认文件对齐是0x200)
    NULL指针区域(NULL定义为0-65535之间的任何数都可以)
    Tiny Mapper是一个.net平台开源的对象映射组件
    表达式树动态拼接lambda
    VSC调试.NET Core 应用程序
    领域驱动设计之单元测试最佳实践
    web框架python
    无需安装Mono的Jexus
    分布式发布订阅消息系统Kafka
  • 原文地址:https://www.cnblogs.com/laonicc/p/11215043.html
Copyright © 2011-2022 走看看