docker1.13新功能network关注点

网络

允许 docker run 连入指定的 swarm mode 的网络

https://github.com/docker/docker/pull/25962

在 Docker 1.12 发布新的 Swarm Mode 之后,很多人都问过这样的问题,怎么才能让 docker run 的容器连入 Swarm Mode 服务的 overlay 网络中去?答案是不可以,因为 swarm 的 overlay 网络是为了 swarm mode service 准备的,相对更健壮,而直接使用 docker run,会破坏了这里面的安全模型。

但是由于大家需求很多,于是提供了一种折衷的办法。1.13 允许建立网络的时候,设定该网络为 attachable,允许之后的 docker run 的容器连接到该网络上。

我们创建一个默认的、不允许之后 attach 的网络:


$ docker network create -d overlay mynet1

xmgoco2vfrtp0ggc5r0p5z4mg

然后再创建一个允许 attach 的网络,这里会使用 1.13 新加入的 --attachable 参数:


$ docker network create -d overlay --attachable mynet2

yvcyhoc6ni0436jux9azc4cjt

然后我们启动一个 web 服务,连入这两个网络:


$ docker service create \

--name web \

--network mynet1 \

--network mynet2 \

nginx

vv91wd7166y80lbl833rugl2z

现在我们用 docker run 启动一个容器连入第一个网络:


$ docker run -it --rm --network mynet1 busybox

docker: Error response from daemon: Could not attach to network mynet1: rpc error: code = 7 desc = network mynet1 not manually attachable.

由于 mynet1 不允许手动 attach 所以这里报错了。

在 1.12 的情况下,会报告该网络无法给 docker run 使用:


docker: Error response from daemon: swarm-scoped network (mynet1) is not compatible with `docker create` or `docker run`. This network can only be used by a docker service.

See ‘docker run --help‘.

不过,--attachable 实际上是将网络的安全模型打开了一个缺口,因此这不是默认设置,而且并不推荐使用。用户在使用这个选项建立网络的时候,一定要知道自己在做什么。

允许 docker service create 映射宿主端口,而不是边界负载均衡网络端口

https://github.com/docker/docker/pull/27917
https://github.com/docker/docker/pull/28943

docker service create 中的 --publish 格式有进一步的变化。(在 1.13 的 RC 期间,曾经去掉 --publish,改为 --port,经过讨论后,决定保持一致性,继续使用 --publish,不使用新的 --port 选项。)

在 1.12 中,docker service create 允许使用参数 --publish 80:80 这类形式映射边界(ingress)网络的端口,这样的映射会享受边界负载均衡,以及 routing mesh。

从 1.13 开始,增加另一种映射模式,被称为 host 模式,也就是说,用这种模式映射的端口,只会映射于容器所运行的主机上。这就和一代 Swarm 中一样了。虽然失去了边界负载均衡,但是确定了映射点,在有的时候这种情况是需要的。

现在 --publish 的新的参数形式和 --mount 差不多。参数值为 , 逗号分隔的键值对,键值间以 = 等号分隔。目前支持 4 项内容:

  • protocol: 支持 tcp 或者 udp
  • mode: 支持 ingress 或者 host
  • target: 容器的端口号
  • published: 映射到宿主的端口号

比如,与 -p 8080:80 等效的 --publish 新格式选项为:


--publish protocol=tcp,mode=ingress,published=8080,target=80

当然我们可以继续使用 -p 8080:80,但是新的选项格式增加了更多的可能。比如,使用 1.13 开始加入的 host 映射模式:


[email protected]:~$ docker service create --name web \

--publish mode=host,published=80,target=80 \

nginx

运行成功后,查看一下服务容器运行的节点:


[email protected]:~$ docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

ntjybj51u6zp44akeawuf3i05 d2 Ready Active

tp7icvjzvxla2n18j3nztgjz6 d3 Ready Active

vyf3mgcj3uonrnh5xxquasp38 * d1 Ready Active Leader

[email protected]:~$ docker service ps web

ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS

5tij5sjvfpsf web.1 nginx:latest d3 Running Running 5 minutes ago *:80->80/tcp

我们可以看到,集群有3个节点,而服务就一个副本,跑到了 d3 上。如果这是以前的使用边界负载均衡的网络 ingress 的话,那么我们访问任意节点的 80 端口都会看到页面。

但是,host 模式不同,它只映射容器所在宿主的端口。因此,如果我们 curl d1 的话,应该什么看不到网页,而 curl d3 的话就会看到页面:


[email protected]:~$ curl localhost

curl: (7) Failed to connect to localhost port 80: Connection refused


[email protected]:~$ curl localhost

<!DOCTYPE html>

<html>

<head>

<title>Welcome to nginx!</title>

...

时间: 2024-11-25 19:16:12

docker1.13新功能network关注点的相关文章

Citrix Provisioning Services 7.13新功能之PVS加速器

