Docker(网络)

网络

上节课我们创建了一个Java项目的容器,而Java项目往往需要访问其它各种中间件,例如MySQL、Redis等。现在,我们的容器之间能否互相访问呢?我们来测试一下

首先,我们查看下MySQL容器的详细信息,重点关注其中的网络IP地址:

bash 复制代码
# 1.用基本命令,寻找Networks.bridge.IPAddress属性 
docker inspect mysql 
# 也可以使用format过滤结果 
docker inspect --format='{{range .NetworkSettings.Networks}}{{println .IPAddress}}{{end}}' mysql 
# 得到IP地址如下: 
172.17.0.2 
# 2.然后通过命令进入dd容器 
docker exec -it dd bash 
# 3.在容器内,通过ping命令测试网络 
ping 172.17.0.2 
# 结果 
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data. 
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.053 ms 
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.059 ms 
64 bytes from 172.17.0.2: icmp_seq=3 ttl=64 time=0.058 ms

发现可以互联,没有问题。

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

常见命令有:

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

教学演示: 自定义网络

bash 复制代码
# 1.首先通过命令创建一个网络 
docker network create itheima 

# 2.然后查看网络 
docker network ls
 
# 结果: 
NETWORK ID     NAME     DRIVER  SCOPE 
639bc44d0a87 bridge     bridge  local 
403f16ec62a2 itheima    bridge  local 
0dc0f72a0fbb host       host    local 
cd8d3e8df47b none       null    local 
# 其中,除了itheima以外,其它都是默认的网络 
# 3.让 myapp 和 mysql 都加入该网络 
# 3.1.mysql容器,加入 itheima 网络 
docker network connect itheima mysql 

# 3.2.myapp容器,也就是我们的java项目, 加入 itheima 网络
docker network connect itheima myapp 

# 4.进入dd容器,尝试利用别名访问db 、
# 4.1.进入容器 

docker exec -it myapp bash 
# 4.2.用容器名访问 
ping mysql 
# 结果: 
PING mysql (172.18.0.2) 56(84) bytes of data. 
64 bytes from mysql.itheima (172.18.0.2): icmp_seq=1 ttl=64 time=0.044 ms 
64 bytes from mysql.itheima (172.18.0.2): icmp_seq=2 ttl=64 time=0.054 ms

OK,现在无需记住IP地址也可以实现容器互联了。

这时候我们就需要用到docker网络当中的自定义网络来解决通过相关的指令再来创建一个虚拟的网卡创建容器的时候让我们创建的容器,连到这个自己创建的虚拟网卡, 这样就可以通过容器名字来连接

步骤

第一步先查看所有网络

第二步再创建一个网络然后指定网络的名字

第三部让指定的容器加入到这个网络直接写容器名就是吧mysql 和项目加入倒进去

第四步也可以的,在创建的时候加入

第五步进入到容器当中

第六步时间ping 相关的容器名

相关推荐
天才奇男子14 小时前
HAProxy高级功能全解析
linux·运维·服务器·微服务·云原生
小李独爱秋15 小时前
“bootmgr is compressed”错误:根源、笔记本与台式机差异化解决方案深度指南
运维·stm32·单片机·嵌入式硬件·文件系统·电脑故障
Dying.Light16 小时前
Linux部署问题
linux·运维·服务器
S190116 小时前
Linux的常用指令
linux·运维·服务器
萤丰信息16 小时前
AI 筑基・生态共荣:智慧园区的价值重构与未来新途
大数据·运维·人工智能·科技·智慧城市·智慧园区
小义_16 小时前
【RH134知识点问答题】第7章 管理基本存储
linux·运维·服务器
运维小欣16 小时前
Agentic AI 与 Agentic Ops 驱动,智能运维迈向新高度
运维·人工智能
_运维那些事儿17 小时前
VM环境的CI/CD
linux·运维·网络·阿里云·ci/cd·docker·云计算
Trouvaille ~18 小时前
【Linux】UDP Socket编程实战(一):Echo Server从零到一
linux·运维·服务器·网络·c++·websocket·udp
嵌入小生00718 小时前
Shell | 命令、编程及Linux操作系统的基本概念
linux·运维·服务器