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 相关的容器名

相关推荐
imc.1118 小时前
linux基础IO
linux·运维·服务器
躺不平的理查德18 小时前
让Ubuntu 的第二块网卡 ens37 永久固定为 192.168.30.111
运维·服务器
bitbrowser19 小时前
Facebook 验证反复回到原页面,应该从哪里排查
运维·服务器·facebook
Land032919 小时前
AI网页元素变化无法自动修复?自带元素自愈的自动化解决方案
运维·人工智能·ai·自动化·rpa
fengyehongWorld19 小时前
Jenkins 安装与简单配置
运维·jenkins
云智慧AIOps社区19 小时前
2026 国产化 ITSM 替代指南:横向测评 ServiceNow、轻帆云、Jira等五款主流IT服务管理平台
运维·人工智能·运维开发·it服务管理·itsm平台
Urbano19 小时前
针织卫衣全流程生产工序科普:自动化替代、产能优化与设备选型实战方案
运维·自动化
梦梦代码精19 小时前
基于ThinkPHP6 + Vue3的家政预约系统全解析:从LBS定位到自动派单的完整实现
java·docker·开源·php·代码规范
AC赳赳老秦20 小时前
招投标公开数据自动化采集实战:基于 OpenClaw 的定时抓取与业务关键词精准推送
运维·服务器·数据库·自动化·测试用例·deepseek·openclaw
小的博客20 小时前
windows下安装Docker Desptop
运维·docker·容器