Docker之自定义网络实现

目录
  • 1、自定义网络实现容器互联
  • 2、网络连通

1、自定义网络实现容器互联

四类网络模式,使用docker network ls查看docker网络模式

Docker网络模式 配置 说明
host模式 –net=host 容器和宿主机共享Network namespace。
container模式 –net=container:NAME_or_ID 容器和另外一个容器共享Network namespace。 kubernetes中的pod就是多个容器共享一个Network namespace。
none模式 –net=none 容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP等。
bridge模式 –net=bridge 桥接模式(默认为该模式)

–net=bridge 这个是默认值,连接到默认的网桥。

–net=host 告诉 Docker 不要将容器网络放到隔离的名字空间中,即不要容器化容器内的网络。此时容器使用本地主机的网络,它拥有完全的本地主机接口访问权限。容器进程可以跟主机其它 root 进程一样可以打开低范围的端口,可以访问本地网络服务比如 D-bus,还可以让容器做一些影响整个主机系统的事情,比如重启主机。因此使用这个选项的时候要非常小心。如果进一步的使用 --privileged=true,容器会被允许直接配置主机的网络堆栈。

–net=container:NAME_or_ID 让 Docker 将新建容器的进程放到一个已存在容器的网络栈中,新容器进程有自己的文件系统、进程列表和资源限制,但会和已存在的容器共享 IP 地址和端口等网络资源,两者进程可以直接通过 lo 环回接口通信。

–net=none 让 Docker 将新容器放到隔离的网络栈中,但是不进行网络配置。之后,用户可以自己进行配置。

自定义网络

# --driver bridge 桥接模式
# --subnet 192.168.0.0/16 子网络网段
# --gateway 192.168.0.1 网关
# mynet 网络名
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

查看自定义的网络信息:

docker network inspect mynet

在自定义的网路中创建容器

docker run -d -P --name tomcat01-net-01 --net mynet tomcat
docker run -d -P --name tomcat01-net-02 --net mynet tomcat

再次查看自定义的网络信息:发现新创建的两个容器添加进网络中了。

使用容器名互相进行ping测试

tomcat01-net-01 ping tomcat01-net-02:

tomcat01-net-02ping tomcat01-net-01:

现在不使用 --link 容器间也可以互相 ping 通了,容器间可以互相通信。

2、网络连通

需求分析图

创建tomcat01和tomcat02两个容器:

docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat02 tomcat

很明显,直接ping通是不可能的,需要先把tomcat01容器和mynet网络连通。

docker network connect

docker network connect 命令是用于将 docker 容器连接到某个网络中,可以使用容器名或者容器ID。

用法:

docker network connect [OPTIONS] NETWORK CONTAINER

把tomcat01容器连接到mynet网络上:

docker network connect mynet tomcat01

查看mynet的网络信息:docker inspect mynet

tomcat01已经连接到mynet网络上,像tomcat01-net-tomcat01和tomcat01-net-tomcat02一样。

此时,tomcat01已经和mynet网络中的两个容器连接起来,因为这三个容器处于同一网络中,当然可以互相通信:

一个容器两个网络:

查看tomcat01的元数据:docker inspect tomcat01

tomcat01连接到自定义的mynet网络后,就有两个网络了。

