Docker端口映射的实现

docker容器在启动的时候,如果不指定端口映射参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。

亦可使用Dockerfile文件中的EXPOSE指令来配置。

端口映射可使用-p、-P来实现:

  • -p指定要映射的端口,一个指定端口上只可以绑定一个容器
  • -P将容器内部开放的网络端口随机映射到宿主机的一个端口上

端口映射支持的格式:

ip:hostport:containerport #指定ip、指定宿主机port、指定容器port
ip::containerport #指定ip、未指定宿主机port(随机)、指定容器port
hostport:containerport #未指定ip、指定宿主机port、指定容器port

端口的映射有以下五种方法:

一、将容器暴露的所有端口,都随机映射到宿主机上。

例如:(不推荐使用)

docker run -P -it ubuntu /bin/bash 

二、将容器指定端口随机映射到宿主机一个端口上。

例如:

docker run -P 80 -it ubuntu /bin/bash

以上指令会将容器的80端口随机映射到宿主机的一个端口上。

三、将容器指定端口指定映射到宿主机的一个端口上。

例如:

docker run -p 8000:80 -it ubuntu /bin/bash

以上指令会将容器的80端口映射到宿主机的8000端口上。

四、将容器ip和端口,随机映射到宿主机上。

docker run -P 192.168.0.100::80 -it ubuntu /bin/bash

以上指令会将容器的ip192.168.0.100和80端口,随机映射到宿主机的一个端口上。

五、将容器ip和端口,指定映射到宿主机上。

docker run -p 192.168.0.100:8000:80 -it ubuntu /bin/bash

以上指令会将容器的ip192.168.0.100和80端口,映射到宿主机的8000端口。

示例:

#将nginx的80端口映射到宿主机的800端口上
docker run -d -it -p 800:80 nginx 

查看映射端口配置

