Docker入门教程:从安装到部署第一个容器的完整指南

Docker已经成为现代应用部署的标准工具。本教程将从零开始,带你了解Docker的核心概念并完成第一个容器部署。

什么是Docker?

Docker是一个开源的应用容器引擎,让开发者可以打包应用及其依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上。

1. 安装Docker

Ubuntu/Debian系统

# 更新包索引
sudo apt update

# 安装依赖
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release

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

# 添加仓库
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
sudo systemctl start docker
sudo systemctl enable docker

CentOS/RHEL系统

# 安装依赖
sudo yum install -y yum-utils

# 添加仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io

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

2. 验证安装

# 运行测试容器
sudo docker run hello-world

# 查看版本
docker --version
docker-compose --version

3. Docker核心概念

镜像(Image)

镜像是Docker的构建块,类似于虚拟机的模板。镜像是只读的。

容器(Container)

容器是镜像的运行实例。可以把容器理解为轻量级的虚拟机。

仓库(Registry)

Docker Hub是Docker官方维护的公共仓库,包含大量镜像。

4. 常用Docker命令

# 搜索镜像
docker search nginx

# 拉取镜像
docker pull nginx:latest

# 运行容器
docker run -d -p 80:80 --name webserver nginx

# 查看运行中的容器
docker ps

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

# 进入容器
docker exec -it webserver bash

# 停止容器
docker stop webserver

# 删除容器
docker rm webserver

# 删除镜像
docker rmi nginx

5. 部署第一个Nginx网站

步骤1:创建项目目录

mkdir -p ~/docker-nginx/html
cd ~/docker-nginx

步骤2:创建HTML页面

cat > html/index.html << 'EOF'



    Docker Nginx Demo


    

Hello Docker!

This page is served by Nginx in a Docker container.

EOF

步骤3:运行Nginx容器

docker run -d \
  -p 8080:80 \
  -v ~/docker-nginx/html:/usr/share/nginx/html \
  --name my-nginx \
  nginx:alpine

步骤4:验证

curl http://localhost:8080

6. 使用Docker Compose管理多容器

创建docker-compose.yml

version: '3.8'
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    restart: always
  
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: myapp
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

启动服务

docker-compose up -d

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down

7. 数据持久化

容器删除后数据会丢失,需要使用Volume持久化:

# 创建volume
docker volume create my-data

# 使用volume
docker run -d -v my-data:/app/data nginx

# 查看volume
docker volume ls

# 删除volume
docker volume rm my-data

8. 构建自定义镜像

创建Dockerfile

# 使用Python官方镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 复制文件
COPY requirements.txt .
COPY app.py .

# 安装依赖
RUN pip install -r requirements.txt

# 暴露端口
EXPOSE 5000

# 启动命令
CMD ["python", "app.py"]

构建镜像

docker build -t my-python-app .

9. 常用最佳实践

  • 使用精简镜像:选择alpine或slim版本
  • 多阶段构建:减少最终镜像大小
  • 不要以root运行:创建专用用户
  • 使用.dockerignore:排除不需要的文件
  • 定期更新镜像:确保安全

10. 故障排查

# 查看容器日志
docker logs my-container

# 进入容器调试
docker exec -it my-container sh

# 查看容器详细信息
docker inspect my-container

# 查看资源使用
docker stats

总结

Docker学习曲线平缓,但功能强大。掌握Docker后,你可以:

  • 快速部署应用
  • 实现环境一致性
  • 简化运维工作
  • 提高资源利用率
📖 下一步:建议学习Docker网络、Docker Swarm或Kubernetes,进一步提升容器编排能力。

发表评论