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》

原文地址:https://www.cnblogs.com/konrad/p/8637890.html

时间: 2024-11-05 20:29:02

Docker学习(六): 网络使用与配置的相关文章

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

技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔记:http://www.open-open.com/lib/view/open1423703640748.html 深入浅出docker:http://www.infoq.com/cn/articles/docker-core-technology-preview 安装 参考:http://www

docker学习-bridge网络

Docker提供几种原生网络,从覆盖范围可以分为单个host上的容器网络和跨多个host的网络.Doker在安装的时候会自动在host上创建三个网络,使用如下命令查看 docker network ls none 网络 故名思议,none 网络就是什么都没有的网络.挂在这个网络下的容器除了 lo,没有其他任何网卡.容器创建时,可以通过 --network=none 指定使用 none 网络.该网络一般应用到一些对安全性要求高并且不需要联网的应用,比如某个容器的唯一用途是生成随机密码,就可以放到

Docker 学习笔记【3】 Docker 仓库、数据卷、数据卷容器,网络基础实操。高级网络配置学习

Docker 学习笔记[4] 高级网络配置实操,实战案例实验 =========================================================================== Docker 学习笔记[2] Docker 仓库实操,创建私有仓库,实操数据卷.数据卷容器,记录开始 =========================================================================== 被格式化的脚本内容: #开头代表

Docker 学习笔记【2】 Docker 基础操作实,Docker仓库、数据卷,网络基础学习

Docker 学习笔记[3] Docker 仓库实操,创建私有仓库,实操数据卷.数据卷容器,实操 网络基础  ---------高级网络配置和部分实战案例学习 ============================================================= Docker 学习笔记[1]Docker 相关概念,基本操作--------实操记录开始 ============================================================= 被

Jetty学习六:配置连接器

连接器配置概览 连接器用于接收网络连接,配置一个连接器需要配置: 1)连接器的网络参数(例如:端口): 2)连接器使用的服务(例如:executors,schedulers): 3)为接收连接而初始化和配置协议的连接工厂. Jetty主要使用的连接器类型为ServerConnector. 标准Jetty发布使用下面的Jetty XML文件创建和配置连接器: 1)jetty-http.xml 初始化一个ServerConnector,用于接收HTTP连接(可以被升级到WebSocket连接). 2

全开源深度学习平台PaddlePaddle入手之路(二)----利用Docker在Windows10专业版环境下配置PaddlePaddle

利用Docker在Windows10专业版环境下配置PaddlePaddle 对于PaddlePaddle的安装,查询官网信息,PaddlePaddle提供pip安装和Docker安装运行的使用方式.我们已经了解到Docker在避免环境配置难题上的的巨大优势,加上本人用的是Windows10操作系统,目前官方对于win10版本给出独特的支持,因而选择了在Docker中安装PaddlePaddle. (1)安装docker 在安装Docker前,切记在Windows中打开Hyper-V管理器中(截

docker 学习笔记之docker连接网络的设置

1.如果docker主机不需要通过代理连接外网 则docker的相关命令(如docker search)或docker容器与网络相关的操作都可以正常进行,不需要特殊设置. 2.当docker主机 是通过代理才能连接外网时,采用服务方式启动守护进程 如果docker守护进程是通过服务的方式启动的(sudo start docker) 当我们执行如  docker search ubuntu 命令时,会报错 Error response from daemon: Get https://index.

docker学习3-虚拟网络模式

一.虚拟机网络模式 在理解docker网络隔离前,先看下之前虚拟机里对网络的处理,VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-only Adapter VMWare中有三种,其实他跟VMWare 的网络连接方式都是一样概念,只是比VMWare多了Internal方式. 要让自己(或别人)理解深刻,方法就是做比较和打比方,比较之间的不同和相同,拿熟知的事物打比方.先来一张图,通过这张图就很容易看出这4种方式的区别: NAT:Net

Docker学习笔记 之 Docker安装配置使用

简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal.OpenStack 集群和其他的基础应用平台. 环境:CentOS7.3 地址:192.168.1.137 首先注册阿里云开发者帐号帐号 https://cr.console.aliyun.com/ 登陆后取得专属加速器地址:https://XXXXX.mirror.aliyuncs.com