docker port container_ID #容器ID
#结果输出
80/tcp -> 0.0.0.0:800

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Docker 端口映射与容器互联

    1.端口映射实现访问容器 1.从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内部的网络应用和服务的. 当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-p或-P参数来指定端口映射.当使用-P(大写P)标记时,Docker会随机映射一个端口到内部容器开放的网络端口(端口范围在Linux系统使用的端口之外,一般都过万): [root@docker ~]# docker run -d --name nginx_1 -P nginx:latest

  • Docker端口映射实现网络访问的方法

    Docker运行容器之后却发现没IP,没端口,那要如何访问容器呢? 下面我来介绍下docker通过端口映射来实现网络访问 一.从外部访问容器应用 在启动容器的时候,如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的. 当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-P或-p参数指定端口映射. 先来说说p和P吧 -p 可以指定要映射的端口,并且,在一个指定端口上只可以绑定一个容器 -P 它会随机映射一个端口至容器内部开放的网络端口(范围不详,似乎都上万) 先申明

  • Docker容器端口映射后突然无法连接的排查过程

    一.背景 一般需要对外提供服务的Docker容器,我们在启动时后使用-p命令将对外访问端口暴露给外部,例如启动Docker Registry,我们将5000端口映射出来供外部访问: docker run -d -p 5000:5000 registry 但最近碰到一个非常奇怪的情况:研发组里一个CentOS 7测试环境里部署有Docker Registry,并对外暴露了端口.启动容器后一段时间内都是可以正常工作的,但在不定时间间隔后,外部主机就会出现无法从仓库中拉取镜像的情况,提示TimeOut

  • Docker 给运行中的容器设置端口映射的方法

    一.概念 Docker 端口映射即映射容器内应用的服务端口到本机宿主机器. 二.实现 当容器中运行一些网络应用,要让外部访问这些应用时,可以通过 -P 或 -p 参数两种方式来指定端口映射. 1. 随机映射 使用 -P 参数时,Docker 会随机映射一个端口到内部容器开放的网络端口,如下开启一个 nginx 服务: $ docker run -d -P nginx e93349d539119dc48dc841e117f6388d6afa6a6065b75a5b4aedaf5fb2a051fc

  • docker容器启动后添加端口映射

    概要 网上有许多人在查找关于容器启动后能否进行端口映射的问题.我曾经也问过度娘,很遗憾我没找到.本文就这个问题给出一个解决方法,旨在抛砖引玉.本文的思路是使用iptables的端口转发,这也是docker端口映射内部的实现机制,只不过我是显示地写出来罢了,为的就是让查找这个问题的人对docker的端口映射有一个直观的了解. 结论:容器启动后是可以添加端口映射的,但不建议手工添加,最好使用docker提供的功能. 步骤 创建两个容器并进行了端口映射,结果如图所示: 假如,我start一个容器,其内

  • Docker 端口映射详细介绍

    Docker 端口映射: 最近抽空,把Docker 端口映射的资料整理了一下,以便后续项目应用,大家也可以参考下. # Find IP address of container with ID <container_id> 通过容器 id 获取 ip $ sudo docker inspect <container_id> | grep IPAddress | cut -d '"' -f 4 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的.此外

  • Docker学习笔记之Docker端口映射

    最近在学习docker,今天了解了Docker端口映射,给自己留个小笔记,也分享给大家 为什么要端口映射? 在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因为没有端口. 端口映射的指令是什么? docker指令:docker run -p ip:hostPort:containerPort redis 使用-p参数会分配宿主机的端口映射到虚拟机. IP表示主机的IP地址. hostPort表示宿主机的端口. containerPort表示虚拟机的端口. 支持的格

  • docker 动态映射运行的container端口实例详解

    docker动态映射运行的container端口,最近做项目,对于docker动态映射运行的container端口的资料有必要记录下,以便以后在用到, Docker自带了EXPOSE命令,可以通过编写dockerfile加-p参数方便的映射Container内部端口,但是对于已经运行的container,如果你想对外开放一个新的端口,只能编辑dockerfile然后重新build,有点不太方便. 其实docker本身使用了iptables来做端口映射的,所以我们可以通过一些简单的操作来实现动态映

  • docker端口映射及外部无法访问问题

    docker容器内提供服务并监听8888端口,要使外部能够访问,需要做端口映射. docker run -it --rm -p 8888:8888 server:v1 此时出现问题,在虚机A上部署后,在A内能够访问8888端口服务,但是在B却不能访问. 这应该是由于请求被拦截. 一.查看firewall-cmd --state 如果输出的是"not running"则FirewallD没有在运行,且所有的防护策略都没有启动,那么可以排除防火墙阻断连接的情况了. 如果输出的是"

  • Docker端口映射的实现

    docker容器在启动的时候,如果不指定端口映射参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的. 亦可使用Dockerfile文件中的EXPOSE指令来配置. 端口映射可使用-p.-P来实现: -p指定要映射的端口,一个指定端口上只可以绑定一个容器 -P将容器内部开放的网络端口随机映射到宿主机的一个端口上 端口映射支持的格式: ip:hostport:containerport #指定ip.指定宿主机port.指定容器port ip::containerport #指定ip.未指定

  • Docker 动态修改容器端口映射的方法

    前言:Docker端口映射往往是Docker Run命令时通过-p将容器内部端口映射到宿主机的指定端口上,一般来说容器的端口所对应的端口是提前确定需要映射的.但是有些情况下不得不需要临时映射端口,例如Docker中运行着MySQL容器,默认端口是不开放的.那么有什么办法可以让运行中的容器暴露指定的端口呢?客官请往下看---> 方法一:更改Docker配置文件(有风险) 通过修改Docker的配置文件来达到我们的目的,一般来说需要修改以下的文件config.v2.json和hostconfig.j

  • Docker初级网络端口映射的配置

    端口映射 Docker容器启动之前,如果不进行端口映射,在容器外部是无法通过网络来访问容器内的网络应用和服务.因为容器中常常会运行一些网络应用和服务,如果想在容器外部通过网络来访问容器内的网络应用和服务,就需要对该容器进行端口映射,可以通过docker run命令中的-P或-p选项来进行端口映射. 随机端口映射 当通过docker run命令中的-P选项来进行端口映射时,Docker会随机映射一个端口到容器开放的网络端口. 以nginx为例,先拉取nginx的镜像. [root@izoq008r

随机推荐