资讯专栏INFORMATION COLUMN

Docker入门-容器端口映射及互联机制(CentOS 7)

IT那活儿 / 770人阅读
Docker入门-容器端口映射及互联机制(CentOS 7)

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!! 



问题1:如何实现容器端口映射?

当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-P或-p参数来指定端口映射。
1) 当使用-P(大写)时,Docker会把容器内部端口随机映射到宿主主机的高端口:

</>复制代码

  1. docker run -d -P training/webapp
可以看到容器exciting_lovelace内部端口 5000绑定到宿主主机端口 32768:
访问宿主主机的32768端口即可访问容器内部web应用提供的界面:
http://xxx.xxx.xx.81:32768/
查看容器日志:

</>复制代码

  1. docker logs -f exciting_lovelace
2) 当使用-p(小写)时,Docker会把容器内部端口映射到宿主主机指定的高端口,支持的格式有IP:HostPort:ContainerPort |IP::ContainerPort |HostPort:ContainerPort。
比如:

</>复制代码

  1. docker run -d -p 35000:5000 training/webapp
可以看到容器loving_nobel内部端口 5000绑定到宿主主机指定的端口 35000上:
或者,映射到宿主主机的随机端口上:

</>复制代码

  1. docker run -d -p xxx.xxx.xx.81::5000 training/webapp
上面的例子中,默认都是绑定tcp端口,如果要绑定udp端口,可以在端口后面加上/udp。

</>复制代码

  1. docker run -d -p xxx.xxx.xx.81::5000/udp training/webapp
查看端口映射情况:

</>复制代码

  1. docker port heuristic_swartz

问题2:如何使用互联机制实现容器便捷访问?


容器互联(link)可以让多个容器中的应用进行快速的交互通信,接受容器可以通过容器名快速的访问到源容器,而不需要指定具体的IP地址。
创建源容器的时候要使用--name参数为容器定义一个有意义的名称,然后使用--link参数让容器之间安全的进行交互通信。
先创建一个数据库容器:

</>复制代码

  1. docker run -d --name db training/postgres
再创建一个Web容器:

</>复制代码

  1. docker run -d -P --link db:db --name web training/webapp
--link参数格式为:--link
源容器名:源容器别名。
这样db容器和web容器就建立了互联关系,它们之间建立了一个虚机通道。不需要映射它们的端口到宿主主机上,从而可以避免暴露数据库服务端口到外部网络。
查看Docker容器互联信息的两种方式:
一是:环境变量;
二是:/etc/hosts文件。
创建容器web2连接到db容器,进入容器后分别执行cat /etc/hosts 和env命令:

</>复制代码

  1. docker run -ti --link db:db --name web2 training/webapp /bin/bash
可以连接多个Web容器(称为:子容器)到db容器上(称为:父容器)。

END



本文作者:孙长城

本文来源:IT那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129496.html

相关文章

  • docker入门实战笔记

    摘要:创建用户组并添加用户。默认情况下是过滤掉所有的入站规则。初始命令表示一旦容器启动,需要运行的命令,此时使用,表示什么也不做,只需进入命令行即可。1.什么是docker  docker翻译为搬运工,在这里应该可以理解为搬运应用的工具,也就是云.先了解其运用场景之后更容易对他形成深刻理解.  Docker提供了一种可移植的配置标准化机制,允许你一致性地在不同的机器上运行同一个Container;...

    Tecode 评论0 收藏0
  • Docker 快速入门

    摘要:容器类似虚拟机,可以支持的操作包括启动,停止,删除等。交互式可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互。 Docker Docker 核心概念及入门 什么是docker Docker是一个开放源代码软件项目,让应用程序布署在软件货柜下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。Docker...

    bingo 评论0 收藏0
  • SpringBoot整合MyBatis并使用Redis作为缓存组件的Demo

    摘要:本博客猫叔的博客,转载请申明出处本系列教程为项目附带。历史文章如何在安装最新版安装安装最新版的入门教程的入门教程安装教程安装流程安装如果不清楚是什么,请查看的文档和简介,这里给出的安装过程安装虚拟机如果有远程服务器的,请略过此步骤本文推 本博客 猫叔的博客,转载请申明出处本系列教程为HMStrange项目附带。 Auth:HMStrange-TIAN e-mail:zhangqihao...

    mo0n1andin 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<