Docker 入门:新手第一次用容器跑起一个 Python 小服务

举报
yd_299485664 发表于 2026/10/21 23:34:24 2026/10/21
【摘要】 第一次用 Docker 是什么体验?本文从新手视角讲清镜像与容器的区别,记住 docker --version / ps / images 三条基本命令,跟着一个最小示例把 Python 小服务跑进容器,并总结四个新手常见坑,帮你一次入门。

第一次听说 Docker 时,我以为它又是一个"虚拟机"。直到亲手把一个 Python 小服务装进容器、跑起来,再删掉重来只用了几秒钟,才真正明白它为什么这么受欢迎。下面记录我第一次用 Docker 的完整过程,适合和我一样的新手。

一、先搞懂两个概念:镜像与容器

可以把**镜像(Image)**理解成"安装包 + 说明书":它是一个只读模板,里面装好了运行某个程序需要的一切——操作系统基础文件、Python 解释器、依赖库,以及你的代码。

**容器(Container)**则是镜像运行起来的"实例",就像用安装包实际安装并启动了一个 App。同一个镜像可以启动多个相互隔离的容器;删掉容器不影响镜像,随时可以再起一个一模一样的。

一句话:镜像是模板,容器是运行中的实例。

二、安装后先记住三条基本命令

装好 Docker Desktop(Windows/Mac)或 Docker Engine(Linux)并启动后,打开终端,先跑这三条:

docker --version   # 确认安装成功,能看到版本号就对了
docker ps          # 查看正在运行的容器,刚装完一般是空的
docker images      # 查看本地已有的镜像,刚装完一般也是空的

这三条是之后所有操作的"体检表",出问题先看它们。

三、最小示例:把 Python 小服务装进容器

假设有一个最简单的 Python 服务 app.py:

from http.server import BaseHTTPRequestHandler, HTTPServer

class Handler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.end_headers()
        self.wfile.write(b"Hello from Docker!")

HTTPServer(("0.0.0.0", 8000), Handler).serve_forever()

在同一目录写一个 Dockerfile(注意文件名没有后缀):

FROM python:3.12-slim
WORKDIR /app
COPY app.py .
EXPOSE 8000
CMD ["python", "app.py"]

然后两步跑起来:

docker build -t my-python-service .                            # 按 Dockerfile 构建镜像并命名
docker run -d -p 8000:8000 --name demo my-python-service   # 后台启动容器并映射端口

打开浏览器访问 http://localhost:8000,看到 “Hello from Docker!” 就成功了。玩够了用 docker stop demo 停掉,再 docker rm demo 删掉容器——干干净净,不留痕迹。

四、新手最容易踩的四个坑

  1. 端口没映射就访问不了:容器里的 8000 端口与宿主机是隔离的,忘记 -p 8000:8000 就会连接失败,这是新手第一大坑。
  2. Docker 没启动就敲命令:终端报 “Cannot connect to the Docker daemon”,先去启动 Docker Desktop 再说。
  3. 构建时漏了最后那个点:docker build -t my-python-service . 末尾的 . 代表当前目录,漏掉会报错。
  4. 容器名重复:--name demo 起过的名字,在删掉旧容器前不能复用,报错时先 docker rm 掉旧的。

写在最后

Docker 的学习曲线其实很平缓:理解"镜像是模板、容器是实例",记住 ps / images / run 这一套,再亲手跑通一个小服务,就算入门了。接下来可以继续学数据卷(持久化数据)、Docker Compose(一次编排多个容器),那是下一篇的事了。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。