常用操作
一、Docker 基础操作
1. 安装与配置
bash
# Ubuntu/Debian 安装
sudo apt update
sudo apt install docker.io
sudo systemctl enable --now docker
# CentOS/RHEL 安装
sudo yum install docker
sudo systemctl enable --now docker
# 验证安装
docker --version
docker info
2. 镜像管理
bash
docker search nginx# 搜索镜像
docker pull nginx:latest# 下载镜像
docker images# 列出本地镜像
docker rmi nginx# 删除镜像
docker image prune# 删除悬空镜像
docker save nginx > nginx.tar # 导出镜像
docker load < nginx.tar# 导入镜像
3. 容器管理
bash
docker run -d --name mynginx -p 8080:80 nginx# 运行容器
docker ps# 查看运行中的容器
docker ps -a# 查看所有容器
docker stop mynginx# 停止容器
docker start mynginx# 启动已停止的容器
docker restart mynginx# 重启容器
docker rm mynginx# 删除容器
docker rm $(docker ps -aq)# 删除所有容器
二、容器操作与调试
1. 容器交互
bash
docker exec -it mynginx bash# 进入运行中的容器
docker attach mynginx# 附加到运行中的容器
docker logs mynginx# 查看容器日志
docker logs -f mynginx# 实时查看日志
docker top mynginx# 查看容器进程
2. 容器监控
bash
docker stats# 查看容器资源使用
docker inspect mynginx# 查看容器详细信息
docker port mynginx# 查看端口映射
docker diff mynginx# 查看容器文件变化
3. 容器网络
bash
docker network ls# 列出网络
docker network create mynet# 创建网络
docker network inspect bridge# 查看网络详情
docker run --network=mynet nginx # 指定网络运行容器
三、Docker 高级操作
1. 数据管理
bash
docker volume create myvol# 创建数据卷
docker volume ls# 列出数据卷
docker run -v myvol:/data nginx # 挂载数据卷
docker run -v /host/path:/container/path nginx # 绑定挂载
2. 容器编排
bash
# 使用docker-compose
docker-compose up -d# 启动服务
docker-compose down# 停止服务
docker-compose ps# 查看服务状态
docker-compose logs# 查看日志
3. 构建镜像
bash
# 使用Dockerfile构建
docker build -t myimage:1.0 .
docker tag myimage:1.0 myrepo/myimage:1.0
docker push myrepo/myimage:1.0
四、Docker 实用技巧
1. 清理命令
bash
docker system df# 查看磁盘使用
docker system prune# 清理所有未使用对象
docker container prune# 清理停止的容器
docker image prune -a# 清理未使用的镜像
2. 容器资源限制
bash
docker run -d --name limited --memory=512m --cpus=1.5 nginx
docker update --memory=1g limited # 更新资源限制
3. 容器健康检查
bash
# 运行带健康检查的容器
docker run --name healthcheck \
--health-cmd="curl -f http://localhost || exit 1" \
--health-interval=5s \
--health-timeout=3s \
--health-retries=3 \
nginx
五、Docker 安全实践
1. 安全配置
bash
docker run --read-only alpine # 只读容器
docker run --user 1000:1000 nginx # 非root用户运行
docker run --security-opt=no-new-privileges nginx # 禁止提权
2. 镜像扫描
bash
docker scan nginx# 扫描镜像漏洞
docker trust inspect nginx# 检查镜像签名
3. 日志管理
bash
docker run --log-driver=json-file --log-opt max-size=10m nginx
docker run --log-driver=syslog nginx
六、Docker 常见问题解决
1. 容器无法启动
bash
docker inspect --format='{{.State.Error}}' mycontainer
docker logs mycontainer
docker events --since '2023-01-01' --until '2023-01-02'
2. 网络连接问题
bash
docker network disconnect bridge mycontainer
docker network connect mynet mycontainer
3. 存储空间不足
bash
docker system df
docker builder prune
docker volume prune
七、Docker 生产环境建议
- 使用非 root 用户运行 Docker
bash
sudo usermod -aG docker $USER
- 配置日志轮转
bash
# 在/etc/docker/daemon.json中添加
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
- 限制容器资源
bash
docker run -d --name limited --memory=1g --cpus=2 nginx
- 使用私有仓库
bash
docker login private.registry.com
docker pull private.registry.com/myimage
- 定期更新镜像
bash
docker pull nginx:latest
docker stop mynginx && docker rm mynginx
docker run -d --name mynginx -p 8080:80 nginx:latest
这些命令涵盖了 Docker 日常使用中的大部分场景,从基础操作到高级管理,再到生产环境的最佳实践。根据实际需求选择使用,并注意在生产环境中谨慎操作。