container shipping docker

Docker 入门实战:从零搭建容器化应用

Docker 已经成为现代开发的标配。本文用最直白的方式,带你从零掌握 Docker,包括核心概念、常用命令和实战案例。

Docker 已经成为现代开发的标配,但很多新手还是会被各种概念搞晕。今天我用最直白的方式,带你从零掌握 Docker。

什么是 Docker?

简单来说,Docker 就是一种”容器化”技术。它能把你的应用和运行环境一起打包成一个独立的”盒子”,这个盒子到哪里都能跑。

类比:Docker 就像是”集装箱”。无论你是运水果还是运电脑,用的都是同一种箱子。同理,无论你开发的是网站还是 AI 模型,用的都是同一种 Docker 容器。

核心概念

镜像(Image)

镜像就是模板,可以理解为”class”。你不能直接运行一个 class,得先实例化成 object。

# 拉取一个现成的镜像
docker pull ubuntu:20.04

容器(Container)

容器就是镜像的实例,可以理解为一个”running object”。

# 运行一个容器
docker run -it ubuntu:20.04 /bin/bash

Dockerfile

Dockerfile 是用来构建镜像的”配方”。

FROM ubuntu:20.04
RUN apt-get update
RUN apt-get install -y python3
COPY ./app /app
WORKDIR /app
CMD ["python3", "app.py"]

常用命令

# 查看运行中的容器
docker ps

# 查看所有容器(包括已停止的)
docker ps -a

# 构建镜像
docker build -t myapp:1.0 .

# 运行容器
docker run -d -p 8080:80 myapp:1.0

# 停止容器
docker stop container_id

# 删除容器
docker rm container_id

实战:一个最简单的 Python Web 应用

第一步:创建项目

mkdir myapp && cd myapp
touch app.py
touch Dockerfile

第二步:编写 app.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello from Docker!'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=80)

第三步:编写 Dockerfile

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

第四步:构建和运行

docker build -t myapp .
docker run -p 5000:5000 myapp

现在打开浏览器访问 http://localhost:5000,就能看到”Hello from Docker!”了。

为什么要用 Docker?

  • 环境一致:开发、测试、生产环境完全一致,不再有”在我电脑上能跑”的问题
  • 隔离性好:每个应用独立运行,不会互相影响
  • 部署简单:一行命令就能部署,rollback 也非常方便
  • 资源利用率高:比虚拟机轻量很多,一台机器能跑几十个容器

总结

Docker 是现代开发者的必备技能。这篇文章只是入门,真正的精髓在于实践。建议你把一个自己的小项目 Docker 化,感受一下它的威力。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注