• docker网络


     

    Docker 允许通过外部访问容器或容器互联的方式来提供网络服务。

    • 端口映射允许外部访问容器
    • --link 容器互联
    • 容器桥接网络
    1.通过--link容器通信,给test2添加一个hosts解析记录
    docker run -d --name test2 --link test1 busybox /bin/sh -c "while true;do sleep 3600;done"
    test2可以ping通test1,反之不可以

    但是--link是不推荐使用的,而是更强大的自定义docker网络链接容器

    复制代码
    1.新建一个docker网络
    docker network create -d bridge my-net
    -d 参数指定 Docker 网络类型,有 bridge overlay
    
    2.连接容器
    运行一个容器并连接到新建的 my-net 网络
    
    $ docker run -it --rm --name busybox1 --network my-net busybox sh
    打开新的终端,再运行一个容器并加入到 my-net 网络
    
    $ docker run -it --rm --name busybox2 --network my-net busybox sh
    再打开一个新的终端查看容器信息
    
    $ docker container ls
    
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    b47060aca56b        busybox             "sh"                11 minutes ago      Up 11 minutes                           busybox2
    8720575823ec        busybox             "sh"                16 minutes ago      Up 16 minutes                           busybox1
    下面通过 ping 来证明 busybox1 容器和 busybox2 容器建立了互联关系。
    
    在 busybox1 容器输入以下命令
    
    / # ping busybox2
    PING busybox2 (172.19.0.3): 56 data bytes
    64 bytes from 172.19.0.3: seq=0 ttl=64 time=0.072 ms
    64 bytes from 172.19.0.3: seq=1 ttl=64 time=0.118 ms
    用 ping 来测试连接 busybox2 容器,它会解析成 172.19.0.3。
    
    同理在 busybox2 容器执行 ping busybox1,也会成功连接到。
    
    / # ping busybox1
    PING busybox1 (172.19.0.2): 56 data bytes
    64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.064 ms
    64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.143 ms
    这样,busybox1 容器和 busybox2 容器建立了互联关系。
    复制代码

    外部访问容器

    容器中可以运行网络应用,但是要让外部也可以访问这些应用,可以通过-p或-P参数指定端口映射。

    -P 参数会随机映射端口到容器开放的网络端口
    [root@oldboy_python ~ 16:31:37]#docker run -d -P training/webapp python app.py

    检查映射的端口

    复制代码
    复制代码
    #宿主机ip:32768 映射容器的5000端口
    [root@oldboy_python ~ 16:34:02]#docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cfd632821d7a training/webapp "python app.py" 21 seconds ago Up 20 seconds 0.0.0.0:32768->5000/tcp brave_fermi
    复制代码
    复制代码

    查看容器日志信息

    #不间断显示log
    docker logs -f cfd

    也可以通过-p参数指定映射端口

    #指定服务器的9000端口,映射到容器内的5000端口
    [root@oldboy_python ~ 16:46:13]#docker run -d -p 9000:5000 training/webapp python app.py c0b5a6278d0f4f2e9b9eba8680451111d8b911b61de0c37ea64cb337aefb854e

    访问服务器的9000端口

    (如果访问失败的话,检查自己的防火墙,以及云服务器的安全组)

    查看指定容器的端口映射

    [root@oldboy_python ~ 16:49:01]#docker port c0b
    5000/tcp -> 0.0.0.0:9000

    查看容器内的进程

    [root@oldboy_python ~ 16:49:05]#docker top c0b
    UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
    root                3926                3912                0                   16:46               ?                   00:00:00            python app.py
  • 相关阅读:
    qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
    使用 acl_cpp 的 HttpServlet 类及服务器框架编写WEB服务器程序(系列文章)
    C编译器剖析PDF文档及UCC编译器162.3
    深入浅出NodeJS——数据通信,NET模块运行机制
    看AngularJS
    如何编写高效的jQuery代码
    Express安装入门与模版引擎ejs
    使用SeaJS实现模块化JavaScript开发
    RequireJS 入门指南
    RequireJS
  • 原文地址:https://www.cnblogs.com/chenyibai/p/10107815.html
Copyright © 2020-2023  润新知