zoukankan      html  css  js  c++  java
  • Docker学习(六): 网络使用与配置

    特别声明:

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

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

    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》

  • 相关阅读:
    Ubuntu下cc和gcc的关系
    Ubuntu下makefile的简单使用
    Ubuntu下配置Apache以及搭载CGI
    Easy C 编程 in Linux
    Ubuntu下配置GitHub
    Ubuntu学习之路2
    Ubuntu下配置Java环境
    Vim学习之路1
    将博客搬至CSDN
    ubuntu连接手机的方法
  • 原文地址:https://www.cnblogs.com/konrad/p/8637890.html
Copyright © 2011-2022 走看看