Docker网络管理
一、Docker的四种网络模式(host、container、none、bridge)
1、 host模式,使用docker run时使用--net=host指定,docker使用的网络实际上和宿主机一样,在容器内看到的网卡ip是宿主机上的ip
# docker run -it --rm --net=host httpd bash
2、container模式,使用--net=container:container_id/container_name多个容器使用共同的网络,看到的ip是一样的
3、none模式,使用--net=none指定:这种模式下不会配置任何网络
4、bridge模式,使用--net=bridge指定,默认模式,不用指定,默认就是这种模式,这种模式会为每个容器分配一个独立的Network Namespace。类似于vmware的nat网络模式,同一个宿主机上的所有容器会在同一个网段下,相互之间可以通信
二、外部访问容器(端口映射)
1、创建一个容器
# docker run -itd httpd bash
2、进入到该容器并且安装httpd服务,然后启动服务
# docker exec -it 3e7 bash
# yum -y install httpd
# /usr/sbin/httpd
3、把该容器生成一个新的镜像
# docker commit -m "httpd-server" -a "fansik" 3e7 httpd
4、使用新镜像创建容器,并制定端口映射
# docker run -itd -p 5123:80 httpd bash
5、进入容器,启动httpd服务
# docker exec -it 0d6 bash
# /usr/sbin/httpd
6、编辑个页面
# vi /var/www/html/index.html
随便写点东西就可以
7、退出容器测试
# curl localhost:5123
-p后面也支持ip:port:ip:port的格式,比如:
-p 127.0.0.1:8080:80
也可以不写本地端口,只写ip,这样会随意分配一个端口:
-p 127.0.0.1::80
三、容器互联
下载一个mysql的镜像
# docker pull mysql
新建一个容器名字叫mysql
# docker run -itd -p 3306:3306 --name mysql mysql bash
再新建一个容器,并和mysql互联
# docker run -itd -p 1725:80 --name web --link mysql:mysql httpd bash
在web上于女性env命令可以查看到关于mysql的环境变量
四、配置桥接网络
centos7的配置方法:
1、为了使本地网络中的机器和Docker容器更方便的通信,我们经常会有将Docker容器配置到和主机同一网段的需求,这个需求其实很容易实现,我们只要将Docker容器和宿主机的网卡桥接起来,再给Docker容器配上IP就可以啦。
2、安装pipework
git clone https://github.com/jpetazzo/pipework
cp ~/pipework/pipework /usr/local/bin
3、开启一个容器:
docker run -itd --net=none --name fansik centos /bin/bash
4、# pipework br0 fansik 10.10.10.202/24@10.10.10.201
10.10.10.202为容器ip,@后面的ip为宿主机的ip
5、# brctl addif br0 eth0
eth0为宿主机的网卡,这一步为把br0和eth0桥接起来
6、# docker exec -it fansik /bin/bash
进去后ifconfig查看就可以看到新添加的ip
centos6的配置方法:
1、配置网卡信息
# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ifcfg-br0
# vim ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
BRIDGE=br0
# vim ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.10.201
NETMASK=255.255.255.0
GATEWAY=10.10.10.1
DNS1=192.168.1.1
重启网卡:/etc/init.d/network restart
2、安装pipework
git clone https://github.com/jpetazzo/pipework
cp ~/pipework/pipework /usr/local/bin
3、开启一个容器:
# docker run -itd --net=none --name fansik httpd bash
4、升级iproute否则创建桥接网络是会报错:Object "netns" is unknown,try "ip help"
# rpm -Uvh https://repos.fedorapeople.org/openstack/EOL/openstack-grizzly/epel-6/iproute-2.6.32-130.el6ost.netns.2.x86_64.rpm
5、# pipework br0 fansik 192.168.1.250/24 //为容器添加ip
6、 # docker exec -it fansik bash //进到容器用ifconfig命令就可以看到新添加的ip了
Docker网络管理的更多相关文章
- Docker网络管理机制实例解析+创建自己Docker网络
实例解析Docker网络管理机制(bridge network,overlay network),介绍Docker默认的网络方式,并创建自己的网络桥接方式,将开发的容器添加至自己新建的网络,提高Doc ...
- docker 实践十:docker 网络管理
本篇是关于 docker 网络管理的内容,同时也包含了 docker 网络的高级应用. 注:环境为 CentOS7,docker 19.03. docker 网络基础 docker 网络模型 在 do ...
- Docker 网络管理及容器跨主机通信
1.网络模式 docker支持四种网络模式,使用--net选项指定: host,--net=host,如果指定此模式,容器将不会获得一个独立的network namespace,而是和宿主机共用一个. ...
- Docker网络管理-外部访问容器
注意:这里使用的方法是端口映射,需要说明的是端口映射是在容器启动的时候才能完成端口映射的. 1,搭建1个web服务器,让外部机器访问. docker run -itd centos /bin/bash ...
- Docker系统六:Docker网络管理
Docker网络 I. Docer的通信方式 默认情况下,Docker使用网桥(brige)+ NAT的通信模型. Docker启动时会自动创建网桥Docker0,并配置ip 172.17.0.1/1 ...
- 006.Docker网络管理
一 docker网络模式 Docker使用Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Name ...
- Docker 网络管理
网络模式 容器网络访问原理 桥接宿主机网络和配置固定IP地址 Docker 支持五种网络模式: 1.网络模式: --net 1.1 bridge 默认网络,Docker启动后默认创建一个docke ...
- ubuntu-docker入门到放弃(五)docker网络管理
查看docker宿主机的网卡信息我们会发现,有一个docker0的网卡,这个网卡就是用于跟docker容器进行通讯的,这个网段跟我们docker容器的网段是一样的: #ifconfig docker容 ...
- Docker 核心技术之网络管理
为什么需要Docker网络管理 容器的网络默认与宿主机.与其他容器都是相互隔离. 容器中可以运行一些网络应用(如nginx.web应用.数据库等),如果要让外部也可以访问这些容器内运行的网络应用,那么 ...
随机推荐
- POJ 3525 半平面交+二分
二分所能形成圆的最大距离,然后将每一条边都向内推进这个距离,最后所有边组合在一起判断时候存在内部点 #include <cstdio> #include <cstring> # ...
- 如何在redhat下安装WineQQ
使用过redhat的朋友都知道在redhat下要使用聊天工具例如:腾讯QQ只能是用网页QQ,但网页QQ始终用得不尽人意,下面我将给大家介绍一种在redhat下安装WineQQ的方法,让你能在redha ...
- 从协议VersionedProtocol开始2——ClientDatanodeProtocol和InterDatanodeProtocol
1.首先,我看的是hadoop1.2.1 这个里边,有点奇怪ClientDatanodeProtocol的versionID是4,但是InterDatanodeProtocol的versionID是3 ...
- 赋值运算符、拷贝初始化和this指针
一.赋值运算符和拷贝构造函数(重载技术) 赋值运算符和拷贝构造函数有编译器默认提供,但如果想做更复杂的事,需要重载. 1.下面用一个简单的例子先区分一下赋值运算符和拷贝构造函数: #include&l ...
- android listview getviewtypecount和getItemViewType
package newdemo.jeno.listviewdemo; import android.app.Activity;import android.os.Bundle;import andro ...
- C# WinForm程序向datagridview里添加数据
在C#开发的winform程序中,datagridview是一个经常使用到的控件.它可以以类似excel表格的形式规范的展示或操作数据,我也经常使用这个控件.使用这个控件首先要掌握的就是如何向其中插入 ...
- java基础之 泛型
泛型(Generic type 或者generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法 ...
- BinaryWriter
c#里的文件操作 fileInfo dir的一大堆属性不用说 地球人都知道(什么fileName,create() delete()) ,文件系统的概念很好理解的 文件读写也好理解(硬盘到内存 然后再 ...
- SharePoint 2013 开发——Provider-hosted APP准备工作
博客地址:http://blog.csdn.net/FoxDave 后续的内容我们来一步一步开发一个SharePoint Porvider-hosted APP,本篇主要介绍一些准备工作. Sha ...
- SplashTop Remote + 4核android平板 试用
局域网默认情况 最大100Mb 的网速下, 延迟在500ms+, 观看视频无影响, 但游戏无法进行! 另一种方案,利用多网卡来提升网络传输性能!