到此这篇关于Docker之自定义网络实现的文章就介绍到这了,更多相关Docker网络内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Docker Compose 网络设置详解

    基本概念 默认情况下,Compose会为我们的应用创建一个网络,服务的每个容器都会加入该网络中.这样,容器就可被该网络中的其他容器访问,不仅如此,该容器还能以服务名称作为hostname被其他容器访问. 默认情况下,应用程序的网络名称基于Compose的工程名称,而项目名称基于docker-compose.yml所在目录的名称.如需修改工程名称,可使用--project-name标识或COMPOSE_PORJECT_NAME环境变量. 举个例子,假如一个应用程序在名为myapp的目录中,并且do

  • Docker 网络模式及配置方式

    一.Docker网络模式 docker run 创建 Docker 容器时,可以用 –net 选项指定容器的网络模式,Docker 有以下 4 种网络模式: host 模式,使用 –net=host 指定. container 模式,使用 –net=container:NAME_or_ID 指定. none 模式,使用 –net=none 指定. bridge 模式,使用 –net=bridge 指定,默认设置. host 模式 如果启动容器的时候使用 host 模式,那么这个容器将不会获得一个

  • docker compose自定义网络实现固定容器ip地址

    由于默认的bridge桥接网络,重启容器后会改变ip地址.在一些场景下我们希望固定容器IP地址. docker-compose是docker的一个编排工具,相对于命令模式创建网络,容器等.使用配置文件相对来说更方便,可追溯问题. 直接粘贴docker-compose.yml文件 version: '2' services: nginx: image: nginx:1.13.12 container_name: nginx restart: always tty: true networks: e

  • Docker之自定义网络实现

    目录 1.自定义网络实现容器互联 2.网络连通 1.自定义网络实现容器互联 四类网络模式,使用docker network ls查看docker网络模式 Docker网络模式 配置 说明 host模式 –net=host 容器和宿主机共享Network namespace. container模式 –net=container:NAME_or_ID 容器和另外一个容器共享Network namespace. kubernetes中的pod就是多个容器共享一个Network namespace.

  • Docker网络原理及自定义网络详细解析

    Docker在宿主机上虚拟了一个网桥,当创建并启动容器的时候,每一个容器默认都会被分配一个跟网桥网段一致的ip,网桥作为容器的网关,网桥与每一个容器联通,容器间通过网桥可以通信.由于网桥是虚拟出来的,外网无法进行寻址,也就是默认外网无法访问容器,需要在创建启动容器时把宿主机的端口与容器端口进行映射,通过宿主机IP端口访问容器.这是Docker默认的网络,它有一个弊端是只能通过IP让容器互相访问,如果想使用容器名称或容器ID互相访问需要在创建启动容器时候用link的方式修改hosts文件实现.一般

  • Docker自定义网络详细介绍

    目录 Docker自定义网络 一.自定义网络介绍 二.创建自定义网络 Docker自定义网络 一.自定义网络介绍 1.介绍 常规docker容器启动,可以用–link,进行容器网络绑定,但是一旦容器多了之后就会非常麻烦,所以要自定义一个docker网络,小白推荐使用–link命令 自定义网络修复了docker0的容器之间无法用容器名相互ping通的问题,只能使用ip才能ping通,但是我们自定义的网络是可以用ip或者容器名相互ping通的 2.命令 自定义网络命令 说明 docker netwo

  • Docker安装方法与Docker四种网络模式详解

    1.安装docker yum -y install docker-io 出现complete说明安装完成 2.启动docker服务 service docker start 3.设置docker开机启动 chkconfig docker on 4.基本信息查看 docker version docker info docker images查看镜像 docker ps查看正在运行的容器 docker rmi删除镜像 docker save -o imageName:tag > path/name

  • Docker跨主机网络(overlay)的实现

    一.Docker 跨主机通信 Docker跨主机网络方案包括: docker 原生的 overlay 和 macvlan. 第三方方案:常用的包括 flannel.weave 和 calico. docker 通过 libnetwork 以及 CNM 将上述各种方案与docker集成在一起. libnetwork 是 docker 容器网络库,最核心的内容是其定义的 Container Network Model (CNM),这个模型对容器网络进行了抽象,由以下三类组件组成: 1.1 Sandb

  • docke自定义网络之容器互联

    目录 前言 –link 自定义网络 提问 前言 在前几期我们介绍了 容器间的互联可以使用 –Link 参数进行设置,这样可以在容器内不只访问ip,也可以访问对应设置的 域名.先温习下.操作之前先清除所有的容器. –link # 清除所有容器 $root@VM-8-11-ubuntu:~# docker stop $(docker ps -aq) && docker rm $(docker ps -aq) 88f8f241ca30 765ed1889bfa $root@VM-8-11-ubu

  • 详解Docker中VLAN网络模式的配置

    前言 Docker作为目前最火的轻量级容器技术,有很多令人称道的功能,如Docker的镜像管理.然而,Docker同样有着很多不完善的地方,网络 方面就是Docker比较薄弱的部分.因此,我们有必要深入了解Docker的网络知识,以满足更高的网络需求. Docker网络模式选择 目前已有不少文章介绍了Docker的网络模型,但是在实际应用中还是有不少坑和需要注意的点 在Docker应用到生产环境的时候,网络模型的选择主要有以下几种 1.原生Bridge NAT模式 2.Linux Bridge

  • docker容器内网络请求缓慢问题解决

    在使用docker的过程中发现了几个问题,在docker里进行的网络请求经常会失败,比如npm install以及bundle install等操作,或者是作为中间层在应用中去获取api数据的过程经常会出现timeout等情况,所以开始探究docker的网络机制,以解决网络请求太慢的问题. 一.docker的网络模式 1.none 当配置为none时,docker容器网络无法输入输出,与世隔绝. 2.bridge 默认为bridge模式,docker有自己的虚拟网卡,通过桥接的方式从主机获得网络

  • pytorch加载自定义网络权重的实现

    在将自定义的网络权重加载到网络中时,报错: AttributeError: 'dict' object has no attribute 'seek'. You can only torch.load from a file that is seekable. Please pre-load the data into a buffer like io.BytesIO and try to load from it instead. 我们一步一步分析. 模型网络权重保存额代码是:torch.sa

随机推荐