Skip to content

Docker环境部署指南

Docker简介

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

主要概念

  • 🐳 容器(Container):独立运行的一个或一组应用
  • 📦 镜像(Image):用于创建容器的模板
  • 📝 Dockerfile:用来构建镜像的文本文件
  • 🔄 仓库(Repository):存放镜像的地方

安装Docker

1. 系统要求

  • Ubuntu 22.04/20.04 LTS
  • 4GB以上内存
  • 64位系统
  • 内核版本3.10以上

2. 安装步骤

  1. 更新系统包:
bash
sudo apt update
sudo apt upgrade -y
  1. 安装必要的依赖:
bash
sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
  1. 添加Docker官方GPG密钥:
bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 设置稳定版仓库:
bash
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
  1. 安装Docker引擎:
bash
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
  1. 验证安装:
bash
sudo docker run hello-world

3. 配置Docker

  1. 将当前用户添加到docker组:
bash
sudo usermod -aG docker $USER
newgrp docker
  1. 配置Docker镜像加速:
bash
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://mirror.ccs.tencentyun.com",
        "https://registry.docker-cn.com",
        "https://docker.mirrors.ustc.edu.cn"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

安装Docker Compose

1. 安装步骤

  1. 下载最新版本:
bash
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. 添加执行权限:
bash
sudo chmod +x /usr/local/bin/docker-compose
  1. 验证安装:
bash
docker-compose --version

2. 基本配置

创建Docker Compose工作目录:

bash
mkdir ~/docker
cd ~/docker

Docker基本使用

1. 镜像管理

bash
# 搜索镜像
docker search nginx

# 拉取镜像
docker pull nginx:latest

# 列出本地镜像
docker images

# 删除镜像
docker rmi nginx:latest

2. 容器管理

bash
# 创建并运行容器
docker run -d --name webserver -p 80:80 nginx

# 列出运行中的容器
docker ps

# 列出所有容器
docker ps -a

# 停止容器
docker stop webserver

# 启动容器
docker start webserver

# 重启容器
docker restart webserver

# 删除容器
docker rm webserver

3. 容器日志和监控

bash
# 查看容器日志
docker logs webserver

# 实时查看日志
docker logs -f webserver

# 查看容器详细信息
docker inspect webserver

# 查看容器资源使用情况
docker stats webserver

Docker Compose使用

1. 基本结构

创建docker-compose.yml文件:

yaml
version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    restart: always

2. 常用命令

bash
# 启动服务
docker-compose up -d

# 停止服务
docker-compose down

# 查看服务状态
docker-compose ps

# 查看服务日志
docker-compose logs

# 重启服务
docker-compose restart

3. 环境变量

  1. 创建.env文件:
bash
MYSQL_ROOT_PASSWORD=your_password
MYSQL_DATABASE=your_database
  1. docker-compose.yml中使用:
yaml
version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_DATABASE}

网络配置

1. 创建网络

bash
# 创建自定义网络
docker network create medianet

# 列出网络
docker network ls

# 查看网络详情
docker network inspect medianet

2. 容器网络配置

docker-compose.yml中配置网络:

yaml
version: '3'
networks:
  medianet:
    driver: bridge

services:
  web:
    image: nginx
    networks:
      - medianet

数据管理

1. 数据卷

bash
# 创建数据卷
docker volume create mydata

# 列出数据卷
docker volume ls

# 查看数据卷详情
docker volume inspect mydata

2. 绑定挂载

docker-compose.yml中配置挂载:

yaml
version: '3'
services:
  web:
    image: nginx
    volumes:
      - ./config:/etc/nginx/conf.d
      - ./logs:/var/log/nginx
      - ./html:/usr/share/nginx/html

系统维护

1. 清理系统

bash
# 删除未使用的容器
docker container prune

# 删除未使用的镜像
docker image prune

# 删除未使用的数据卷
docker volume prune

# 删除所有未使用的对象
docker system prune -a

2. 备份和恢复

  1. 备份容器:
bash
docker commit container_name backup_image
docker save -o backup.tar backup_image
  1. 恢复容器:
bash
docker load -i backup.tar

3. 监控和日志

  1. 设置日志轮转:
bash
sudo nano /etc/docker/daemon.json

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
  1. 重启Docker服务:
bash
sudo systemctl restart docker

最佳实践

1. 安全建议

  • 定期更新Docker版本
  • 使用非root用户运行容器
  • 限制容器资源使用
  • 使用私有仓库
  • 扫描镜像漏洞

2. 性能优化

  • 使用多阶段构建
  • 优化镜像大小
  • 合理使用缓存
  • 配置资源限制
  • 使用合适的存储驱动

3. 开发建议

  • 使用.dockerignore文件
  • 编写清晰的Dockerfile
  • 合理组织docker-compose文件
  • 使用环境变量
  • 做好版本控制