Appearance
Docker环境部署指南
Docker简介
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上。
主要概念
- 🐳 容器(Container):独立运行的一个或一组应用
- 📦 镜像(Image):用于创建容器的模板
- 📝 Dockerfile:用来构建镜像的文本文件
- 🔄 仓库(Repository):存放镜像的地方
安装Docker
1. 系统要求
- Ubuntu 22.04/20.04 LTS
- 4GB以上内存
- 64位系统
- 内核版本3.10以上
2. 安装步骤
- 更新系统包:
bash
sudo apt update
sudo apt upgrade -y
- 安装必要的依赖:
bash
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
- 添加Docker官方GPG密钥:
bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 设置稳定版仓库:
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
- 安装Docker引擎:
bash
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
- 验证安装:
bash
sudo docker run hello-world
3. 配置Docker
- 将当前用户添加到docker组:
bash
sudo usermod -aG docker $USER
newgrp docker
- 配置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. 安装步骤
- 下载最新版本:
bash
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 添加执行权限:
bash
sudo chmod +x /usr/local/bin/docker-compose
- 验证安装:
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. 环境变量
- 创建
.env
文件:
bash
MYSQL_ROOT_PASSWORD=your_password
MYSQL_DATABASE=your_database
- 在
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. 备份和恢复
- 备份容器:
bash
docker commit container_name backup_image
docker save -o backup.tar backup_image
- 恢复容器:
bash
docker load -i backup.tar
3. 监控和日志
- 设置日志轮转:
bash
sudo nano /etc/docker/daemon.json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
- 重启Docker服务:
bash
sudo systemctl restart docker
最佳实践
1. 安全建议
- 定期更新Docker版本
- 使用非root用户运行容器
- 限制容器资源使用
- 使用私有仓库
- 扫描镜像漏洞
2. 性能优化
- 使用多阶段构建
- 优化镜像大小
- 合理使用缓存
- 配置资源限制
- 使用合适的存储驱动
3. 开发建议
- 使用.dockerignore文件
- 编写清晰的Dockerfile
- 合理组织docker-compose文件
- 使用环境变量
- 做好版本控制