运维之我的docker-docker的网络

docker引擎十分强大,本身包含了对容器的网络驱动的支持。默认docker会提供桥接(bridge)和覆盖网络(overlay ).

  • 桥接:物理网卡和虚拟网卡通过虚拟网络内的虚拟交换进行桥接,对外通讯。

  • 覆盖网络:暂时只从官方看到是使用vxlan技术的网络,swarm使用这种加密网络会更安全。

1.正常情况下如果你不实用swarm创建覆盖性网络需要安装kvstore服务支持选型,例如consul,etcd和zookeeper

2.一个集群主机连接到kvstore

3.在每个swarm上配置集群引擎的daemon

注意:使用覆盖性网络时如果子网重复或覆盖可能会导致容器无法使用网络

每个安装docker的用户本地都会生成三个网络如下:

[[email protected]
nginx-new]# docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

b60c9e065473        bridge              bridge              local

a603808ad4ba        host                host                local

48d3687c03f0        none                null                local

桥接网卡你docker默认网卡,除非你指定使用别的网络方式。

[[email protected]
nginx-new]# docker run -itd --name=networktest training/webapp
f959f1626b03d965692d0d45f5307c062facac69eff2a33779a50293c35f662e
 
查看桥接网络内的全部信息
网段,网关,容器IP
[[email protected]
nginx-new]#  docker network inspect
bridge
[
    {
        "Name": "bridge",
        "Id":
"b60c9e065473e9d0f8b5eaffc520b681d812e3edd4105cdeba39b5e09bb81ba0",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver":
"default",
            "Options": null,
            "Config": [
                {
                    "Subnet":
"172.17.0.0/16",
                    "Gateway":
"172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Containers":
{
           
"846953219c6d32025f2ec9b95ea57d50c2f6cc04fbf92047b8a0e5789d623026":
{
                "Name":
"zen_varahamihira",
                "EndpointID":
"d2f6b8fdfa73fc369c5c77465f79f9d7ada17d9d612b5397a3da227a5e133c1b",
                "MacAddress":
"02:42:ac:11:00:02",
                "IPv4Address":
"172.17.0.2/16",
                "IPv6Address":
""
            },
           
"f959f1626b03d965692d0d45f5307c062facac69eff2a33779a50293c35f662e":
{
                "Name":
"networktest",
                "EndpointID":
"3017afc38daac830d872606ffafe5254a408e30e2b10a5c65b0977ba60018c38",
                "MacAddress":
"02:42:ac:11:00:03",
                "IPv4Address":
"172.17.0.3/16",
                "IPv6Address":
""
            }
        },
        "Options": {
           
"com.docker.network.bridge.default_bridge": "true",
           
"com.docker.network.bridge.enable_icc": "true",
           
"com.docker.network.bridge.enable_ip_masquerade":
"true",
           
"com.docker.network.bridge.host_binding_ipv4":
"0.0.0.0",
           
"com.docker.network.bridge.name": "docker0",
           
"com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]
[[email protected]
nginx-new]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
f959f1626b03        training/webapp     "python app.py"     4 minutes ago       Up 4 minutes        5000/tcp                  networktest
846953219c6d        training/webapp     "python app.py"     25 hours ago        Up 25 hours         0.0.0.0:32768->5000/tcp   zen_varahamihira

从桥接网络移除指定容器

[[email protected]
nginx-new]# docker network disconnect bridge networktest

创建一个自己的桥接网络

docker引擎天生再带桥接网络和覆盖性网络,docker桥接网络仅限于单机运行,如果出现多机集群就有问题了。这时候覆盖型网络更能满足你的需求,它可以包括多个主机,是一种高级的主题。

docker
network create -d [network type]  [network name]

[[email protected]
nginx-new]# docker network create -d bridge nginxs-bridge-network
b67220ae9284c802cd48dca1239026b7539c58b97ef19b19ae8b5d7c7ce13d62
[[email protected]
nginx-new]# docker network ls
NETWORK ID          NAME                    DRIVER              SCOPE
b60c9e065473        bridge                  bridge              local              
a603808ad4ba        host                    host                local              
b67220ae9284        nginxs-bridge-network   bridge              local              
48d3687c03f0        none                    null                local

查看新的网络信息

[[email protected]
nginx-new]# docker network inspect nginxs-bridge-network
[
    {
        "Name":
"nginxs-bridge-network",
        "Id":
"b67220ae9284c802cd48dca1239026b7539c58b97ef19b19ae8b5d7c7ce13d62",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver":
"default",
            "Options": {},
            "Config": [
                {
                    "Subnet":
"172.18.0.0/16",
                    "Gateway":
"172.18.0.1/16"
                }
            ]
        },
        "Internal": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

添加一个容器到指定网络

创建一个网络使得你的web应用在不通的网络下进行隔离这样才是安全的。当你第一次运行一个容器的时候你可以把它添加到一个新的网络。默认情况下两个桥接网络的容器是完全不能相互通讯的,要想两个网络下的指定容器可以互相通讯会做介绍。

参数:--net=[network
name]

[[email protected]
nginx-new]# docker run -d --net=nginxs-bridge-network --name db
training/postgres
Unable to find image
‘training/postgres:latest‘ locally
latest: Pulling from
training/postgres
a3ed95caeb02: Pull
complete
6e71c809542e: Pull
complete
2978d9af87ba: Pull
complete
e1bca35b062f: Pull
complete
500b6decf741: Pull
complete
74b14ef2151f: Pull
complete
7afd5ed3826e: Pull
complete
3c69bb244f5e: Pull
complete
d86f9ec5aedf: Pull
complete
010fabf20157: Pull
complete
Digest:
sha256:a945dc6dcfbc8d009c3d972931608344b76c2870ce796da00a827bd50791907e
Status: Downloaded
newer image for training/postgres:latest
4b0bc86f18596e6c24a505a40c759e09c1fd7520a487bf2f278348c641c5240f

查看指定容器的网络配置

[[email protected]
nginx-new]# docker inspect --format=‘{{json .NetworkSettings.Networks}}‘  db
{"nginxs-bridge-network":{"IPAMConfig":null,"Links":null,"Aliases":["4b0bc86f1859"],"NetworkID":"b67220ae9284c802cd48dca1239026b7539c58b97ef19b19ae8b5d7c7ce13d62","EndpointID":"99b9f2f973335447640639e146614ab6f4857b0d1e30f5ed6f9b507f645e137a","Gateway":"172.18.0.1","IPAddress":"172.18.0.2","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:12:00:02"}}
 
[[email protected] ~]#
docker inspect --format=‘{{range
.NetworkSettings.Networks}}{{.IPAddress}}{{end}}‘ db
172.18.0.2

指定容器可以连接到指定网络

docker network connect 
[network name]  [CONTAINER NAME]

[[email protected] ~]#
docker network connect nginxs-bridge-network db2
 
[[email protected]
nginx-new]# docker exec -it db2 bash
[email protected]:/#
ping 172.18.0.2
PING 172.18.0.2
(172.18.0.2) 56(84) bytes of data.
64 bytes from
172.18.0.2: icmp_seq=74 ttl=64 time=0.130 ms
64 bytes from
172.18.0.2: icmp_seq=75 ttl=64 time=0.116 ms
64 bytes from
172.18.0.2: icmp_seq=76 ttl=64 time=0.119 ms
时间: 2024-10-14 16:23:16

运维之我的docker-docker的网络的相关文章

Docker运维必备:监控宝Docker监控试用手记

本文由肖远昊深度实践docker监控的报告   非常荣幸得到监控宝的邀请,试用了他们最近推出的新产品--Docker监控. 9月7日,中国APM厂商云智慧CloudWise正式发布上线Docker监控,该产品从部署到使用,整个过程都非常的简单.不仅能够实时监控宿主机和Docker容器的性能信息(包括CPU.Mem.磁盘.Net In/Out),还可以自定义相应的告警策略.以下将从部署.监控信息.告警这几个方面聊聊试用体会.大家可以[注册]监控宝,免费使用Docker监控. 部署流程 阅读了Doc

linux运维、架构之路-Docker架构原理

一.Docker架构原理介绍        Docker使用了C/S架构,客户端与守护进程通信,Docker守护进程负责构建,运行和分发Docker容器.Docker客户端和守护进程可以在同一个系统上运行,也可以将Docker客户端连接到远程Docker守护进程.Docker客户端和守护进程使用REST API通过UNIX套接字或网络接口进行通信. 二.Docker介绍        Docker的英文翻译是”搬运工“的意思,他搬运的东西就是我们常说的集装箱Container,Container

网络干货,无论是运维还是开发都要知道的网络知识系列之(九)

网络及服务故障排查 例:检查公司的网站是否有问题. 1.你是运维人员,客户说打开网站慢,,请分析可能原因 a.ping www.muyuchen.com icmp协议,(高速公路有没有修通),linux禁止icmp. ping -c3 -i2 -s512 www.baidu.com b.traceroute www.baidu.com 基础检查,各个高速节点有没有修通. c.telnet www.etiatian.org 80 检查服务器WEB有没有开启,服务开没开, 以及防火墙有没有档住,(让

运维日常错误总结(docker)

一:Apache服务启动失败 报错原因:80端口被占用 分析:netstat -anp|grep 80 检查80端口的占用情况,发现是启动了nginx服务,占用了http服务 解决方式: 1:如nginx是临时用的,没有必要使用,可以杀死nginx进程 2:如若需要使用nginx服务,则需要把配置文件的监听端口给改掉,虽然是非默认端口,只要其他服务不会使用到就没问题,具体操作命令是 semanage port -a -t http_port_t -p tcp 888 vi /etc/httpd/

提升逼格,无论是运维还是开发都要知道的网络知识9/(三)

TCP/IP协议簇(DoD参考模型) 用于简化OSI层次,以及相关的标准. ² 传输控制协议(tcp/ip)族是相关国防部(DoD)所创建的,主要用来确保数据的完整性及在毁灭性战争中维持通信 ² 是由一组不同功能的协议组合在一起构成的协议簇 ² 利用一组协议完成OSI所实现的功能 ====================TCP / IP=====================应用层:    它只负责产生相应格式的数据  ssh ftp nfs cifs dns http smtp pop3 -

Linux运维 第三阶段 (一) 网络配置及远程管理

一.网络配置 1.#hostname            (主机名查看 #hostname  FQDN          (临时修改主机名 #vi  /etc/sysconfig/network NETWORKING=YES           (使用IPV4的主机名配置 HOSTNAME=FQDN            (更改主机名,重启生效 2.#ifconfig            (查看IP地址 #ifconfig  网络接口 ip地址  netmask 子网掩码(临时修改IP #i

大型运维知识体系v2.0

转载请注明来自-运维社区https://www.unixhot.com/page/ops 运维知识体系-V2.0 By:2016年12月26日更新 运维架构层级/运维角度 内容描述/主要技术关键词 监控体系 安全体系 备份体系 自动化体系 云计算 客户端层 浏览器 Cookie.浏览器缓存协商(Last-Modified.Expires.Etag).组件分离.前端优化(提高浏览器并发数.避免静态资源Cookie上传).运维检测工具 舆论监控(第三方) 外部网络监控 APM 加速乐.牛盾.安全宝.

高效运维最佳实践七字诀,不再憋屈的运维!

我们那么努力,为什么总感觉过得那么憋屈.苦闷?做的事情那么多,为什么业务部门.直接领导和公司貌似都那么不领情?怎么做才能自己更加开心些? 做运维的那么多,快乐的能有几个? 我们那么努力,为什么总感觉过得那么憋屈.苦闷?做的事情那么多,为什么业务部门.直接领导和公司貌似都那么不领情?怎么做才能自己更加开心些? 本专栏的主线实际是一个运维人员的十年成长史,从菜鸟到运维总监.但不是基础技术教学,也不会在运维技术的某一方面过深涉及.更多的是应用技巧.实践经验及案例剖析.专栏中的系列文章,包含作者在运维各

[ Linux运维学习 ] 路径及实战项目合集

我们知道运维工程师(Operations)最基本的职责就是负责服务的稳定性并确保整个服务的高可用性,同时不断优化系统架构.提升部署效率.优化资源利用率,确保服务可以7*24H不间断地为用户提供服务. 如果你想从事Linux运维相关工作,那么你可以来实验楼,因为实验上有: [Linux运维技术路径]:一条学习路径,多个阶段.若干课程带你一步步成为Linux运维工程师: [Linux运维与Devops实战]:12周时间,带你0基础到运维工程师,涵盖Linux运维常用技术和DevOps相关技术: --

零基础转行Linux云计算运维工程师获得20万年薪的超级学习技巧

云计算概念一旦产生便一发不可收拾,成为移动互联网时代最为火热的行业之一.国内各大互联网公司例如阿里.腾讯.百度.网易等纷纷推出自己的云计算产品,3月10日,腾讯云0.01元投标时间更是让云计算在普罗大众中火热了一把! 随着云计算的产生,运维工程师也迎来了职业的升级.传统的运维工程师散布在各个企业,在可见的将来,运维工程师将会越来越集中于云计算平台.当然,各企业因为对服务器端内容需要维护,也会有运维工程师的需求. 随着云计算被捧上神坛,相应的人才待遇水涨船高.据拉勾统计,云计算相关岗位数量相比前一