Docker入门:从零到运行你的第一个容器

Docker将应用程序及其依赖项打包到容器中——可移植、可重现的单元,在任何机器上都以相同方式运行。理解Docker现在是软件开发的基础技能,无论专业方向如何。

为什么Docker重要

Docker解决了”在我机器上能运行”的问题。Docker容器包含应用程序、其运行时、库、环境变量和配置——运行所需的一切。开发者机器、CI/CD流水线和生产服务器都运行相同的容器镜像。操作系统、安装软件和系统配置的差异消失了。

核心概念

镜像(Image):从Dockerfile构建的只读模板(类比:蓝图)。容器(Container):镜像的运行实例(类比:根据蓝图建造的建筑)。Dockerfile:包含构建镜像指令的文本文件。Docker Hub:公共镜像仓库(nginx、postgres、python、node都作为基础镜像可用)。docker-compose:在YAML文件中定义多容器应用程序的工具。

你的第一个容器

安装Docker Desktop(Mac/Windows)或Docker Engine(Linux)。运行:docker run -d -p 8080:80 nginx。这会拉取官方nginx镜像,启动容器,并将容器内部的80端口映射到你机器的8080端口。在浏览器中打开localhost:8080——你会看到nginx欢迎页面。你在几秒内运行了一个Web服务器,没有在本地安装nginx。

构建你自己的镜像

在你的项目目录中创建Dockerfile:

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]

运行docker build -t my-app .来构建它。运行docker run -p 5000:5000 my-app来启动它。你的Python应用在包含所有依赖项的容器中运行。

用于多服务的docker-compose

大多数应用程序需要与应用一起运行数据库。docker-compose.yml定义两个服务。docker compose up启动所有服务;docker compose down停止它们。这取代了在本地机器上安装PostgreSQL、Redis或任何其他服务的需求。

上一篇 Docker for Developers: From Zero to Running Your First Container
下一篇 Nuremberg's Food: Bratwurst, Lebkuchen, and the Christmas Market