Docker学习(六): 网络使用与配置
特别声明:
博文主要是学习过程中的知识整理,以便之后的查阅回顾。部分内容来源于网络(如有摘录未标注请指出)。内容如有差错,也欢迎指正!
=============系列文章=============
3. Docker学习(三): Dockerfile指令介绍
=================================
一、端口映射
-p 或 -P 参数来指定端口映射,当-P标记时,Docker会随机映射一个49000~49900的端口内部容器开放的网络端口。
-p:可以指定要映射的端口,并且在一个指定端口上只可以绑定一个容器。
格式:ip:hosrtPort:containerPort | ip::containerPort | hostPort:containerPort
映射所有接口地址:默认绑定本地所有接口上的所有地址
docker run -d -p 5000:5000 IMAGE COMMAND
映射到指定地址的知道端口:
docker run -d -p 127.0.0.1:5000:5000 IMAGE COMMAND
映射到指定地址的任意端口:
docker run -d -p 127.0.0.1::5000 IAMGE COMMAND
查看映射端口配置:
docker port nostalgic_morse 5000
二·、容器互联
容器的连接系统是除了端口映射外,另一种跟容器中应用交互的方式。该系统会在源和接收容器之间创建一个隧道,接收容器可以看到源容器指定的信息。
--link name:alias(name是要链接容器的名称,alias是这个连接的别名)
docker run -d -P --name web --link db:db IAMGE COMMAND
Docker在两个互联的容器之间创建了一个安全隧道,而且不用映射它们的端口到宿主机上。Docker通过2中方式为容器公开连接信息:
1.环境变量,用env命令查看
docker run --rm --name web2 --link db:db IMAGE env
2.更新/etc/hosts文件
docker run -it --rm --link db:db IMAGE /bin/bash
cat /etc/hosts #查看主机配置包含了连接的两个容器
三、网络配置选项
指定容器挂在的网桥:-b BRIDGE 或 --bridge=BRIDGE
定制docker0的掩码:--bip=CIDR
Docker服务端接收命令的通道:-H SOCKET... 或 --host=SOCKET...
是否支持容器之间进行通信:--icc=true|false
容器间通信:--ip-forward=true|false
是否允许添加iptables规则:--iptables=true|false
容器网络中的MTU:--mtu=BYTES
以下2个选项既可以在启动服务时指定,也可以Docker容器启动时候指定。在Docker服务启动的时候指定则会成为默认值,后面执行docker run时可以覆盖设置的默认值。
指定DNS服务器:--dns=IP_ADDRESS...
指定DNS搜索域:--dns-search=DOMAIN...
以下选项只有在docker run执行时使用,针对容器的特性内容。
配置容器主机名:-h HOSTNAME 或 --hostname=HOSTNAME
添加到另一个容器的连接:--link=CONTAINER_NAME:ALIAS
配置容器的桥接模式:--net=bridge|none|container:NAME_or_ID|host
映射容器端口到宿主主机:-p SPEC 或 --publish=SPEC
映射容器所有端口到宿主主机:-P 或 --publish-all=true|false
四、容器访问控制(iptables防火墙来实现)
容器访问外部网路:需要本地系统的转发支持。
sysctl net.ipv4.ip_forward #检查转发是否打开
net.ipv4.ip_forward = 1 #如果为0,说明没有开启
sysctl -w net.ipv4.ip_forward=1 #开启转发
在启动Docker服务的时候设定--ip-forward=true,Docker就会自动开启转发。
容器之间访问:容器的网络拓扑是否已经互联。默认情况下,所有容器都会被连接到docker0网桥上;本地系统的防火墙iptables是否允许通过。
访问所有端口:当启动Docker服务时候,默认会添加一条转发策略到iptables的FORWARD链上。策略为通过(ACCEPT)还是禁止(DROP)取决于配置--icc=true(缺省值)还是--icc=false。如果收到指定--iptables=false则不会添加iptables规则。默认情况下,不同容器之间是允许网络互通的。如果为了安全考虑,可以在/etc/default/docker文件中配置DOCKER_OPTS=--icc=false来禁止。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
参考:
1.《docker_practice》
Docker学习(六): 网络使用与配置的更多相关文章
- Docker学习笔记之为容器配置网络
0x00 概述 在互联网时代,网络已经成为绝大多数应用进行数据交换的主要通道,Docker 作为集群部署的利器,在网络支持上也下了许多功夫.功能丰富和强大,并不代表使用复杂,在 Docker 的封装下 ...
- docker学习笔记1 -- 安装和配置
技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...
- android 学习随笔六(网络要求及配置)
android在4.0之后已经不允许在主线程执行http请求了. 主线程阻塞,应用会停止刷新界面,停止响应用户任何操作,耗时操作不要写在主线程 只有主线程才能修改UI ANR异常:Applicat ...
- Docker学习计划二:基本配置
来源:http://www.ityouknow.com/docker/2018/03/07/docker-introduction.html Docker 将应用程序与该程序的依赖,打包在一个文件里面 ...
- Docker学习:virtualbox安装和配置
下载.安装 从官网:https://www.virtualbox.org/下载,根据说明直接一步步安装即可 安装ubuntu 说明:这里本机内存是16G,若内存<4G安装完成虚拟机, 安装完成之 ...
- docker学习笔记(二)--配置镜像加速器
前提:docker已经安装好 配置过程 进入至阿里云开发中心,https://dev.aliyun.com/,点击管理中心 管理中心中,点击左侧镜像加速器. 修改配置文件,使用加速器,根据我们目前Do ...
- SpringBoot学习(六)-->SpringBoot的自动配置的原理
Spring Boot的自动配置的原理 Spring Boot在进行SpringApplication对象实例化时会加载META-INF/spring.factories文件,将该配置文件中的配置载入 ...
- Docker学习:Docker安装和基本使用
Docker Docek是一种容器技术.容器是一种轻量级.可移植.自打包的软件技术,使应用程序可以在几乎任何地方以相同的方式运行. 使用者可以在笔记本上创建并测试好的容器,无需任何修改就能够在生产系统 ...
- docker学习之network:初识网络配置
起因 我的开发环境需要一个python代码运行环境.reids服务和mysql服务. 由于以前,我的开发环境是mac,而CI和线上运行环境是centos,偶尔会出项本地单元测试跑不过,而CI可以过.这 ...
随机推荐
- ClamAV学习【7】——病毒库文件格式学习
搜查到一份详细的ClamAV病毒文件格式资料(http://download.csdn.net/detail/betabin/4215909),英文版,国内这资料不多的感觉. 重点看了下有关PE的病毒 ...
- Prim算法---最小生成树
最小生成树的Prim算法也是贪心算法的一大经典应用.Prim算法的特点是时刻维护一棵树,算法不断加边,加的过程始终是一棵树. Prim算法过程: 一条边一条边地加, 维护一棵树. 初始 E = {}空 ...
- WC2019 全国模拟赛第一场 T1 题解
由于只会T1,没法写游记,只好来写题解了... 题目链接 题目大意 给你一个数列,每次可以任取两个不相交的区间,取一次的贡献是这两个区间里所有数的最小值,求所有取法的贡献和,对 \(10^9+7\) ...
- flask接收前台的form数据
转自 http://www.cnblogs.com/wanghaonull/p/6340096.html 我主要是想了解 request.form.get('username') 这一部分
- $.ajax()——超时设置,增加 loading 提升体验
前端发送Ajax请求到服务器,服务器返回数据这一过程,因原因不同耗时长短也有差别,且这段时间内页面显示空白.如何优化这段时间内的交互体验,以及长时间内服务器仍未返回数据这一问题,是我们开发中不容忽视的 ...
- Struts2运行原理
一个请求在Struts2框架中的处理大概分为以下几个步骤: 1 客户端发送请求:2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤 ...
- python基础知识梳理----5dict 字典的应用
内容简介: 1:字典简介 2:字典的增删该查 3:字典嵌套 1: 字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中key是唯一的. 在保存的时候, 根 ...
- 数据结构:广义表的实现(Java)
广义表的简单理解在这篇博文中:https://blog.csdn.net/lishanleilixin/article/details/87364496,在此不做赘述. Java实现广义表: pack ...
- 0、weka学习与使用
转载自:https://blog.csdn.net/u011067360/article/details/20844443 数据挖掘开源软件:WEKA基础教程 本文档部分来自于网络,随着自己的深入学习 ...
- Web安全学习笔记——SQL注入
一.MySQL注入 1. 常用信息查询 常用信息: 当前数据库名称:database() 当前用户:user() current_user() system_user() 当前数据库版本号:@@ver ...