Docker 命令大全 🐳

目录 📚
✨ Docker 简介
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖打包到轻量级、可移植的容器中。这些容器可以在任何支持 Docker 的系统中运行,确保环境一致性并简化部署流程。
🎯 Docker 的核心优势:
- 环境一致性:开发、测试、生产环境完全一致
- 快速部署:秒级启动和停止容器
- 资源隔离:每个容器拥有独立的运行环境
- 易于扩展:快速复制和扩展容器实例
- 版本控制:镜像版本管理,轻松回滚
🔧 Docker 核心组件:
- Docker Engine:核心容器运行时
- Docker Images:只读模板,用于创建容器
- Docker Containers:镜像的运行实例
- Docker Registry:镜像存储和分发服务
- Docker Compose:多容器应用定义和管理工具
📦 一、安装与卸载
1️⃣ 卸载 Docker
1 2 3 4 5 6 7 8 9 10 11
| sudo apt-get remove docker docker-engine docker.io containerd runc sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo yum remove docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd sudo rm -rf /etc/docker
|
2️⃣ 安装 Docker (Ubuntu/Debian)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| sudo apt-get update
sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release
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
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker sudo systemctl enable docker
sudo docker run hello-world
|
3️⃣ 安装 Docker (CentOS/RHEL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| 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
sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker sudo systemctl enable docker
sudo docker run hello-world
|
4️⃣ 安装 Docker Compose
1 2 3 4 5 6 7 8
| sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 添加执行权限 sudo chmod +x /usr/local/bin/docker-compose
# 验证安装 docker-compose --version
|
🔍 二、基本信息与版本
1️⃣ 版本信息查询
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| docker --version
docker version
docker info
docker system df
docker system df -v
|
2️⃣ 系统状态检查
1 2 3 4 5 6 7 8 9 10 11
| sudo systemctl status docker
docker info | grep -E "(Server Version|Storage Driver|Total Memory)"
docker stats --no-stream
docker events
|
🐋 三、容器管理
1️⃣ 容器生命周期管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run -it --name my-ubuntu ubuntu:20.04 /bin/bash
docker run -d --name my-nginx -p 8080:80 nginx:latest
docker ps
docker ps -a
docker ps -l
docker ps -s
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"
|
2️⃣ 容器启停管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| docker stop <容器名或ID>
docker kill <容器名或ID>
docker start <容器名或ID>
docker restart <容器名或ID>
docker pause <容器名或ID>
docker unpause <容器名或ID>
docker stop $(docker ps -q)
docker stop $(docker ps -aq) docker start $(docker ps -aq)
|
3️⃣ 容器删除管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| docker rm <容器名或ID>
docker rm -f <容器名或ID>
docker container prune
docker rm -f $(docker ps -aq)
docker rm -v <容器名或ID>
|
4️⃣ 容器监控与日志
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| docker logs <容器名或ID>
docker logs -f <容器名或ID>
docker logs --tail 100 <容器名或ID>
docker logs --since 2023-01-01T00:00:00 <容器名或ID>
docker stats <容器名或ID>
docker stats --all
docker stats --no-stream
docker top <容器名或ID>
|
🖥️ 四、容器操作
1️⃣ 容器交互与执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| docker exec -it <容器名或ID> bash
docker exec -it <容器名或ID> sh
docker exec <容器名或ID> <命令>
docker exec <容器名或ID> ls -la
docker exec <容器名或ID> ps aux
docker exec -it --privileged <容器名或ID> bash
|
2️⃣ 文件操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| docker cp <容器名或ID>:<容器内路径> <本地路径>
docker cp <本地路径> <容器名或ID>:<容器内路径>
docker cp my-nginx:/var/log/nginx/access.log ./nginx-access.log
docker cp nginx.conf my-nginx:/etc/nginx/nginx.conf
docker cp ./config/ my-nginx:/etc/nginx/conf.d/
|
3️⃣ 容器配置管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| docker rename <旧容器名> <新容器名>
docker update --memory 512m <容器名或ID> docker update --cpus 2 <容器名或ID>
docker inspect <容器名或ID>
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <容器名或ID>
docker inspect --format='{{.LogPath}}' <容器名或ID>
docker export <容器名或ID> > container.tar
docker import container.tar my-image:latest
|
🏞️ 五、镜像管理
1️⃣ 镜像基本操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| docker images
docker images -a
docker images -q
docker pull <镜像名>:<标签>
docker pull ubuntu:20.04
docker search <关键词>
docker search nginx
docker rmi <镜像名或ID>
docker rmi -f <镜像名或ID>
docker image prune -a
docker image prune
|
2️⃣ 镜像构建与导出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| docker build -t <镜像名>:<标签> <Dockerfile路径>
docker build -t my-app:1.0.0 .
docker build -f Dockerfile.prod -t my-app:prod .
docker history <镜像名或ID>
docker save -o <文件名>.tar <镜像名>
docker load -i <文件名>.tar
docker export <容器名或ID> > container.tar
docker import container.tar my-imported-image:latest
|
3️⃣ 镜像标签与推送
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| docker tag <源镜像名> <新镜像名>:<标签>
docker tag my-app:latest my-app:1.0.0
docker login
docker logout
docker push <用户名>/<镜像名>:<标签>
docker push myusername/my-app:1.0.0
|
🌐 六、网络管理
1️⃣ 网络基本操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| docker network ls
docker network inspect <网络名>
docker network create <网络名>
docker network create --subnet=192.168.100.0/24 my-network
docker network rm <网络名>
docker network prune
docker network ls --filter driver=bridge
|
2️⃣ 容器网络连接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| docker network connect <网络名> <容器名>
docker network disconnect <网络名> <容器名>
docker run -d --name my-app --network my-network nginx:latest
docker inspect -f '{{json .NetworkSettings.Networks}}' <容器名>
docker network create --subnet=172.20.0.0/16 my-net docker run --network my-net --ip 172.20.0.10 -d nginx:latest
|
3️⃣ 网络类型与配置
1 2 3 4 5 6 7 8 9 10 11 12
| docker network ls
docker network create -d bridge my-bridge-network docker network create -d overlay my-overlay-network
docker network inspect <网络名> --format='{{json .Containers}}'
docker exec <容器名> ping <目标容器名>
|
💾 七、数据卷管理
1️⃣ 数据卷基本操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| docker volume ls
docker volume create <卷名>
docker volume inspect <卷名>
docker volume rm <卷名>
docker volume prune
docker system df -v
|
2️⃣ 数据卷挂载
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| docker run -v <卷名>:<容器内路径> <镜像名>
docker run -d -v nginx-data:/usr/share/nginx/html nginx:latest
docker run -v <主机路径>:<容器内路径> <镜像名>
docker run -v /host/data:/container/data nginx:latest
docker run -v <卷名>:<容器内路径>:ro <镜像名>
docker run -v vol1:/data1 -v vol2:/data2 nginx:latest
|
3️⃣ 数据卷高级用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| docker run --mount source=<卷名>,target=<容器内路径> <镜像名>
docker run --mount source=my-volume,target=/app/data nginx:latest
docker volume create --label env=prod app-data
docker volume ls --filter label=env=prod
docker run --rm -v <卷名>:/volume -v $(pwd):/backup alpine \ tar -czf /backup/backup.tar.gz -C /volume ./
docker run --rm -v <卷名>:/volume -v $(pwd):/backup alpine \ tar -xzf /backup/backup.tar.gz -C /volume
|
🛠️ 八、Docker Compose 命令
1️⃣ Compose 基本操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| docker-compose up
docker-compose up -d
docker-compose -f docker-compose.prod.yml up -d
docker-compose down
docker-compose ps
docker-compose logs
docker-compose logs <服务名>
docker-compose logs -f
|
2️⃣ Compose 服务管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| docker-compose start <服务名>
docker-compose stop <服务名>
docker-compose restart <服务名>
docker-compose pause <服务名>
docker-compose unpause <服务名>
docker-compose up --build <服务名>
docker-compose build --no-cache <服务名>
|
3️⃣ Compose 高级操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| docker-compose exec <服务名> <命令>
docker-compose exec web bash
docker-compose config
docker-compose config --no-interpolate
docker-compose pull
docker-compose push
docker-compose up --scale <服务名>=3 -d
|
🧹 九、清理与维护
1️⃣ 系统清理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| docker system prune
docker system prune -a
docker image prune
docker container prune
docker network prune
docker volume prune
docker builder prune
|
2️⃣ 系统信息与监控
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| docker system df -v
docker stats
docker events
docker version
docker info
docker info | grep -E "(Server Version|Containers|Images|Storage Driver)"
|
🔐 十、安全相关
1️⃣ 容器安全
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| docker run -u 1000:1000 <镜像名>
docker run --user <用户名> <镜像名>
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE <镜像名>
docker run --security-opt no-new-privileges <镜像名>
docker run --read-only <镜像名>
docker run --tmpfs /tmp:rw,size=64m <镜像名>
|
2️⃣ 镜像安全
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| docker scan <镜像名>
docker history <镜像名>
docker trust inspect <镜像名>
export DOCKER_CONTENT_TRUST=1
docker inspect <镜像名>
|
3️⃣ 网络与资源安全
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| docker run --memory=512m --cpus=1.5 <镜像名>
docker run --restart unless-stopped <镜像名>
docker run --memory-swap=1g <镜像名>
docker run --oom-score-adj=500 <镜像名>
openssl rand -base64 32
|
💡 十一、实用技巧与示例
1️⃣ 批量操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| docker stop $(docker ps -q)
docker rm $(docker ps -aq)
docker rmi $(docker images -q)
docker system prune -af
for image in $(docker images -q); do docker tag $image myregistry/$image; done
docker images | grep myregistry | awk '{print $1":"$2}' | xargs -I {} docker push {}
|
2️⃣ 实用示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| docker run -it --rm alpine:latest sh
docker run -p 8080:80 -p 8443:443 nginx:latest
docker run -e "ENV=production" -e "DEBUG=false" my-app:latest
docker run -v /host/data:/container/data -v config:/app/config nginx:latest
docker run --memory=1g --cpus=2 --cpu-shares=512 my-app:latest
docker run --network=host --dns=8.8.8.8 nginx:latest
docker run --health-cmd="curl -f http://localhost/ || exit 1" \ --health-interval=30s \ --health-timeout=10s \ --health-retries=3 \ nginx:latest
|
3️⃣ 监控与调试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}"
docker logs <容器名> 2>&1 | grep -i error
docker inspect --format='{{json .State.Health}}' <容器名>
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \ docker.io/docker/docker-bench-security
docker run --rm -it --network container:<容器名> nicolaka/netshoot
|
🚨 十二、注意事项
1️⃣ 安全注意事项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
docker run --privileged my-app:latest
docker run -u 1000:1000 my-app:latest
docker pull ubuntu:20.04
export DOCKER_CONTENT_TRUST=1
docker run --memory=512m --cpus=1.0 my-app:latest
|
2️⃣ 数据持久化注意事项
1 2 3 4 5 6 7 8 9
| docker run -v important-data:/app/data my-app:latest
docker run --rm -v important-data:/volume -v $(pwd):/backup alpine \ tar -czf /backup/backup-$(date +%Y%m%d).tar.gz -C /volume ./
|
3️⃣ 性能优化注意事项
1 2 3 4 5 6 7 8 9 10 11 12
| echo "node_modules" >> .dockerignore echo ".git" >> .dockerignore
|
📚 十三、学习资源
1️⃣ 官方资源
2️⃣ 教程与指南
3️⃣ 社区与论坛
4️⃣ 工具与扩展
5️⃣ 认证与培训
💡 提示: Docker 命令和功能会随着版本更新而变化,建议定期查阅官方文档获取最新信息。同时,在生产环境中使用 Docker 时,务必遵循安全最佳实践,定期更新镜像和容器,并做好数据备份工作。
希望这份完整的 Docker 命令大全能帮助您更高效地使用和管理 Docker 容器!如有任何问题,请参考 Docker 官方文档或社区资源。🐳