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

相关推荐
杰克尼24 分钟前
Kubernetes
云原生·容器·kubernetes
重生之小比特27 分钟前
【Linux系统】07 进程状态
linux·运维·服务器
敲代码的彭于晏42 分钟前
2026 K8s 零基础入门:手把手教你一步步搭建 Kubernetes 集群
java·运维·全栈
ManageEngine卓豪1 小时前
智能运维如何降低 MTTR:告警聚类、因果分析与自动化修复的工程拆解
运维·智能运维·mttr
wangfenglei1234561 小时前
jenkins权限配置
运维·jenkins
ab1237681 小时前
Docker Compose 完整详解
运维·docker·容器
吴声子夜歌1 小时前
Docker入门与实战——容器实战思考
docker·容器
张洛闻Eren1 小时前
Ansible【第二课】:实施 Ansible Playbook
linux·运维·服务器·云原生·kubernetes·k8s·ansible
启博网络1 小时前
启博安企服务器与ERP加速服务器如何区分?一文讲透
运维·服务器
Zhu7581 小时前
【开源脚本】Ubuntu环境下载任意软件
linux·运维·ubuntu