关闭

Docker基础教程——网络基础配置

标签: DockerDocker教程Docker网络配置
902人阅读 评论(0) 收藏 举报
分类:

原文出自:http://blog.csdn.net/anxpp/article/details/52495295

    我们使用Docker发布的组件,通常都离不开网络的,下面介绍Docker的网络基础配置。

1、端口映射

    从外部访问容器应用

    启动容器时,如果不知道对应参数,在容器外部是无法通过网络访问容器内部的。

    可以通过-p或-P参数指定端口映射。

    使用-P时,Docker会随机映射一个49000~49900的端口到容器内部开放的端口。

    -p会映射到指定的端口,支持的格式:

  • ip地址:主机端口:容器端口
  • ip地址::容器端口
  • 主机端口:容器端口

    映射所有接口地址

    主机端口:容器端口 格式将本地端口映射到容器端口的命令如下:

docker run -d -p 3306:3306 mysql
    此时默认会帮顶本地所有接口上的地址,可以多次使用-p帮顶多个端口。

    映射到指定地址的指定端口

    ip地址:主机端口:容器端口 格式的参数几乎与上面的差不多,不过多限制了地址,比如需要指定特定的地址的访问(如127.0.0.1):

docker run -d -p 127.0.0.1:3306:3306 mysql

    映射到指定地址的任意端口

    ip地址::容器端口 格式的参数,可以绑定localhost的任意端口到容器的指定端口上,本地主机会自动分配一个端口:

doccker run -d -p 127.0.0.1::3306 mysql
    也可以使用udp来标记udp端口:

doccker run -d -p 127.0.0.1:3386:3386/udp 某个镜像

    查看端口映射配置

    使用docker port命令查看端口映射配置:

 docker port 容器ID 3306
    容器有自己的内部往来和IP地址:

docker inspect 容器ID
    然后会输出一大堆信息。

2、容器互联

    容器的连接系统是除了端口映射外另一种可以与容器中应用进行交互的方式。

    它会在源和接收容器之间创建一个隧道,接收容器可以看到源容器指定的信息。

    自定义容器名

    连接系统根据容器的名称执行,所以需要自定义一个较为简单容易区分的容器名。

    自定义命名使用--name参数,这个在之前的文章中已经遇到过了:

docker run -d -p --name db mysql
    容器的命名必须是唯一的。

    执行docker run时,如果加上--rm参数,容器在终止后悔立即被删除,但是不能与-d参数一同使用。

    容器互联

    使用--link参数可以让容器间建立安全的连接进行交互。

    下面是一个示例:

  • 首先创建一个数据库的容器:

docker run -d --name db training/postgres

  • 然后创建web容器:

docker run -d -P --name web --link db:db training/webapp python app.py
    此时db容器和web容器加你互联关系。

    --link参数:--link name:alias,name是要连接的容器的名字,alias是这个连接的别名。

    可以使用docker ps查看容器信息,其中names列就能看出互联的状态。


    docker在两个互联的容器之间建立了一个安全隧道,不需要吧他们的端口映射到宿主主机上,也可以避免端口的暴露。

    Docker通过两种方式公开连接信息:

  • 环境变量
  • 更新/etc/hosts文件

    使用env命令查看刚刚的web容器的环境变量:

docker run --rm --name web2 --link db:db training/webapp env
    ...

    其中DB_开头的环境变量是供web容器连接db容器使用,前缀采用大写的连接别名。

    除了环境变量,Docker还添加host信息到父容器的/etc/hosts文件。其中web容器会以自己的ID作为默认主机名,db容器以db作为主机名。

    比如多个web到db容器的情况,可以链接多个子容器到父容器上。


小结

    Docker通过端口映射和容器互联,优雅的提供了网络配置功能。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

docker 四种网络模型

一.docker网络基础知识Docker在创建容器时有四种网络模式,bridge为默认不需要用–net去指定,其他三种模式需要在创建容器时使用–net去指定。bridge模式,使用–net=bridg...
  • csdn066
  • csdn066
  • 2017-08-14 19:01
  • 604

docker:网络基础配置

1.1 端口映射实现访问容器 从外部访问容器应用        -P或-p参数来指定端口映射 映射到指定地址的指定端口 docker run -d -p 127.0.0.1:5000:5000 t...
  • u010951938
  • u010951938
  • 2016-01-17 21:18
  • 366

Docker 网络基础介绍

【编者按】本文作者为 Mesosphere 开发大使 Michael Hausenblas,主要介绍配置 Docker 单主机网络的基本知识,由 OneAPM工程师编译。想要了解有关 Docker 网...
  • sanbingyutuoniao123
  • sanbingyutuoniao123
  • 2016-05-25 11:54
  • 606

Docker网络基础---Docker跨主机容器访问通信

在同一宿主机下的Docker的容器之间是默认互相联通的。通过docker inspect id或name可以查看到ip地址。在不通的容器中来执行ping是可以ping通的。但我们通过观察发现,每一个...
  • canot
  • canot
  • 2016-10-22 23:36
  • 8792

Docker 网络基础介绍

本文作者为 Mesosphere 开发大使 Michael Hausenblas,主要介绍配置 Docker 单主机网络的基本知识。文章系国内 ITOM 管理平台 OneAPM 编译呈现。
  • wangpeng198688
  • wangpeng198688
  • 2016-05-12 11:06
  • 515

docker网络配置方法总结

docker启动时,会在宿主主机上创建一个名为docker0的虚拟网络接口,默认选择172.17.42.1/16,一个16位的子网掩码给容器提供了65534个IP地址。docker0只是一个在绑定到这...
  • feiskyer
  • feiskyer
  • 2014-11-18 18:18
  • 2717

Dockerfile实战:构建基础的ubuntu14.04镜像

构建基础的ubuntu14.04 Docker镜像
  • u011387521
  • u011387521
  • 2015-05-19 17:46
  • 1979

TCP/IP 教程(针对LINUX的网络基础请参看 《鸟哥的Linux私房菜 服务器架设篇(第三版) 》)

TCP/IP 是针对因特网的通信协议。 在此教程中,你将了解到什么是 TCP/IP,以及它如何工作。开始学习 TCP/IP ! TCP/IP 是因特网的通信协议。 通信协议是对计算机必须遵...
  • u010794281
  • u010794281
  • 2015-09-16 18:31
  • 1527

Docker基础教程(4)进阶命令-1-网络,数据卷等内容

准备工作 进入容器 1 ssh登录 2 第三方工具nsenter 3 Docker工具 关闭和启动docker服务 管理容器端口 link Docker网络管理 数据卷 小结0. 准备工作为了跟随本教...
  • u014303046
  • u014303046
  • 2017-08-05 09:10
  • 277

Docker基础教程——Dockerfile

Dockerfile是一个文本格式的配置文件,我们可以使用Dockerfile文件快速创建自定义的镜像。 Dockerfile支持的众多指令是本文主要要介绍的内容,之后会给出一个基本示例。 ...
  • anxpp
  • anxpp
  • 2016-09-11 13:23
  • 1279
    个人资料
    • 访问:749640次
    • 积分:5468
    • 等级:
    • 排名:第5698名
    • 原创:96篇
    • 转载:1篇
    • 译文:0篇
    • 评论:292条
    博客专栏
    其他信息