特别声明:

  博文主要是学习过程中的知识整理,以便之后的查阅回顾。部分内容来源于网络(如有摘录未标注请指出)。内容如有差错,也欢迎指正!

=============系列文章=============

1. Docker学习(一): 基本概念

2. Docker学习(二): 镜像的使用与构建

3. Docker学习(三): Dockerfile指令介绍

4. Docker学习(四): 操作容器

5. Docker学习(五): 仓库与数据管理

6. Docker学习(六): 网络使用与配置

=================================

一、端口映射

  -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学习(六): 网络使用与配置的更多相关文章

  1. Docker学习笔记之为容器配置网络

    0x00 概述 在互联网时代,网络已经成为绝大多数应用进行数据交换的主要通道,Docker 作为集群部署的利器,在网络支持上也下了许多功夫.功能丰富和强大,并不代表使用复杂,在 Docker 的封装下 ...

  2. docker学习笔记1 -- 安装和配置

    技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...

  3. android 学习随笔六(网络要求及配置)

    android在4.0之后已经不允许在主线程执行http请求了. 主线程阻塞,应用会停止刷新界面,停止响应用户任何操作,耗时操作不要写在主线程   只有主线程才能修改UI ANR异常:Applicat ...

  4. Docker学习计划二:基本配置

    来源:http://www.ityouknow.com/docker/2018/03/07/docker-introduction.html Docker 将应用程序与该程序的依赖,打包在一个文件里面 ...

  5. Docker学习:virtualbox安装和配置

    下载.安装 从官网:https://www.virtualbox.org/下载,根据说明直接一步步安装即可 安装ubuntu 说明:这里本机内存是16G,若内存<4G安装完成虚拟机, 安装完成之 ...

  6. docker学习笔记(二)--配置镜像加速器

    前提:docker已经安装好 配置过程 进入至阿里云开发中心,https://dev.aliyun.com/,点击管理中心 管理中心中,点击左侧镜像加速器. 修改配置文件,使用加速器,根据我们目前Do ...

  7. SpringBoot学习(六)-->SpringBoot的自动配置的原理

    Spring Boot的自动配置的原理 Spring Boot在进行SpringApplication对象实例化时会加载META-INF/spring.factories文件,将该配置文件中的配置载入 ...

  8. Docker学习:Docker安装和基本使用

    Docker Docek是一种容器技术.容器是一种轻量级.可移植.自打包的软件技术,使应用程序可以在几乎任何地方以相同的方式运行. 使用者可以在笔记本上创建并测试好的容器,无需任何修改就能够在生产系统 ...

  9. docker学习之network:初识网络配置

    起因 我的开发环境需要一个python代码运行环境.reids服务和mysql服务. 由于以前,我的开发环境是mac,而CI和线上运行环境是centos,偶尔会出项本地单元测试跑不过,而CI可以过.这 ...

随机推荐

  1. css3动画水波纹、波浪

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. iOS出现 _OBJC_CLASS_$_ZSHomeServiceDataElementGroupLargeImage", referenced from:以及linker command failed with exit code 1 (use -v to see invocation)的错误分析

    先说第一个问题 出现这样的错误我总结的原因有两个,我碰到过的: 1.文件重命名,在你创建文件的时候重名了 2.如果你是在一个类中又创建了一个或者多个类,那么你可能没有实现你写的类,也就是你只是@int ...

  3. Kali Linux来袭~老司机带你进击

    Kali是BackTrackLinux完全遵循Debian开发标准彻底的完全重建.全新的目录框架,复查并打包所有工具,我们还为VCS建立了Git树. 本次推荐内容主要介绍Kali-Linux的安装,包 ...

  4. 【JVM】jvm启动参数

    -server -Xmx2048m -Xms1500m -Xmn1024m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConc ...

  5. python 之 比较哪个数据大小

    #定义一个字典info={}#定义比较的人数n=int(input("请输入你要比较的人数"))#循环while(n): #输入a,b 两个数据 ,分别代表学号 和分数 # 把输入 ...

  6. 符合Python风格的对象

    array和bytes的转换 - 每个array必须有一个type_code,以此为依据解析底层字节序列 - array有一个frombytes方法,可以把字节序列按type_code转换成Array ...

  7. 图的最短路径---弗洛伊德(Floyd)算法浅析

    算法介绍 和Dijkstra算法一样,Floyd算法也是为了解决寻找给定的加权图中顶点间最短路径的算法.不同的是,Floyd可以用来解决"多源最短路径"的问题. 算法思路 算法需要 ...

  8. 42.oracle物化视图

    写在前面 先大概列一下数据库表设计的常规流程.方案.要遵循的规则 根据业务切分设计表 逻辑分层(数据库分层) 数据库结构设计与拆分:水平拆分(mysql分片)oracle分区物化视图中间表设计方案 优 ...

  9. C#-WebForm JS定时器

    JS定时器: 1.window.setTimeout(function(){},3000) 延迟3秒执行 2.window.setInterval(function(){},3000) 也叫重复器,每 ...

  10. 开源单点登录系统CAS入门

    一.什么是CAS CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目.CAS 具有以 ...