Docker安装与基础使用教程:从0开始快速上手容器化技术

Docker是目前最热门的容器化技术之一。本教程将从零开始带你安装并使用Docker,适合小白入门。

为什么需要Docker?

在传统开发中,部署应用需要在服务器上安装各种依赖环境,一旦出现版本不一致就会导致"在本地能跑,部署就报错"的问题。Docker通过容器隔离技术解决了环境一致性问题,让应用在任何环境下都能稳定运行。

使用Docker的优点:

  • ✅ 环境一致性 — 开发、测试、生产环境完全一致
  • ✅ 快速部署 — 几秒钟就能启动一个服务
  • ✅ 资源节省 — 多个容器共享宿主机资源,占用更少
  • ✅ 便于扩展 — 一键复制容器进行水平扩展

环境准备

本教程在 CentOS 7 / Ubuntu 20.04 / Windows 10 环境下均可操作。

安装 Docker(Ubuntu/Debian):

# 更新系统
sudo apt update

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

# 添加 Docker 官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 添加 Docker 软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.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 -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

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

# 验证安装
docker version

安装 Docker(CentOS):

# 卸载旧版本
sudo yum remove docker docker-client docker-common docker-engine

# 添加 Docker 仓库
sudo tee /etc/yum.repos.d/docker-ce.repo << 'EOF'
[docker-ce-stable]
name=Docker CE Stable
baseurl=https://download.docker.com/linux/centos/7/x86_64/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
EOF

# 安装
sudo yum install -y docker-ce
sudo systemctl start docker
sudo systemctl enable docker

# 验证
docker version

安装 Docker(Windows):

从Docker官网下载 Docker Desktop for Windows,直接安装即可。安装后需要开启 Hyper-V 或 WSL2。

基本命令详解

镜像相关命令

# 拉取镜像
docker pull nginx        # 从 Docker Hub 拉取 nginx 镜像
docker pull redis:7.0    # 拉取指定版本的 Redis 镜像

# 查看本地镜像
docker images

# 删除镜像
docker rmi nginx

# 搜索镜像
docker search nginx

容器相关命令

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

# 查看容器
docker ps          # 运行中的容器
docker ps -a       # 所有容器

# 进入容器
docker exec -it mynginx /bin/bash

# 停止/启动/重启
docker stop mynginx
docker start mynginx
docker restart mynginx

# 删除容器
docker rm mynginx       # 删除已停止容器
docker rm -f mynginx    # 强制删除

# 查看日志
docker logs mynginx
docker logs -f mynginx   # 实时跟踪

端口与文件映射

# 端口映射
docker run -d -p 8080:80 --name web nginx

# 文件映射
docker run -d -p 8080:80 -v /home/user/html:/usr/share/nginx/html --name web nginx

# 数据卷
docker volume create mydata
docker run -d -v mydata:/usr/share/nginx/html --name web nginx
docker volume ls
docker volume rm mydata

Docker Compose 批量管理

Docker Compose 可以在一个 docker-compose.yml 文件中定义多个容器服务。

docker-compose.yml 示例:

version: '3.8'
services:
  nginx:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    restart: unless-stopped

  redis:
    image: redis:7
    restart: unless-stopped

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - mysql_data:/var/lib/mysql
    restart: unless-stopped

volumes:
  mysql_data:

常用 Docker Compose 命令:

docker-compose up -d      # 启动所有服务
docker-compose down        # 停止并删除所有服务
docker-compose restart     # 重启服务
docker-compose ps          # 查看服务状态
docker-compose logs -f     # 查看日志

构建自己的镜像

创建 Dockerfile 来构建自定义镜像:

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

构建命令:

docker build -t myapp:v1.0 .

常见问题解决

1. Docker 命令提示权限不足

sudo usermod -aG docker $USER

2. 端口被占用

docker ps
docker stop 容器ID/名称

3. 容器自动重启

docker run -d --restart=always --name web nginx

最佳实践总结

1. 镜像选择: 优先使用 alpine 或 slim 版本,体积更小

2. 端口映射: 使用高端口(如 8080)而非特权端口

3. 数据持久化: 使用数据卷保存重要数据

4. 资源限制: 使用 --memory 和 --cpus 限制资源

5. 日志管理: 定时清理容器日志

💡 温馨提示: Docker入门后,建议学习 Docker Compose 和 Dockerfile,可以极大提升开发部署效率。

发表评论