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

相关推荐
爱喝水的鱼丶4 小时前
SAP-ABAP:接口与报表场景专项优化:RFC/ODATA 接口、ALV 报表的性能提升方案
运维·性能优化·接口·sap·abap·rfc·经验交流
画中有画4 小时前
自动化脚本开发最佳实践
运维·自动化
InfinitePlus6 小时前
Docker MySQL搭建一主一从
mysql·docker
江南风月7 小时前
如何使用WGCLOUD实现智能运维
运维·zabbix·运维开发·prometheus
xiaoxiangsiyan7 小时前
HCIA 网络技术基础核心模块详解
运维·网络·网络协议·tcp/ip·运维开发·网络基础
坐吃山猪9 小时前
Docker07-MySQL
mysql·docker·容器
MuMuMu12239 小时前
工业园区 VOCs 绿岛集中治理:越华环保集团项目技术方案与工程实践
大数据·运维
Wzx1980129 小时前
python沙箱和docker沙箱你选对了吗?
开发语言·python·docker
CodeDevMaster9 小时前
关于PaddleOCR-VL部署与使用说明
docker·llm
Kismet_nvi9 小时前
《Kubernetes Service 进阶、kube-proxy 与 Ingress 实战精要》
云原生·容器·kubernetes