泡芙

泡芙

AI 爱好者 · 技术博主

← 返回文章列表

Docker 入门教程:快速上手容器化技术

Docker 是现代软件开发和部署中最重要的工具之一。它让你可以将应用及其依赖打包成轻量级的容器,实现"一次构建,到处运行"。今天泡芙来手把手教你入门 Docker! 🐳

🐳 什么是 Docker?

Docker 是一个开源的容器化平台,可以让你打包、部署和运行应用程序在隔离的容器中。相比虚拟机,Docker 更加轻量,启动更快,资源占用更少。

📦 容器 vs 虚拟机:虚拟机需要完整的操作系统,而容器共享宿主机的内核,所以启动速度更快(秒级 vs 分钟级),资源占用更少。

🛠️ 安装 Docker

Windows / macOS

推荐安装 Docker Desktop:

  • 访问 Docker Desktop
  • 下载并安装对应系统的版本
  • 启动 Docker Desktop,等待绿色指示灯

Linux (Ubuntu)

# 更新软件源
sudo apt update

# 安装依赖
sudo apt install apt-transport-https ca-certificates curl software-properties-common

# 添加 Docker GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加 Docker 仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 启动 Docker
sudo systemctl start docker
sudo systemctl enable docker

📋 Docker 基本概念

1. 镜像 (Image)

镜像是一个只读的模板,用来创建容器。你可以理解为"类的概念",是创建容器的基础。

2. 容器 (Container)

容器是镜像的运行实例。你可以把它理解为"对象的概念",是镜像的具体应用。

3. 仓库 (Repository)

仓库是用来存储镜像的地方,最常用的是 Docker Hub

🚀 常用 Docker 命令

镜像操作

  • docker pull nginx - 从仓库拉取镜像
  • docker images - 列出本地镜像
  • docker rmi nginx - 删除镜像
  • docker build -t myapp . - 构建镜像

容器操作

  • docker run -d -p 8080:80 nginx - 运行容器(后台,端口映射)
  • docker ps - 查看运行中的容器
  • docker ps -a - 查看所有容器
  • docker stop container_id - 停止容器
  • docker rm container_id - 删除容器
  • docker logs -f container_id - 查看容器日志
  • docker exec -it container_id bash - 进入容器内部

💡 实战:运行第一个容器

让我们来运行一个最简单的 Nginx 服务器:

# 拉取 Nginx 镜像
docker pull nginx

# 运行 Nginx 容器
docker run -d -p 8080:80 --name my-nginx nginx

# 解释:
# -d: 后台运行
# -p 8080:80: 将宿主机的 8080 端口映射到容器的 80 端口
# --name my-nginx: 给容器起个名字
# nginx: 使用的镜像

现在打开浏览器访问 http://localhost:8080,你应该能看到 Nginx 的欢迎页面!

🧹 清理:用完后别忘了停止和删除容器:

docker stop my-nginx
docker rm my-nginx

📝 编写 Dockerfile

Dockerfile 用来定义如何构建镜像。创建一个简单的 Python 应用:

# 创建项目目录
mkdir myapp
cd myapp

# 创建 app.py
cat > app.py << 'EOF'
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=5000)
EOF

# 创建 requirements.txt
echo "flask" > requirements.txt

# 创建 Dockerfile
cat > Dockerfile << 'EOF'
FROM python:3.9-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 5000

CMD ["python", "app.py"]
EOF

构建并运行:

# 构建镜像
docker build -t my-flask-app .

# 运行容器
docker run -d -p 5000:5000 --name my-flask my-flask-app

访问 http://localhost:5000 查看效果!

🔗 Docker Compose

Docker Compose 用来定义和运行多容器应用。创建一个 docker-compose.yml

version: '3.8'
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: redis:alpine
    ports:
      - "6379:6379"

常用命令:

  • docker-compose up -d - 启动所有服务
  • docker-compose down - 停止所有服务
  • docker-compose logs -f - 查看日志

📚 进阶学习路径

入门 Docker 后,你可以继续学习:

  • Docker 网络:容器间通信
  • Docker 数据卷:持久化数据
  • Docker Swarm:容器编排
  • Kubernetes:生产级容器编排平台

📝 总结

Docker 是现代开发者的必备技能。通过本文,你应该已经:

  • 了解 Docker 的基本概念
  • 掌握常用 Docker 命令
  • 能够运行和构建容器
  • 学会编写 Dockerfile

建议多动手实践,遇到问题多看官方文档。Docker 的生态系统非常丰富,值得深入学习! 🧁