• docker入门加实战—网络


    docker入门加实战—网络

    我们运行了一些容器,但是这些容器是否能够进行连通呢?那我们就来试一下。

    我们查看一下MySQL容器的详细信息:

    主要关注,Networks.bridge.IPAddress属性信息:

    docker inspect mysql
    # 或者过滤一些信息
    docker inspect --format='{{range .NetworkSettings.Networks}}{{println .IPAddress}}{{end}}' mysql
    
    • 1
    • 2
    • 3

    MySQL容器ip地址

    可以看到ip地址为:172.17.0.2

    同理,可以nginx容器ip为:172.17.0.3

    nginx容器ip

    可以看到他们有相同网段,他们都有相同的网关。

    默认情况下,所有容器都是以bridge方式连接到Docker的一个虚拟网桥上:

    图示

    /16表示ip地址的前16位不能动,也就是前两段不能动;也就是这里不能动。

    不能动的段

    容器的网络IP其实是一个虚拟的IP,其值并不固定与某一个容器绑定,如果我们在开发时写死某个IP,而在部署时很可能MySQL容器的IP会发生变化,连接会失败。

    所以,我们必须借助于docker的网络功能来解决这个问题,官方文档:

    https://docs.docker.com/engine/reference/commandline/network/

    常见命令有:

    命令说明文档地址
    docker network create创建一个网络docker network create
    docker network ls查看所有网络docs.docker.com
    docker network rm删除指定网络docs.docker.com
    docker network prune清除未使用的网络docs.docker.com
    docker network connect使指定容器连接加入某网络docs.docker.com
    docker network disconnect使指定容器连接离开某网络docker network disconnect
    docker network inspect查看网络详细信息docker network inspect

    自定义网络

    查看网络

    docker network ls
    
    • 1

    查看网络

    创建网络

    docker network create sjdwz_network
    
    • 1

    创建网络

    再次查看网络:

    再次查看网络

    通过

    ip addr
    
    • 1

    查看如下:

    查看结果

    可以看到多出来一个网卡;

    让容器加入网络

    让MySQL容器加入网络,并指定别名db

    # mysql容器,指定别名为db,另外每一个容器都有一个别名是容器名
    docker network connect sjdwz_network mysql --alias db
    
    • 1
    • 2

    把我们的dd容器也加入到网络,不指定别名

    docker network connect sjdwz_network dd
    
    • 1

    注意 容器创建时连接网络可以如下操作:可以加--network 网络名加入,比如:

    docker run -d --name dd -p 8080:8080 --network sjdwz_network docker-demo:1.0 
    
    • 1

    测试互连

    进入到dd容器

    docker exec -it dd bash
    
    • 1

    ping Mysql

    ping mysql
    
    • 1

    验证可以连通:

    连通结果

    所以:

    • 在自定义网络中,可以给容器起多个别名,默认的别名是容器名本身
    • 在同一个自定义网络中的容器,可以通过别名互相访问
  • 相关阅读:
    赶紧收藏!!!我直接上瘾!百万人都在学的 Docker
    java计算机毕业设计课程在线反馈系统源码+数据库+lw文档+系统
    机器人操作系统ROS2学习—控制小海龟运动
    SpringCloud - Nacos 结合 K8s 优雅关闭服务(平滑升级)
    2019Linux系统教程189讲-0405_Linux下用户组管理、文件权限管理
    php练习03
    kafka操作5
    spring 常用注解
    机器学习(一):概述
    win10重装系统
  • 原文地址:https://blog.csdn.net/qq_41243472/article/details/133869585