Docker 入门:新手第一次用容器跑起一个 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 删掉容器——干干净净,不留痕迹。
四、新手最容易踩的四个坑
- 端口没映射就访问不了:容器里的 8000 端口与宿主机是隔离的,忘记
-p 8000:8000就会连接失败,这是新手第一大坑。 - Docker 没启动就敲命令:终端报 “Cannot connect to the Docker daemon”,先去启动 Docker Desktop 再说。
- 构建时漏了最后那个点:
docker build -t my-python-service .末尾的.代表当前目录,漏掉会报错。 - 容器名重复:
--name demo起过的名字,在删掉旧容器前不能复用,报错时先docker rm掉旧的。
写在最后
Docker 的学习曲线其实很平缓:理解"镜像是模板、容器是实例",记住 ps / images / run 这一套,再亲手跑通一个小服务,就算入门了。接下来可以继续学数据卷(持久化数据)、Docker Compose(一次编排多个容器),那是下一篇的事了。
- 点赞
- 收藏
- 关注作者
评论(0)