-
问题描述
docker自身是有一个网络系统的,对于一个运行在docker内的程序的某个端口(比如training/webapp这个镜像下的flask的5000端口)。如果要进行访问,详细的过程是:
- 访问服务器的ip:port
- 公网ip:port --> docker的ip:port
- 通过docker的ip:port连接到某个api服务
总共有三层逻辑:服务器层、容器层、应用层。
最终计算请求数据的是容器内的应用,但是这个应用的端口是无法在公网上查看的,这就需要使用docker的端口映射功能。
-
端口映射
docker默认是不对外开放端口的。
默认情况下,容器可以主动访问到外部网络的连接,但是外部网络无法访问到容器。
所以如果在容器内运行网络应用和服务是无法提供给外界使用的,端口映射功能可以实现公网上访问容器内部的网络应用。
-p 可以指定要映射的端口,并且在一个指定端口上只可以绑定一个容器 -P 随机映射一个主机端口(这个是随机的)到容器内部开放的网络端口(这个端口是程序设定的)“映射”这个概念,是从外向内;是指将外网中访问的port映射到容器内部的port上。
支持格式:
# 绑定宿主机IP及端口,服务器主机上可能有多快网卡 ip:hostPort:containerPort # 绑定宿主机IP ip::containerPort # 绑定宿主机端口 hostPort:containerPort -
案例
在
阿里云ubuntu16.04系统上运行菜鸟教程中给出的training/webapp案例。 -
docker run -Pdocker run -d -P training/webapp python app.py通过
docker -ps查看,PORTS为0.0.0.0:32769->5000/tcp。这个端口信息的意思是:
- 外界所有ip地址(0.0.0.0)
- 都可以访问本服务器的32769端口(本服务器公网47.240.xx.xx),即访问47.240.xx.xx:32769
- 就相当于访问training/webapp容器中的app.py程序所开放的5000端口
-
docker run -prunoob@runoob:~$ docker run -d -p 80:5000 training/webapp python app.py但是阿里云服务器有防火墙,默认只开放了22、80、443三个端口。
因此
-P默认映射的32769端口是无效的,用-p将容器内5000端口映射为主机服务器上的80端口方可有效。当然,开放服务器的32769也是一个道理。
此时访问
47.240.xx.xx:80就可以得到 Hello world!。
-p 可以多次使用指定多个端口映射docker run -p 80:5000 -p 443:5100 training/webapp python app.pyDocker进行端口绑定时,默认会绑定TCP端口。还可以使用udp标记来绑定udp端口:
sudo docker run -d --name experss-app -p 3000:3000/udp itbilu/express-app -
docker port id/name>>> docker port container_id # or >>> docker port container_name 5000/tcp -> 0.0.0.0:80查看指定容器的端口映射。
-
References
相关推荐
CentOS7下OpenVPN Access Server 2.12.0安装与智能分流配置指南
本文详细介绍了在CentOS7系统上安装OpenVPN Access Server 2.12.0并进行智能分流配置的完整指南。从环境准备、核心安装到智能分流策略的深度配置,提供了经过验证的优化方案和故障排查技巧,帮助用户实现高效的VPN网关部署和流量管理。
阿里云Linux使用docker服务
同时,当你的系统是安装在云上时,例如安装在阿里云上,那么此时需要登陆阿里云服务器,找到你的实例,然后开启阿里云上的防火墙端口。我们知道,docker创建的容器是不能直接被外部访问的。因此,如果要访问就需要将容器的访问端口映射到系统的端口。也就是说,系统开放了端口并不表明服务器上的防火墙开启了端口,这是两个级别的防火墙。如果系统开启了防火墙,首先要放开系统的端口9000/TCP。阿里云服务器上开放了端口,就可以登陆你的容器面板了。例如,创建fdocker的可视化面板。
车载以太网抓包实战:100BASE-T1/1000BASE-T1高效监控方案解析
本文深入解析了车载以太网100BASE-T1/1000BASE-T1的高效抓包监控方案。针对智能汽车开发中的故障排查与性能测试需求,详细对比了交换机镜像、TAP分流和捕获模块三大主流方案的原理、核心优势与适用场景,并提供了基于实战经验的选型指南与操作避坑要点,帮助工程师精准定位网络问题。
【Nginx】Docker配置ngnix,实现同服务器ip多站点多域名
Docker配置ngnix,实现同服务器ip,多域名映射多站点
YOLOv8改进——引入可变形卷积DCNv3
本文只讲解在YOLOv8的代码中添加DCNv3的操作流程, 具体的原理参见上述的链接~是pytorch实现的版本,只要基础的pytorch环境安装正确就不会出错。是C++实现版本,必须先在上一步编译成功,或者安装好了轮子,否则会报错。但是在实际的训练过程中,C++版本的运行速度更快,推荐使用C++版本。(具体怎么修改,都可以自己决定,然后通过实验看看效果如何)文件夹,该文件夹下的内容就是实现DCNv3算子的核心代码。中,下图中的列表里添加。
LVGL在嵌入式Linux系统上的高效移植与优化实践
本文详细介绍了在嵌入式Linux系统(特别是ARM平台)上移植和优化LVGL图形库的完整实践流程。内容涵盖从开发环境搭建、代码获取、CMake工程配置,到关键配置文件定制、显示与输入设备端口移植,以及内存、渲染等核心性能优化技巧,旨在帮助开发者高效构建流畅的嵌入式UI应用。
阿里云服务器上配置Docker 以及常用命令讲解
Docker
华为非AI方向0603笔试真题-爆破小游戏(详细思路+多语言题解)
华为非AI方向0603笔试第二题【爆破小游戏】,提供详细思路讲解以及代码实现。
阿里云Docker操作及镜像安装使用
linux安装Docker 安装docker yun insatll docker 启动 Docker 后台服务 sudo systemctl start docker 重启 Docker服务 sudo systemctl restart docker Docker安装vim mysql忽略大小写第一次需要先按装vim https://www.cnblogs.com/zhi-leaf/p/10590781.html docker命令 docker ps #查看已经运行的镜像 doc..
【LAMMPS学习】八、基础知识(2.1)2D模拟
此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。LAMMPS 源代码分发的examples目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各种模拟。
【PX4学习笔记】3. PX4 固件烧写(1 探索过程)
飞控型号:cube orange【PX4官方用户指南中关于cube orange的描述】 飞控载板型号:Mini Carrier Board【迷你载板说明文档】 固件安装参考:The Cube User Manual V1.0
阿里云 ECS 的Docker为什么无法端口映射
当开发者尝试在阿里云ECS(Elastic Compute Service)上部署应用程序,并使用Docker进行容器化时,偶尔会遭遇端口映射失败的问题。这不仅影响了应用的正常运行,还可能导致一系列连锁反应,如服务不可达、负载均衡失效等。本文将从多个角度深入剖析这个问题的本质原因,并提出一些可行的解决策略,旨在帮助广大开发者更好地理解和应对类似挑战。
AI驱动的材料科学:从分子设计到性能预测
AI驱动的材料科学:从分子设计到性能预测 关键词: 材料科学 人工智能 分子设计 性能预测 机器学习 深度学习 摘要:
阿里云服务器使用docker安装mysql
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
使用阿里云服务器安装docker,并用nginx示例
前言 之前对docker了解不多,自从使用了一次之后,就感觉这个产品对开发者实在是太友好了,可以迅速在Linux,window等平台部署服务。常见的有数据库,nginx,消息队列,redis等。利用docker部署上述服务,或者其他的服务非常方便,具体有多方便,看下面的使用。我相信你使用一次时候,不会再想利用原生方式部署或者安装了。 概要 1、首先你需要购买一个阿里云服务器,这里就不多说了。请读者自行购买,或者是使用虚拟机安装Centos也可以。 2、如果使用阿里云服务器,需要从控制台获得服务器的公网ip和
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
理解Docker容器连接实现容器间通信
Docker网络 Docker容器默认不开放任何端口,即外部不能访问容器内部服务,但容器内部是可以正常访问外部网络服务的。 如果想要实现外部访问容器内部网络服务,可以通过端口映射,将容器所在服务器的公网ip:port 映射到容器内部端口上。 关于端口映射的详情,参见《以阿里云服务器为例理解docker端口映射》 容器间的相互访问,有三种实现方式: 端口映射 外界访问独立容器 容器连接L...
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
阿里云ECS上Docker端口映射全链路排障指南
端口映射是容器网络通信的基础机制,其本质是通过宿主机iptables实现DNAT流量转发,将外部请求定向至容器内部服务。在云环境中,该过程需协同云平台安全组、操作系统防火墙(如firewalld)及Docker自身网络规则三层策略。理解这一‘公网→安全组→系统防火墙→iptables→容器’的四层链路,是解决‘容器运行但无法访问’问题的核心。本文聚焦阿里云ECS典型场景,结合netstat、tcpdump、iptables等工具,详解端口映射失效的常见根因与可验证的修复路径,覆盖从单容器部署到Docker
云原生尝试——Docker部署node项目
主要讲解docker基础实用实战
Docker端口映射原理与阿里云ECS实战排障指南
Docker端口映射本质是iptables DNAT流量重定向,而非简单‘开放端口’。其工作原理依赖宿主机网络栈(iptables规则)、Docker虚拟网桥(docker0)及容器内应用监听地址(必须为0.0.0.0)三者协同。技术价值在于实现容器网络隔离与服务对外暴露的平衡,广泛应用于云原生部署、微服务网关、CI/CD测试环境等场景。在阿里云ECS等公有云环境中,还需叠加安全组策略形成三层过滤模型,任一环节失效均导致服务不可访问。本文聚焦端口映射的核心机制、典型故障现象(Connection refus
阿里云服务器部署+docker学习
假设我们有一个服务器 ip xxx.xxx.xxx.xxx 密码 xxxxx 用户 root 并且有一个项目hello-world,现在需要使用ssh+docker把它搬到服务器上。 远程连接服务器 ssh root@xxx.xxx.xxx.xxx !ssh #非第一次连接可用,会自动使用上次ssh的用户名和ip 然后按照提示输入密码xxxxx,就可以通过终端操作服务器了。 本机和服务器之间的数据传输 语法和栗子: scp 本机源路经 用户名@ip:目标路径 scp hello-world.zip r
docker入门
1.连接阿里云服务器 ssh root@公网ip 2.docker 为什么比vm快 因为docker不需要像虚拟机一样重新加载一个操作系统内核,而是利用宿主机的操作系统 3.docker启动一个应用 流程 docker首先在本机寻找镜像。如果本机有则下载运行,若没有则在dockerhub上下载,若dockerhub上没有找到这个镜像则返回错误,若能找到则下载运行 4.docker是怎么工作的 docker是c/s结构 Docker-client通过Socket访问docker-server 在serve
docker部署后端
Docker部署后端 基础环境是在阿里云服务器 参考文章,见本博客栏Dockerfile部署LNMP 后端连接redis时,需要注意IP地址的问题。 Docker容器在生成镜像时,berdge网络(桥接网络)是可以访问到容器外的宿主系统网络。也就是说,要连接的redis的ip地址请写外部的ip地址。阿里云的服务器写内网地址。 文件结构 test文件夹 ---> do...
阿里云服务器从零部署Docker应用:新手避坑与实战指南
云计算与容器化技术已成为现代应用部署的核心基础设施。其原理在于通过虚拟化技术将计算、存储和网络资源池化,并以服务的形式提供,从而实现资源的弹性伸缩和高效利用。Docker作为轻量级容器技术的代表,通过镜像封装应用及其依赖环境,实现了“一次构建,处处运行”的标准化部署,极大提升了开发与运维效率。在工程实践中,结合云服务器进行Docker部署,能够快速搭建可移植、易扩展的微服务架构,尤其适用于Web应用、API服务及持续集成/持续交付(CI/CD)流水线等场景。本文聚焦于阿里云ECS实例,针对新手在配置选择、安
Docker从入门到干事,看这一篇就够了
这表示 Docker 正在运行。我们可以在命令行执行来查看版本号。阿里云(linux)基于阿里云服务器的安装方式,推荐!
Docker配置mysql以及宿主机容器目录挂载
mysql,默认的监听端口是3306,如果你不修改这里默认的话,那么这里的第二个端口一定是3306,如果你这里随便写一个,是无法正确映射到的。将来我们在我们主机连接远程服务器,我们的远程服务器的注解地址加上这个端口就是我们这个mysql容器的访问链接。创建的命令就不说了。需要注意的是如果你的原来的系统本来就有一个mysql的版本并且占用了你的3306端口,那么我的建议是杀死是比较明智简单的操作。然后测试后我们去看我们之前挂载的目录文件有没有新的数据出现,你看这里记录了一些非常详细的信息。...
docker安装mysql和mongoDB
docker安装mysql和mongoDB
289



被折叠的 条评论
为什么被折叠?



