Docker基础 - 一个web应用实例
通过上文我们已经基本了解了docker的结构(仓库,镜像,容器)以及跑docker应用了;本文将通过介绍一个web应用:向你展示如何进行主机与web容器之间的通信,这是web开发者常用的;第二,贯穿上文中内容, 且为我们后续讲解网络提供基础。一个web 应用运行和访问# 运行一个 web 应用我们只需要找一个webapp的镜像即可,无需自己再写个程序啥的。接下来让我们尝试使用 docker 构建一个 web 应用程序。这里找了一个training/webapp,它是将在docker容器中运行一个 Python Flask web应用。[root@pdai ~]# docker pull training/webapp Using default tag: latest latest: Pulling from training/webapp Image docker.io/training/webapp:latest uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/ e190868d63f8: Pull complete 909cd34c6fd7: Pull complete 0b9bfabab7c1: Pull complete a3ed95caeb02: Pull complete 10bbbc0fc0ff: Pull complete fca59b508e9f: Pull complete e7ae2541b15b: Pull complete 9dd97ef58ce9: Pull complete a4c1b0cb7af7: Pull complete Digest: sha256:06e9c1983bd6d5db5fba376ccd63bfa529e8d02f23d5079b8f74a616308fb11d Status: Downloaded newer image for training/webapp:latest docker.io/training/webapp:latest [root@pdai ~]# docker images | grep webapp training/webapp latest 6fae60ef3446 4 years ago 349MB紧接着,我们启动这个webapp[root@pdai ~]# docker run -d -P training/webapp python app.py ec3eb9ae218494d5aa5902c1ca4435733567b5e81319f02e5d2509d45cbc25da [root@pdai ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ec3eb9ae2184 training/webapp "python app.py" 18 seconds ago Up 17 seconds 0.0.0.0:32768-5000/tcp gifted_agnesi参数说明:-d:让容器在后台运行。-P:将容器内部使用的网络端口映射到我们使用的主机上。# 访问webapp我们注意看上述PORTS部分为0.0.0.0:32769-5000/tcpDocker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32768 上。从主机上看,它应该暴露了端口32768所以我们来验证下:[root@pdai ~]# netstat | grep 32768 [root@pdai ~]# netstat -nltp | grep 32768 tcp6 0 0 :::32768 :::* LISTEN 2227/docker-proxy [root@pdai ~]# curl localhost:32768 Hello world!这意味着,你浏览器你可以输入localhost:32768访问这个页面。从容器内部看,它应该有一个端口5000我们再进容器验证下:[root@pdai ~]# docker exec -it ec3eb9ae2184 /bin/bash root@ec3eb9ae2184:/opt/webapp# netstat -nltp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 1/python所以我们的理解是对的。# 设置自定义映射端口我们发现,通过-P参数映射到主机上的端口是随机,能否自定义端口呢?我们可以通过 -p 参数来设置不一样的端口;为了对比,我们再起一个容器实例:[root@pdai ~]# docker run -d -p 5001:5000 training/webapp python app.py 5da3588d5bc43a9ed3aa61fb87f98220c9719d2879b616404d443aaae6cee77a [root@pdai ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5da3588d5bc4 training/webapp "python app.py" 33 seconds ago Up 31 seconds 0.0.0.0:5001-5000/tcp hopeful_bardeen ec3eb9ae2184 training/webapp "python app.py" 22 minutes ago Up 22 minutes 0.0.0.0:32768-5000/tcp gifted_agnesi [root@pdai ~]# netstat -nltp | grep 5001 tcp6 0 0 :::5001 :::* LISTEN 2591/docker-proxy [root@pdai ~]# curl localhost:5001 Hello world!所以你看到跑了两个内部端口都是5000的web实例,新的容器内部的 5000 端口映射到我们本地主机的 5001 端口上。# 其它常用功能# 查看web 应用网络端口通过 docker ps 命令可以查看到容器的端口映射,docker 还提供了另一个快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号。上面我们创建的 web 应用容器 ID 为 5da3588d5bc4 名字为 hopeful_bardeen。我可以这样查看容器端口的映射情况:[root@pdai ~]# docker port 5da3588d5bc4 5000/tcp - 0.0.0.0:5001 [root@pdai ~]# docker port hopeful_bardeen 5000/tcp - 0.0.0.0:5001# 查看 WEB 应用程序日志docker logs [ID或者名字] 可以查看容器内部的标准输出。

