`

docker network

阅读更多
docker network所有子命令如下:

docker network create
docker network connect
docker network ls
docker network rm
docker network disconnect
docker network inspect
创建网络
在安装Docker Engine时会自动创建一个默认的bridge网络docker0。
此外,还可以创建自己的bridge网络或overlay网络。

bridge网络依附于运行Docker Engine的单台主机上,而overlay网络能够覆盖运行各自Docker Engine的多主机环境中。

创建bridge网络比较简单如下:

# 不指定网络驱动时默认创建的bridge网络
docker network create simple-network
# 查看网络内部信息
docker network inspect simple-network
# 应用到容器时,可进入容器内部使用ifconfig查看容器的网络详情

但是创建一个overlay网络就需要一些前提条件(具体操作请参考Docker容器网络相关内容):
- key-value store(Engine支持Consul、Etcd和ZooKeeper等分布式存储的key-value store)
- 集群中所有主机已经连接到key-value store
- swarm集群中每个主机都配置了下面的daemon参数
- –cluster-store
- –cluster-store-opt
- –cluster-advertise
然后创建overlay网络:

# 创建网络时,使用参数`-d`指定驱动类型为overlay
docker network create -d overlay my-multihost-network
1
2
就使用--subnet选项创建子网而言,bridge网络只能指定一个子网,而overlay网络支持多个子网。

在bridge和overlay网络驱动下创建的网络可以指定不同的参数,具体请参考:https://docs.docker.com/engine/userguide/networking/work-with-networks/

连接容器
创建三个容器,分别前两个使用默认网络启动容器,第三个使用自定义bridge网络启动。
然后再将第二个容器添加到自定义网络。这三个容器的网络情况如下

第一个容器:只有默认的docker0
第二个容器:属于两个网络——docker0、自定义网络
第三个容器:只属于自定义网络
说明:通过容器启动指定的网络会覆盖默认bridge网络docker0。

# 创建三个容器 conTainer1,container2,container3
docker run -itd --name=container1 busybox
docker run -itd --name=container2 busybox
# 创建网络mynet
docker network create -d bridge --subnet 172.25.0.0/16 mynet
# 将容器containerr2连接到新建网络mynet
docker network connect mynet container2
# 使用mynet网络来容器container3
docker run --net=mynet --ip=172.25.3.3 -itd --name=container3 busybox

# 查看这三个容器的网络情况
docker network inspect container1 # docker0
docker network inspect container2 # docker0, mynet
docker network inspect container3 # mynet

默认网络与自定义bridge网络的差异
默认网络docker0:网络中所有主机间只能用IP相互访问。通过--link选项创建的容器可以对链接的容器名(container-name)作为hostname进行直接访问。
自定义网络(bridge):网络中所有主机除ip访问外,还可以直接用容器名(container-name)作为hostname相互访问。

# 进入container2内部
docker attach container2
ping -w 4 container3 # 可访问
ping -w 4 container1 # 不可访问
ping -w 4 172.17.0.2 # 可访问container1的IP
# Ctrl+P+Q退出容器,让container2以守护进程运行


默认网络与自定义bridge网络在容器连接的差别
在默认网络中使用link(legency link),有如下功能:
- 使用容器名作为hostname
- link容器时指定alias: --link=<Container-Name>:<Alias>
- 配合--icc=false隔离性,实现容器间的安全连接
- 环境变量注入

自定义网络中使用docker net提供如下功能:
- 使用DNS实现自动化的名称解析
- 一个网络提供容器的安全隔离环境
- 动态地attach与detach到多个网络
- 支持与--link选项一起使用,为链接的容器提供别名(可以是尚不存在链接容器,与默认容器中–link使用的最大差别)

默认网络中的link是静态的,不允许链接容器重启,而自定义网络下的link是动态的,支持链接容器重启(以及IP变化)
因此,使用--link时链接的容器,在默认网络中必须提前创建好,而自定义网络下不必预先建好。

使用docker network connetct将容器连接到新网络中时,用参数--link链接相同的容器时,可以指定不同的别名,它们是针对不同网络的。

# 运行容器使用自定义网络,同时使用--link链接尚不存在的container5容器
docker run --net=mynet -itd --name=container4 --link container5:c5 busybox
# 创建容器container5
docker run --net=mynet -itd --name=container5 --link container4:c4 busybox
# 虽然是相同容器,但是在不同的网络环境连接中可以不同的alias链接
docker network connect --link container5:foo local_alias container4
docker network connect --link container4:bar local_alias container5

指定容器在网络范围的别名(Network-scoped alias)
Network-scoped alias就是指定容器在可被同一网络范围内的其他容器访问的别名。
不同于link别名的是,link别名是由链接容器的使用者提供的,只有它自己可使用;
而指定网络范围内别名,是由容器提供给网络中其它容器使用的。

Network-scoped alias:同一网络中的多个容器可以指定相同的别名,在使用的当然只有第一个指定别名的容器才生效,
只有当第一个容器关闭时,指定相同别名的第二个容器的别名才会开始生效。

docker run --net=mynet -itd --name=container6 --net-alias app busybox
docker network connect --alias scoped-app local_alias container6
docker run --net=isolated_nw -itd --name=container7 --net-alias app busybox
docker network connect --alias scoped-app local_alias container7
# 在container4中
docker attach container4
ping app # 访问container6的IP
# 从container4中以守护进程运行退出:Ctrl+P+Q
docker stop container6
docker attach container4
ping app # 访问的container7的IP

断开网络与移除网络
# 容器从mynet网络中断开(它将无法再网络中的容器container3通讯)
docker network disconnect mynet container2
# 测试与容器container3失败
docker attach container2
ping contianer3 # 访问失败

在多主机的网络环境中,在将容器用已移除的容器名称连接到网络中时会出现container already connected to network的错误,
这时需要将新容器强制移除docker rm -f,重新运行并连接到网络中。

移除网络要求网络中所有的容器关闭或断开与此网络的连接时,才能够使用移除命令:

# 断开最后一个连接到mynet网络的容器
docker network disconnet mynet container3
# 移除网络
docker network rm mynet



原文链接https://blog.csdn.net/gezhonglei2007/article/details/51627821
分享到:
评论

相关推荐

    docker 一图带你看懂docker network

    在使用dokcer的时候,虽然不常用`docker network`,但也往往避免不了配置网络。 一张图带你搞定docker 网络的常用配置。

    解决Docker network Create加–subnet后遇到问题

    Docker network Create加–subnet后,使用docker network ls查看,在刚刚新建的网络上没看到driver,使用docker network inspect 查看详细信息,会看到好多地方都没数据,特别是driver,不加–subnet,一切又正常。...

    Docker Network 之自定义网桥

    单机多容器最佳通信方式—自定义网桥。与默认docker0网桥的比较 1.更好的隔离性与互操作性,无需暴露端口,同一自定义bridge 下的容器可以互相访问所有端口 ...docker network create redis-net  docker netwo

    一键shell脚本搭建docker redis 集群(cluster)

    为了新手小伙伴发愁集群... "`docker network ls | grep redis | awk '{print $1}'`"] && docker network create redis --subnet 172.18.0.0/16 --gateway 172.18.0.1 #查看网卡信息 docker network ls | grep redis

    docker-network-tools:Docker网络工具。 支持浮动IP,网络名称空间同步,OVS和linux网桥

    docker-网络工具 Docker网络工具。 支持浮动IP,网络名称空间同步,OVS和linux网桥。 概念 该脚本适用于docker网络管理脚本。 docker的网络是基于NAT的,但它可以像openstack之类的东西一起使用。 是的,Float IP .....

    Learning.Docker.Networking.17852809

    Docker provides the networking primitives that allow administrators to specify how different containers network with each application and connect each of its components, then distribute them across a...

    Docker on Windows

    over with Docker SwarmMaster security in-depth with the Docker platform, making your apps more secureBuild a Continuous Deployment pipeline by running Jenkins in DockerDebug applications running in ...

    Learning Docker Networking(PACKT,2016)

    Docker provides the networking primitives that allow administrators to specify how different containers network with each application and connect each of its components, then distribute them across a...

    zabbix 离线docker 部署

    #!/bin/bash deploy_dir=. # 修改为zabbix server IP ... SERVER_IP=192.168.2.110 ... docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net ## 1. Start empty MySQL server insta

    VMWARE配置net网络及安装Docker.docx

    vmware配置net网络,使得虚拟机与主机可以互ping,并且虚拟机也可以上网,主机也可以上网。 使用虚拟机安装docker的教程。自身成功的案例,写下来参考的

    Docker in Practice

    simulation and Docker network plugins. Part 4 covers a number of topics for using Docker effectively in a production environment. It begins with chapter 9, where we survey some of the most popular ...

    基于Docker官方php:5.6.40-fpm镜像构建支持66个常见模组的php5.6.40镜像

    docker network create -d bridge --subnet 10.1.5.0/24 --gateway 10.1.5.1 custom_bridge_net # 镜像导入和解压配置示例 docker load &lt; /opt/data_bak/backup_ever/docker_images/tmtcha-...

    Flask REST API项目实例,包含JWT认证、rq异步任务、Swagger文档、Redoc、Docker部署、uwsg等

    创建flask网络:docker network create flask 准备docker-compose.yml, 注释源码挂载:- "./:/work" 启动服务:docker-compose up -d 数据库迁移: docker exec -it flask-api-demo bash flask db init -d /dat

    基于Docker官方php:7.4.33-fpm镜像构建支持67个常见模组的php7.4.33镜像

    docker network create -d bridge --subnet 10.1.5.0/24 --gateway 10.1.5.1 custom_bridge_net # 镜像导入和解压配置示例 docker load &lt; /opt/data_bak/backup_ever/docker_images/tmtcha_phpfpm7.4.33-v1.02.tar ...

    基于Docker官方php:7.1.33-fpm镜像构建支持67个常见模组的php7.1.33镜像

    docker network create -d bridge --subnet 10.1.5.0/24 --gateway 10.1.5.1 custom_bridge_net # 镜像导入和解压配置示例 docker load &lt; /opt/data_bak/backup_ever/docker_images/tmtcha-...

    Docker部署FastDFS的实现方法

    docker network ls # 网络列表 docker network create --driver bridge --subnet=192.168.127.0/24 fastdfs_fastdfs_net # 创建自定义网段 暂不使用 下载镜像 docker pull season/fastdfs 创建tracker容

    Docker for Serverless Applications

    We will then learn how to set up a Docker network, attach it to containers, and how to scale services in Docker Swarm. Chapter 3, Serverless Frameworks, discusses serverless frameworks, including ...

    Docker的网络和持久化存储

    Docker的网络使用和数据卷网络相关基础network的使用link的使用(单向通讯)设置容器环境变量(-e)数据卷使用Docker volume 管理 网络相关基础 network的使用 列举出当前docker上有哪些网络(默认有 bridge,none,...

    docker-compose.yml

    zookeeper的docker-compose.yml脚本,使用的是zookeeper:3.4镜像,使用之前先创建Docker网络: docker network create zoo_kafka

    Kafka.docker-compose.yml

    -manager,Docker-compose脚本,使用之前需要手动配置文件中的zookeeper链接,使用之前需要先创建Docker网络: docker network create zoo_kafka。 Docker镜像使用的是:wurstmeister/kafka、sheepkiller/kafka-...

Global site tag (gtag.js) - Google Analytics