Docker Network

1、概念介绍

Docker 启动后会产生一个名为dockero的虚拟网桥

常见命令

docker network COMMAND

  • connect Connect a container to a network

  • create Create a network

  • disconnect Disconnect a container from a network

  • inspect Display detailed information on one or more networks

  • ls List networks

  • prune Remove all unused networks

  • rm Remove one or more networks

    查看docker网桥的具体信息

    docker network inspect bridge

    创建一个新的docker网络,默认类型是bridge

    docker network create aa_network

    删除指定的docker网络

    docker network rm aa_network

2、网络模式

bridge模式: 使用--network bridge指定,默认使用docker0

host模式: 使用--network host指定

none模式: 使用--network none指定

container模式:使用--network container:NAME或者容器ID指定


注意:docker容器内部的ip是有可能会发生改变的

bridge 模式


复制代码
# 创建两个容器实例
docker run -d -p 8081:8080 --name tomcat81 容器ID
docker run -d -p 8082:8080 --name tomcat82 容器ID

# 查看宿主机网络情况
ip addr
复制代码
# 进入容器实例
docker exec -it tomcat81 /bin/bash

# 查看容器实例网络情况
ip addr

注意 :宿主机的23: vethe9790ab@if22 对应 容器实例的 22: eth0@if 23

host 模式

直接使用宿主机的IP地址与外界进行通信,不再需要额外进行NAT转换。

复制代码
# 指定网络模式为host:没有端口映射不会出现警告
docker run - d  --network host --name tomcat83 billygoo/tomcat8-jdk8

# 查看容器实例内部网络
docker network inspect tomcat83
none 模式

禁用网络功能,只有lo标识(就是127.0.0.1表示本地回环)

在none模式下,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息,只有一个lo需要我们自己为Docker容器添加网卡、配置IP等。

复制代码
# 进入容器实例查看网络情况
docker exec -it tomcat84 bash
ip addr
container 模式
复制代码
# 错误演示
docker run -d -p 8085:8080 --name tomcat85 billygoo/tomcat8-jdk8
docker run -d -p 8086:8080 --network container:tomcat85 --name tomcat86 billygoo/tomcat8-jdk8

原因:相当于tomcat86和tomcat85公用同一个ip同一个端口,导致端口冲突

复制代码
# 使用其他容器演示container模式
docker run -it --name alpine1 alpine /bin/sh
docker run -it --network container:alpine1 --name alpine2 alpine /bin/sh

注意:如果共享网络实例关闭,则其他容器实例也就没有网络了。

自定义网络模式

容器IlP变动时候可以通过服务名直接网络通信而不受到影响,自定义网络本身就维护好了主机名和ip的对应关系( ip和域名都能通)

复制代码
# 启动两个容器实例,并进入容器实例
docker run -d -p 8081:8080 --name tomcat81 billygoo/tomcat8-jdk8
docker run -d -p 8082:8080 --name tomcat82 billygoo/tomcat8-jdk8

注意:可以通过IP地址查看是否可以ping通,但是不能通过服务名去ping


自定义网络解决通过服务名来连通容器实例

复制代码
# 默认网络模式为bridge
docker network create zzyy_network

# 新建容器加入上一步新建的自定义网络
docker run -d -p 8081:8080 --network zzxy_network --name tomcat81 billygoo/tomcat8-jdk8
docker run -d -p 8082:8080 --network zzyy_network --name tomcat82 billygoo/tomcat8-jdk8
相关推荐
岁岁种桃花儿7 分钟前
kubenetes从入门到上天系列第十四篇:Kubernetes的持久化存储
云原生·容器·kubernetes
糟糕喔1 小时前
harbor私有仓库搭建
运维·docker·云原生·容器·kubernetes
就叫飞六吧6 小时前
K8s 端口暴露:集群统一暴露 vs 单 Pod 暴露
云原生·容器·kubernetes
执笔为剑6 小时前
docker环境升级数据库
数据库·docker·容器
于眠牧北7 小时前
ubuntu22.04安装docker以及安装过程中报错解决方法
运维·docker·容器
FriendshipT7 小时前
算法部署知识点:TensorRT、Tensorflow、Flask、Docker、TFLite
算法·docker·flask·tensorflow
摇滚侠9 小时前
虚拟机部署龙虾 OpenClaw,VMware 安装 Linux CentOS 虚拟机操作系统,部署 Docker,部署 OpenClaw
linux·docker·centos
SuniaWang9 小时前
Vue 项目 Docker 多阶段构建部署指南(阿里云)
vue.js·阿里云·docker
AI成长日志10 小时前
【agent专栏】Agent服务化与性能优化——Docker容器化、并发处理、成本控制
docker·容器·性能优化
indexsunny10 小时前
互联网大厂Java面试实战:微服务与Spring Boot在电商场景下的应用解析
java·spring boot·redis·docker·微服务·kubernetes·oauth2