Citrix Provisioning Services  7.13发布有一段时间了,今天要介绍下很多朋友还没注意到的一个新功能------PVS加速器! 对于这个功能肯定会有很多人不了解,这很正常.因为PVS加速器这个词是Citrix公司首次提出.在之前版本的产品里根本就没有出现过这个词. 默认安装可能看不到PVS加速器,要向使用PVS加速器,我们首先要在XenServer里面启用PVS_Cache_Storage.请注意,只能是XenServer,如果你的服务器虚拟化用vSphere ESX

Docker 1 12新功能探索(9) network基础

docker1.12中的network功能作了一定改进, 但是关于network应该如何使用,docker中的网络模型是如何设计的,当我们在run起来一个container而全然没有意识到network的时候,docker是怎样处理的,在这篇文章中,我们回去尝试一探究竟. docker1.12有关network的特性增加 特性 Built-in Virtual-IP based internal and ingress load-balancing using IPVS Routing Mesh

JavaScript大杂烩13 - 总结ECMAScript 5新功能

虽说这个标准已经出来很久了,所有的主流浏览器的最新版本也都支持了这些特性,但是很多的教程中并没有包含这个部分,这一节我们专门来总结一下这个标准中的新功能. Object的新方法 在最新的JavaScript规范(ECMAScript 5)中,Object扩展了很多不错的静态方法,下面来简单看一下: 1. create/getPrototypeOf方法 - 干净的原型链 先说简单的getPrototypeOf方法,这个方法统一了获取对象原型的方式,使用这个对象可以获取到对象的原型,这个不多说了.

浅谈测试rhel7新功能时的感受及遇到的问题

半夜起来看世界杯,没啥激情,但是又怕错误意大利和英格兰的比赛,就看了rhel7 相关新功能的介绍. 安装还算顺利,安装的界面比以前简洁的多,很清爽,分类很是明确. 有些奇怪的是,我安装的时候,怕有些基础的包没有装上去,所以选定了mini和Web的类型,结果还是有些基础的包没有安装,比如 ifconfig . 虚拟机的网卡,被识别为ens,有意思. yum groupinstall Base 这样的话,就可以把一些基础的包打上.可以正常的时候ifconfig lsof  . 这里需要说明的是,re

[Docker]Docker1.9后的network

.. 声明: 本博客欢迎转发,但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbaby 新浪微博:@寻觅神迹 内容系本人学习.研究和总结,如有雷同,实属荣幸! Docker1.9后的network 介绍与使用 1.9之后,在Docker中network从实验特性转为正式特性发布. 从命令行可以看到新增如下命令: [[email protected] system]# docker help network Usage: docker network [OP

浅谈测试rhel7新功能时的感受及遇到的问题【转载】

半夜起来看世界杯,没啥激情,但是又怕错误意大利和英格兰的比赛,就看了rhel7 相关新功能的介绍. rhel7的下载地址: https://access.redhat.com/site/downloads/ 安装还算顺利,安装的界面比以前简洁的多,很清爽,分类很是明确. 有些奇怪的是,我安装的时候,怕有些基础的包没有装上去,所以选定了mini和Web的类型,结果还是有些基础的包没有安装,比如 ifconfig . 虚拟机的网卡,被识别为ens,有意思. yum groupinstall Base

Docker 1.13 – 新增功能大揭秘

前言 Docker 1.13 马上就要发布了.从 7 月 29 日发布 1.12 发布以来,已经过去 4 个多月了,对于活跃的 Docker 社区来说,已经很久了,让我们看看都 1.13 都新增了什么内容吧. 1.13 有一千二百多个 issue/pull request,四千多个 commits,是历史上最高的.这并不是一个简单的小版本变化,里面有大量的更新. 要想测试 1.13.0 的新功能,可以起一个新的机器,然后在里面运行:curl -fsSL https://test.docker.c

Docker 1.12.0将要发布的新功能

导读 按计划,6/14 是1.12.0版本的 feature冻结 的日子,再有两个星期Docker 1.12.0也该发布了.这里列出来的新功能,都是已经合并到主分支的功能,不出意外,下一个版本的Docker应该是能体验到了. 下周2016 DockerCon也该开始了,好像也有一场专门来讲Docker新特性的,不过在这之前,我们就可以抢先一步,浏览一下这些新功能.新特性.尤其是前两个,都是比较吸引人的功能. Swarmkit集成 前几天Docker刚刚发布了 Swarmkit ,也就是Swarm

HTML5基本特性和新功能

HTML5的基本特征 1.向前兼容性 核心理念——平滑过渡! 不支持html5的浏览器可以向前兼容,并不会影响web内容的显示! 2.跨平台运行性 从pc浏览器到手机.平板电脑,甚至是智能电视. 只要用户的设备支持HTML5,基于HTML5的web程序就可以无障碍的运行! 3.简单易用性 相对HTML4.01,HTML5更加简单实用. 没有XHTML2.0那样严格的语法规则. (<HTML5的属性精简表示方法可以大大提高html文本的传输效率!> <HTML5 Web Form提供一套强