docker——端口映射与容器互联
在生产环境中,单个服务往往是独立的,但是服务与服务之间往往是相互依赖的,
这样对于容器来说,容器之间就需要相互访问。
除了网络访问之外,docker还提供了另外两种方式来满足服务的访问。
一:允许映射容器内应用的服务端口到本地宿主机;
二:互联网机制实现多个容器间通过容器名来快速访问;
1.端口映射实现访问容器
(1)从外部访问容器应用:随机分配本机端口
在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内的应用和服务的。
比如启动一个nginx:

但是你知道怎样通过公网来访问这个程序吗?你不知道,也没人知道。

可能你会说我可以给这个程序绑定一个IP,确实可以,但是如果你没有可用的IP呢?
我们可以通过-P来指定端口映射,docker会随机映射一个主机端口到容器上。

将本机的32770端口映射到容器的80端口,也就是nginx默认的端口,这样就可以通过32770这个端口去访问nginx服务。

(2)一对一指定
使用HostPort:ContainerPort格式将本地的某个端口绑定到容器的某个端口之上。

将本机的80端口映射到容器的80端口之上。一次可以使用多个-p,这样可以实现多组绑定。
(3)映射到指定地址和端口到容器指定端口
使用IP:HostPort:ContainerPort指定一个特定地址和端口。

(4)映射到指定地址到随机端口
使用IP::ContainerPort指定本机的任意端口到容器的指定端口。

(5)查看映射端口配置
使用docker port查看当前映射的端口位置。

注意:每个容器都会有一个随机分配的内网地址,通过docker inspect可以查看。类似于虚拟机的桥接模式。
2.互联机制实现便捷互访
容器互联是一种让多个容器中应用快速交互的方式。
它会在源和接受容器之间创建连接关系,接受容器通过容器名快速访问到源容器,而不用指定具体的IP地址。
使用--link参数可以让容器之间安全的进行交互。
创建一个数据库:

创建一个web容器,将其连接到db容器。

命令解释:
docker run -d -P --name web --link db:db docker.io/nginx
--link参数的格式为--link name:alias,name是要连接的容器名称,alias是这个连接的别名。
Docker相当于在两个互联的容器之间创建了一个虚拟通道,而且不用映射它们的端口到宿主主机上。
在启动db容器的时候并没有使用-p和-P标记,从而避免了暴露数据库服务端口到外部网络上。
docker——端口映射与容器互联的更多相关文章
- 详解Docker 端口映射与容器互联
详解Docker 端口映射与容器互联 1.端口映射实现访问容器 1.从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内部的网络应用和服务的. 当容器中运行 ...
- Docker端口映射与容器互联
Docker提供了两个功能来满足访问的基本需求:一是允许映射容器内应用的服务端口到本地宿主主机:另一个是互联机制实现多个容器间通过容器名来快速实现访问. 一.端口映射实现访问容器 当容器中运行一些网络 ...
- Docker基础-端口映射与容器互联
1.端口映射实现访问容器 1.从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内部的网络应用和服务的. 当容器中运行一些网络应用,要让外部访问这些应用时, ...
- Docker实战(五)之端口映射与容器互联
除了网络访问外,Docker还提供了两个很方便的功能来满足服务访问的基本需求:一个是允许映射容器内应用的服务端口到本地宿主主机;另一个是互联机制实现多个容器间通过容器名来快速访问. 1.端口映射实现访 ...
- docker 实践五:端口映射和容器互联
本篇是关于 docker 容器的端口映射和容器之间的互联内容. 注:环境为 CentOS7,docker 19.03. docker 的容器除了能连接网络外,在许多时候,我们需要让多个容器来协同完成任 ...
- Docker入门之六端口映射与容器互联
一.端口映射 在之前的博客搭建私有仓库时用到这样一句:docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry来r ...
- Docker学习笔记(二):端口映射与容器互联
端口映射 使用docker run时,可以指定-P(大写)与-p(小写)参数映射端口. docker run -P -P(大写)会随机映射一个端口到容器的内部端口 -> [feifei@ffma ...
- docker端口映射和容器互相访问
端口映射 容器运行时如果没有指定端口,与外界是无法通信的,比如当前我们的有一台MySQL的docker container,当前容器正在运行mysql并提供3306端口 # docker ps CON ...
- 【Docker端口映射】
Docker端口映射即将容器内开放的端口映射到宿主机端口,以实现外部网络的访问. 首先,我们先下载用于测试端口映射的镜像: [root@fedora ~]# docker pull training/ ...
随机推荐
- 《Java并发编程实战》第八章 线程池的使用 读书笔记
一.在任务与运行策略之间的隐性解耦 有些类型的任务须要明白地指定运行策略,包含: . 依赖性任务.依赖关系对运行策略造成约束.须要注意活跃性问题. 要求线程池足够大,确保任务都能放入. . 使用线程封 ...
- K-mean聚类算法汇聚有用信息——学习笔记
无监督-无标签 聚类,难点在于评估和调参. k-means最简单实用 基本概念 K值:数据聚成多少类. 质心:各个维度算平均数.Centroid 相似度量:距离来算(欧式距离——直线距离,余弦距离) ...
- win7win8 64位汇编开发环境合集安装与设置
win7win8 64位汇编开发环境合集安装与设置 下载 win7 win8 64位汇编开发环境.rar 下载地址(免积分下载) http://download.csdn.net/detail/li ...
- C#,C++Dll文件调用心得
C#下: 1.新建-->项目-->控制台应用程序:填写各种名称之后项目新建成功:一下为默认生成方式. 2.如下,在Program.cs中添加如下代码: using System;using ...
- Android弹出一项权限请求
Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(ena ...
- shell脚本学习总结03--别名的使用
1.创建别名 $ alias dms='cd Oracle/Middleware/user_projects/domains/7001_costctl/' $ dms $ dms $ pwd /hom ...
- Json数组基础知识
1.对象是一个无序的“‘名称/值’对”集合. (1)一个对象以“{”(左括号)开始,“}”(右括号)结束. (2)每个“名称”后跟一个“:”(冒号): (3)“‘名称/值’ 对”之间使用“,”(逗号) ...
- webpack报错no postcss config...
终端里运行的错误: 查了好多资料,最后找到解决办法,改为: const webpack = require('webpack'); // const autoprefixer = require('a ...
- 【BZOJ2792】[Poi2012]Well 二分+双指针法
[BZOJ2792][Poi2012]Well Description 给出n个正整数X1,X2,...Xn,可以进行不超过m次操作,每次操作选择一个非零的Xi,并将它减一. 最终要求存在某个k满足X ...
- 利用CSS3制作淡入淡出动画效果
CSS3新增动画属性“@-webkit-keyframes”,从字面就可以看出其含义——关键帧,这与Flash中的含义一致. 利用CSS3制作动画效果其原理与Flash一样,我们需要定义关键帧处的状态 ...