Skip to content

常用操作

一、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 生产环境建议

  1. 使用非 root 用户运行 Docker
bash
sudo usermod -aG docker $USER
  1. 配置日志轮转
bash
# 在/etc/docker/daemon.json中添加
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
  1. 限制容器资源
bash
docker run -d --name limited --memory=1g --cpus=2 nginx
  1. 使用私有仓库
bash
docker login private.registry.com
docker pull private.registry.com/myimage
  1. 定期更新镜像
bash
docker pull nginx:latest
docker stop mynginx && docker rm mynginx
docker run -d --name mynginx -p 8080:80 nginx:latest

这些命令涵盖了 Docker 日常使用中的大部分场景,从基础操作到高级管理,再到生产环境的最佳实践。根据实际需求选择使用,并注意在生产环境中谨慎操作。