• 19-07 【docker】随笔笔记


    小tips:

    1,在nginx的镜像中,并未包含ping工具;

    2,在busybox的镜像中,是包含ping工具和telnet工具的,所以如果想测试互通性,可以利用busybox来检查;

    实验1:利用busybox可以确定,容器和主机的网络是否可以互通。

    实验步骤:1,创建busybox容器,然后实验ping结果,实验telnet结果;

    docker pull busybox
    
    docker run --it --rm busybox

    启动后执行测试,我本地的ip地址是:10.70.74.101

    / # ping 10.70.74.101
    PING 10.70.74.101 (10.70.74.101): 56 data bytes
    64 bytes from 10.70.74.101: seq=0 ttl=37 time=0.602 ms
    64 bytes from 10.70.74.101: seq=1 ttl=37 time=1.099 ms
    64 bytes from 10.70.74.101: seq=2 ttl=37 time=1.284 ms
    64 bytes from 10.70.74.101: seq=3 ttl=37 time=1.017 ms
    ^C
    --- 10.70.74.101 ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max = 0.602/1.000/1.284 ms

    测试redis的连通性:

    / # telnet 10.70.74.101 6379

    quit
    +OK
    Connection closed by foreign host

    可以看到:在容器中是可以联通本地的ip,也可以连通对应的端口号的。如果连通受限,通常是因为应用程序设置的限制。(比如redis是可以设置必须通过某些ip才能访问的,放开后就可以了)

    2,查看busybox容器的ip,在本地宿主机上实验ping记过,实验telnet结果。

    得到容器的ip:

    / # ifconfig | grep inet
              inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0
              inet addr:127.0.0.1  Mask:255.0.0.0
    

      

    测试ping:

    $ ping 172.17.0.2
    PING 172.17.0.2 (172.17.0.2): 56 data bytes
    Request timeout for icmp_seq 0
    Request timeout for icmp_seq 1
    36 bytes from 10.252.206.2: Destination Host Unreachable
    Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
     4  5  00 5400 7efd   0 0000  3d  01 fded 10.70.74.101  172.17.0.2
    
    Request timeout for icmp_seq 2
    36 bytes from 10.252.206.2: Destination Host Unreachable
    Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
     4  5  00 5400 5e38   0 0000  3d  01 1eb3 10.70.74.101  172.17.0.2
    
    ^C
    --- 172.17.0.2 ping statistics ---
    4 packets transmitted, 0 packets received, 100.0% packet loss
    

    测试telnet:

    ping测试失败了,telnet就不用测试了。

    实验结论:

    a,在默认配置下,docker容器可以访问宿主机的ip和端口;

    b,在默认配置下,宿主机无法直接ping通容器的ip,也无法telnet通端口号。

    实验2:docker run的相关参数 

    -v参数解释:这个参数是为了能做文件映射。示例:-v [/host/file]:[/docker/file] -v [/host/file2:/host/file2]

    -p参数解释:这个参数是为了做端口映射。示例:-p [host-port]:[docker-port]

    -i参数解释:这个参数是为了能进入交互式模式

     步骤1:使用busybox启动容器

    $ docker run -it --rm busybox
    / # cat /tmp/a.txt
    cat: can't open '/tmp/a.txt': No such file or directory

    步骤2:使用-v参数启动容器(先在宿主机中创建文件/tmp/a.txt,然后再启动busybox查看是否能访问)

    $ docker run -v /tmp:/tmp -it --rm busybox
    / # cat /tmp/a.txt
    hello, world!

    解释:步骤1中的-it是交互式模式运行,--rm是如果有这个镜像创建的容器则默认删除容器后再次创建,这样保证只有一个相关联的容器在执行,有利于反复测试。

    步骤2中的-v参数将宿主机的/tmp映射到容器中的/tmp目录,可以看到宿主机中的/tmp/a.txt。

    与docker相关的网络工具:

    如何把redis的端口开放给其他网络访问:https://www.cnblogs.com/zhangqigao/p/9110544.html

    phpunit的文档:http://www.phpunit.cn/manual/current/en/phpunit-book.html

  • 相关阅读:
    (转)一文讲清TCP/IP 协议
    Java框架之Spring Boot和Spring Cloud区别
    php大力力 [006节]初步接触认识phpMyAdmin
    php大力力 [005节] php大力力简单计算器001
    php大力力 [004节]PHP常量MAMP环境下加载网页
    php大力力 [003节]php在百度文库的几个基础教程mac环境下文本编辑工具
    php大力力 [002节]mac php环境安装,mamp安装 ,phpMyAdmin启动
    php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28
    C# DataSet与DataTable的区别和用法 ---转载
    【SqlServer】利用sql语句附加,分离数据库-----转载
  • 原文地址:https://www.cnblogs.com/helww/p/10676911.html
Copyright © 2020-2023  润新知