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

相关推荐
Brilliantwxx7 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
BullSmall7 小时前
第三方软件安全-Dependency‑Track Docker 部署
安全·docker·容器
richdata7 小时前
商品数字化不是先做大数据,而是先把数据变成可用决策
大数据·运维·数据治理·商品数字化·智能补货·ai商品决策
harmony&7 小时前
Docker 容器技术从入门到实战:容器、网络、存储与监控全解析
docker·云原生
weixin_416667968 小时前
【无标题】
运维·服务器·网络
一池秋_9 小时前
arm低配linux设备,桌面应用冷启动提速方法
linux·运维·arm开发
上海云盾-小余10 小时前
流量攻击复盘:为什么 WAF 完好,业务依旧瘫痪
运维·服务器·网络
IT大白鼠10 小时前
Docker 私有仓库管理:Harbor 企业级仓库搭建与镜像全生命周期管理
运维·docker·容器
戴西软件10 小时前
戴西iDWS.3DViz Suite数据轻量化可视化软件,从传统桌面软件向云端协同的重大突破
大数据·运维·网络·人工智能·机器学习·3d
我命由我1234512 小时前
Linux - Linux/POSIX 路径斜杠折叠规则
linux·运维·服务器·android studio·android jetpack·android-studio·android runtime