相关新闻

CesiumJS文化遗产数字化解决方案:构建下一代沉浸式虚拟博物馆的技术架构与实践指南

CesiumJS文化遗产数字化解决方案:构建下一代沉浸式虚拟博物馆的技术架构与实践指南

CesiumJS文化遗产数字化解决方案:构建下一代沉浸式虚拟博物馆的技术架构与实践指南 【免费下载链接】cesium An open-source JavaScript library for world-class 3D globes and maps :earth_americas: 项目地址: https://gitcode.com/GitHub_Trending/ce/cesium …

2026/6/20 23:05:33阅读更多 →
cann/ge:GE 架构介绍

cann/ge:GE 架构介绍

GE 架构介绍 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前…

2026/6/20 23:05:33阅读更多 →
MarkItDown:一键解锁多格式文档转换的Python利器

MarkItDown:一键解锁多格式文档转换的Python利器

MarkItDown:一键解锁多格式文档转换的Python利器 【免费下载链接】markitdown Python tool for converting files and office documents to Markdown. 项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown 在现代知识管理工作中,处理各…

2026/6/20 23:05:33阅读更多 →
QuPath终极指南:5步开启生物医学图像分析的完整学习路径

QuPath终极指南:5步开启生物医学图像分析的完整学习路径

QuPath终极指南:5步开启生物医学图像分析的完整学习路径 【免费下载链接】qupath QuPath - Open-source bioimage analysis for research 项目地址: https://gitcode.com/gh_mirrors/qu/qupath QuPath是一款功能强大的开源生物医学图像分析工具,专…

2026/6/21 0:25:44阅读更多 →
基于GNN的家教系统

基于GNN的家教系统

6月20日 感觉今天家教非常的一般,还是有一些收入,好累,第一次睡了回笼觉,真的好爽,不过我还没有看论文呜呜呜

2026/6/21 0:25:44阅读更多 →
LookScanned.io:3步让数字PDF拥有真实扫描质感的前端解决方案

LookScanned.io:3步让数字PDF拥有真实扫描质感的前端解决方案

LookScanned.io:3步让数字PDF拥有真实扫描质感的前端解决方案 【免费下载链接】lookscanned.io 📚 LookScanned.io - Make your PDFs look scanned 项目地址: https://gitcode.com/gh_mirrors/lo/lookscanned.io 在数字化办公时代,PDF…

2026/6/21 0:25:44阅读更多 →
如何快速提升英雄联盟游戏效率:League Akari 智能助手的完整使用教程

如何快速提升英雄联盟游戏效率:League Akari 智能助手的完整使用教程

如何快速提升英雄联盟游戏效率:League Akari 智能助手的完整使用教程 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari…

2026/6/21 0:25:44阅读更多 →
3步快速解密微信聊天记录:免费开源工具让你的数据自己做主

3步快速解密微信聊天记录:免费开源工具让你的数据自己做主

3步快速解密微信聊天记录:免费开源工具让你的数据自己做主 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 还在为微信聊天记录无法备份而烦恼吗?想要更换手机却舍不得那些珍贵的对…

2026/6/21 0:25:44阅读更多 →
3步解决DirectDraw游戏兼容性问题的终极方案

3步解决DirectDraw游戏兼容性问题的终极方案

3步解决DirectDraw游戏兼容性问题的终极方案 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/DDrawCompat 你是否曾在…

2026/6/21 0:20:44阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/21 0:00:40阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/21 0:00:40阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/21 0:00:40阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/21 0:00:40阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/21 0:00:40阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/21 0:00:40阅读更多 →