Docker 命令使用完整手册(Linux 环境)
编辑
8
2025-04-03
目录
Docker 简介
安装与配置
镜像管理
容器操作
网络管理
数据卷与存储
Docker Compose
Docker Swarm
日志与监控
安全最佳实践
常见问题排查
Docker 简介
Docker 是一个开源的应用容器引擎,允许开发者打包应用及其依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。
主要组件:
Docker Daemon:后台服务
Docker Client:命令行工具
Docker Images:容器模板
Docker Containers:运行中的镜像实例
Docker Registry:镜像仓库(如 Docker Hub)
安装与配置
Ubuntu/Debian 安装
# 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
# 安装依赖
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 设置稳定版仓库
echo "deb [arch=amd64 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引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 验证安装
sudo docker run hello-world
CentOS/RHEL 安装
# 卸载旧版本
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker引擎
sudo yum install docker-ce docker-ce-cli containerd.io
# 启动Docker
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装
sudo docker run hello-world
配置非root用户使用
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker # 刷新组权限
镜像管理
基础命令
# 搜索镜像
docker search nginx
# 拉取镜像
docker pull nginx:latest
# 列出本地镜像
docker images
docker image ls
# 删除镜像
docker rmi <image_id>
docker image rm <image_id>
# 查看镜像详情
docker inspect <image_id>
# 导出镜像
docker save -o nginx.tar nginx:latest
# 导入镜像
docker load -i nginx.tar
构建镜像
# 通过Dockerfile构建
docker build -t my-image:1.0 .
# 指定Dockerfile路径
docker build -f /path/to/Dockerfile -t my-image:1.0 .
# 构建时不使用缓存
docker build --no-cache -t my-image:1.0 .
镜像标签
# 添加标签
docker tag nginx:latest my-nginx:v1
# 推送镜像到仓库
docker login
docker push my-nginx:v1
容器操作
基础命令
# 运行容器
docker run -d --name my-nginx -p 8080:80 nginx:latest
# 列出运行中的容器
docker ps
# 列出所有容器(包括停止的)
docker ps -a
# 停止容器
docker stop my-nginx
# 启动已停止的容器
docker start my-nginx
# 重启容器
docker restart my-nginx
# 删除容器
docker rm my-nginx
# 强制删除运行中的容器
docker rm -f my-nginx
# 查看容器日志
docker logs my-nginx
# 实时查看日志
docker logs -f my-nginx
# 查看容器资源使用
docker stats my-nginx
交互式操作
# 进入运行中的容器
docker exec -it my-nginx /bin/
# 以root身份进入
docker exec -u 0 -it my-nginx /bin/
# 运行临时交互式容器
docker run -it --rm ubuntu:latest /bin/
容器配置
# 设置环境变量
docker run -e "ENV_VAR=value" nginx
# 设置容器主机名
docker run --hostname myhost nginx
# 设置容器DNS
docker run --dns 8.8.8.8 nginx
# 限制容器资源
docker run --memory="512m" --cpus="1.5" nginx
网络管理
基础命令
# 列出网络
docker network ls
# 创建网络
docker network create my-network
# 查看网络详情
docker network inspect my-network
# 删除网络
docker network rm my-network
# 连接容器到网络
docker network connect my-network my-nginx
# 断开容器网络
docker network disconnect my-network my-nginx
网络类型
# 使用桥接网络(默认)
docker run --network bridge nginx
# 使用主机网络
docker run --network host nginx
# 使用none网络(无网络)
docker run --network none nginx
# 使用自定义网络
docker run --network my-network nginx
端口映射
# 随机端口映射
docker run -P nginx
# 指定端口映射
docker run -p 8080:80 nginx
# 多端口映射
docker run -p 8080:80 -p 8443:443 nginx
# 指定IP端口映射
docker run -p 192.168.1.100:8080:80 nginx
数据卷与存储
数据卷操作
# 创建数据卷
docker volume create my-volume
# 列出数据卷
docker volume ls
# 查看数据卷详情
docker volume inspect my-volume
# 删除数据卷
docker volume rm my-volume
# 删除未使用的数据卷
docker volume prune
挂载方式
# 挂载数据卷
docker run -v my-volume:/data nginx
# 挂载主机目录
docker run -v /host/path:/container/path nginx
# 只读挂载
docker run -v /host/path:/container/path:ro nginx
# 使用--mount语法(更详细)
docker run --mount type=bind,source=/host/path,target=/container/path,readonly nginx
# 临时文件系统
docker run --tmpfs /tmp:rw,size=64m nginx
Docker Compose
基础命令
# 启动服务
docker-compose up -d
# 停止服务
docker-compose down
# 查看运行状态
docker-compose ps
# 查看日志
docker-compose logs -f
# 构建服务
docker-compose build
# 重新创建容器
docker-compose up -d --force-recreate
# 扩展服务实例
docker-compose up -d --scale web=3
示例 docker-compose.yml
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
networks:
- frontend
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_PASSWORD: example
volumes:
- db-data:/var/lib/postgresql/data
networks:
- backend
volumes:
db-data:
networks:
frontend:
backend:
Docker Swarm
集群管理
# 初始化Swarm
docker swarm init --advertise-addr <MANAGER-IP>
# 加入工作节点
docker swarm join --token <TOKEN> <MANAGER-IP>:2377
# 查看节点
docker node ls
# 查看服务
docker service ls
# 创建服务
docker service create --name web --replicas 3 -p 8080:80 nginx
# 扩展服务
docker service scale web=5
# 更新服务
docker service update --image nginx:1.19 web
# 删除服务
docker service rm web
日志与监控
日志管理
# 查看日志
docker logs <container_id>
# 跟踪日志
docker logs -f <container_id>
# 显示时间戳
docker logs -t <container_id>
# 限制日志行数
docker logs --tail=100 <container_id>
# 配置日志驱动
docker run --log-driver=json-file --log-opt max-size=10m --log-opt max-file=3 nginx
监控命令
# 查看容器资源使用
docker stats
# 查看容器进程
docker top <container_id>
# 查看容器详细信息
docker inspect <container_id>
# 查看事件流
docker events
安全最佳实践
使用非root用户运行容器
docker run -u 1000 nginx
限制容器能力
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE nginx
设置只读文件系统
docker run --read-only nginx
使用资源限制
docker run --memory="512m" --cpus="1.0" nginx
定期更新镜像
docker pull nginx:latest
扫描镜像漏洞
docker scan nginx
常见问题排查
容器无法启动
# 查看错误日志
docker logs <container_id>
# 检查容器配置
docker inspect <container_id>
# 以调试模式运行
docker run -it --entrypoint /bin/sh nginx
网络连接问题
# 检查容器网络
docker network inspect <network_id>
# 测试容器网络连接
docker exec -it <container_id> ping google.com
# 检查端口映射
docker port <container_id>
存储空间不足
# 查看磁盘使用
docker system df
# 清理未使用的对象
docker system prune
# 清理包括未使用的镜像
docker system prune -a
总结
本手册涵盖了Docker在Linux环境下的主要命令和操作,从基础安装到高级功能。随着Docker生态的发展,建议定期查阅官方文档获取最新信息。
注意:生产环境使用Docker时,请务必遵循安全最佳实践,并考虑使用容器编排工具(如Kubernetes)管理大规模部署。
- 1
- 0
-
分享