📦 容器基础操作
25+
容器命令
8
核心类别
100+
实用示例
📚 什么是Docker?
Docker是一个开源的容器化平台,使用容器技术来创建、部署和管理应用程序。容器是轻量级、可移植的运行环境,包含应用程序及其所有依赖项。
💡 容器管理提示: 容器是Docker的核心概念,掌握容器的基本操作是使用Docker的第一步。
容器生命周期管理
| 命令 | 功能 | 常用参数 | 示例 |
|---|---|---|---|
| docker run | 创建并启动容器 | -d, -p, -v, --name, -e | docker run -d --name nginx -p 80:80 nginx |
| docker start | 启动已停止的容器 | -a, -i | docker start nginx |
| docker stop | 停止运行中的容器 | -t, --time | docker stop nginx |
| docker restart | 重启容器 | -t, --time | docker restart nginx |
| docker rm | 删除容器 | -f, -v | docker rm nginx |
| docker pause | 暂停容器 | 无 | docker pause nginx |
| docker unpause | 恢复暂停的容器 | 无 | docker unpause nginx |
| docker kill | 强制停止容器 | -s, --signal | docker kill nginx |
容器查看和监控
| 命令 | 功能 | 常用参数 | 示例 |
|---|---|---|---|
| docker ps | 查看运行中的容器 | -a, -q, -s, --format | docker ps -a |
| docker logs | 查看容器日志 | -f, --tail, -t | docker logs -f --tail 100 nginx |
| docker stats | 查看容器资源使用 | -a, --no-stream | docker stats nginx |
| docker top | 查看容器进程 | 无 | docker top nginx |
| docker inspect | 查看容器详细信息 | -f, --format | docker inspect nginx |
| docker port | 查看容器端口映射 | 无 | docker port nginx |
容器交互操作
| 命令 | 功能 | 常用参数 | 示例 |
|---|---|---|---|
| docker exec | 在容器中执行命令 | -it, -d, -u | docker exec -it nginx bash |
| docker attach | 连接到运行中的容器 | --no-stdin | docker attach nginx |
| docker cp | 在容器和主机间复制文件 | -a, -L | docker cp nginx:/etc/nginx.conf ./ |
| docker diff | 查看容器文件系统变化 | 无 | docker diff nginx |
| docker update | 更新容器配置 | --restart, --memory | docker update --restart=always nginx |
⚠️ 注意事项:
- 使用
docker rm -f可以强制删除运行中的容器 docker exec -it用于交互式访问容器- 定期清理未使用的容器:
docker container prune
📦 容器高级操作
容器资源管理
| 命令 | 功能 | 参数说明 | 示例 |
|---|---|---|---|
| docker run --memory | 限制容器内存使用 | --memory, --memory-swap | docker run --memory=512m nginx |
| docker run --cpu | 限制CPU使用 | --cpus, --cpuset | docker run --cpus=1.5 nginx |
| docker run --restart | 设置重启策略 | no, on-failure, always, unless-stopped | docker run --restart=always nginx |
| docker run --network | 指定网络模式 | bridge, host, none, container | docker run --network=host nginx |
| docker run --privileged | 特权模式运行 | --privileged | docker run --privileged nginx |
容器批量操作
| 命令 | 功能 | 说明 | 示例 |
|---|---|---|---|
| docker stop $(docker ps -q) | 停止所有容器 | 批量停止运行中的容器 | docker stop $(docker ps -q) |
| docker rm $(docker ps -aq) | 删除所有容器 | 批量删除所有容器 | docker rm $(docker ps -aq) |
| docker container prune | 清理停止的容器 | 删除所有停止的容器 | docker container prune -f |
| docker ps --filter | 过滤容器 | 按条件筛选容器 | docker ps --filter "name=nginx" |
高级示例: 创建带资源限制和持久化数据的容器
docker run -d --name advanced-nginx \ --memory=512m --cpus=1.0 \ --restart=always \ -v /data/nginx:/usr/share/nginx/html \ -p 8080:80 \ nginx:alpine
docker run -d --name advanced-nginx \ --memory=512m --cpus=1.0 \ --restart=always \ -v /data/nginx:/usr/share/nginx/html \ -p 8080:80 \ nginx:alpine
🖼️ 镜像基础操作
💡 镜像管理提示: 镜像是容器的基础,学会管理镜像是Docker使用的关键技能。
镜像获取和管理
| 命令 | 功能 | 常用参数 | 示例 |
|---|---|---|---|
| docker pull | 从仓库拉取镜像 | -a, --platform | docker pull ubuntu:20.04 |
| docker push | 推送镜像到仓库 | --disable-content-trust | docker push myuser/myapp:1.0 |
| docker images | 查看本地镜像 | -a, -q, --digests | docker images -a |
| docker rmi | 删除镜像 | -f, --no-prune | docker rmi ubuntu:20.04 |
| docker search | 搜索镜像 | --limit, --filter | docker search --limit 5 nginx |
| docker login | 登录镜像仓库 | -u, -p, --password-stdin | docker login -u username |
| docker logout | 登出镜像仓库 | 无 | docker logout |
镜像构建和导出
| 命令 | 功能 | 常用参数 | 示例 |
|---|---|---|---|
| docker build | 从Dockerfile构建镜像 | -t, -f, --no-cache | docker build -t myapp:1.0 . |
| docker tag | 给镜像打标签 | -f | docker tag myapp:1.0 myuser/myapp:latest |
| docker save | 保存镜像到文件 | -o | docker save -o myapp.tar myapp:1.0 |
| docker load | 从文件加载镜像 | -i, -q | docker load -i myapp.tar |
| docker history | 查看镜像历史 | --no-trunc, -q | docker history myapp:1.0 |
镜像高级操作
| 命令 | 功能 | 说明 | 示例 |
|---|---|---|---|
| docker commit | 从容器创建镜像 | -a, -m, -p | docker commit -m "Custom nginx" nginx custom-nginx:1.0 |
| docker import | 从文件系统创建镜像 | -m, -c | docker import backup.tar myapp:1.0 |
| docker export | 导出容器文件系统 | -o | docker export nginx > nginx-backup.tar |
| docker image prune | 清理未使用的镜像 | -a, -f | docker image prune -f |
Dockerfile示例:
FROM nginx:alpine
COPY ./html /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
docker build -t custom-nginx . && docker run -d -p 8080:80 custom-nginx
🌐 网络基础操作
网络创建和管理
| 命令 | 功能 | 参数说明 | 示例 |
|---|---|---|---|
| docker network create | 创建网络 | --driver, --subnet, --gateway | docker network create --driver bridge my-network |
| docker network ls | 列出网络 | -f, --filter, --format | docker network ls |
| docker network rm | 删除网络 | -f | docker network rm my-network |
| docker network inspect | 查看网络详情 | -f, --format | docker network inspect my-network |
| docker network connect | 连接容器到网络 | --alias, --ip | docker network connect my-network nginx |
| docker network disconnect | 断开容器网络连接 | -f | docker network disconnect my-network nginx |
| docker network prune | 清理未使用的网络 | -f | docker network prune -f |
网络类型和配置
🌐 Docker网络类型
- bridge: 默认网络模式,容器通过桥接网络通信
- host: 容器共享主机的网络栈
- none: 容器没有网络连接
- overlay: 跨主机的分布式网络
- macvlan: 为容器分配MAC地址
网络配置示例:
# 创建自定义桥接网络
docker network create --subnet=192.168.0.0/24 --gateway=192.168.0.1 my-bridge
# 启动容器并连接到网络
docker run -d --name app1 --network=my-bridge nginx
docker run -d --name app2 --network=my-bridge redis
# 创建自定义桥接网络
docker network create --subnet=192.168.0.0/24 --gateway=192.168.0.1 my-bridge
# 启动容器并连接到网络
docker run -d --name app1 --network=my-bridge nginx
docker run -d --name app2 --network=my-bridge redis
💾 存储卷基础操作
存储卷管理
| 命令 | 功能 | 参数说明 | 示例 |
|---|---|---|---|
| docker volume create | 创建存储卷 | --driver, --opt, --label | docker volume create my-data |
| docker volume ls | 列出存储卷 | -f, --filter, --format | docker volume ls |
| docker volume rm | 删除存储卷 | -f | docker volume rm my-data |
| docker volume inspect | 查看存储卷详情 | -f, --format | docker volume inspect my-data |
| docker volume prune | 清理未使用的存储卷 | -f | docker volume prune -f |
挂载类型对比
🔗 Docker挂载类型
- Volume (存储卷): Docker管理的存储,推荐用于数据持久化
- Bind Mount (绑定挂载): 将主机文件或目录挂载到容器
- tmpfs (临时文件系统): 容器内的临时存储
存储挂载示例:
# 使用存储卷
docker run -d -v my-data:/var/lib/mysql mysql
# 使用绑定挂载
docker run -d -v /host/path:/container/path nginx
# 使用临时文件系统
docker run -d --tmpfs /tmp nginx
# 使用存储卷
docker run -d -v my-data:/var/lib/mysql mysql
# 使用绑定挂载
docker run -d -v /host/path:/container/path nginx
# 使用临时文件系统
docker run -d --tmpfs /tmp nginx
🎼 Docker Compose 基础操作
Compose核心命令
| 命令 | 功能 | 常用参数 | 示例 |
|---|---|---|---|
| docker-compose up | 启动所有服务 | -d, --build, --force-recreate | docker-compose up -d |
| docker-compose down | 停止并删除服务 | -v, --remove-orphans | docker-compose down -v |
| docker-compose ps | 查看服务状态 | -q, --services | docker-compose ps |
| docker-compose logs | 查看服务日志 | -f, -t, --tail | docker-compose logs -f web |
| docker-compose build | 构建服务镜像 | --no-cache, --parallel | docker-compose build web |
| docker-compose pull | 拉取服务镜像 | --ignore-pull-failures | docker-compose pull |
服务管理命令
| 命令 | 功能 | 说明 | 示例 |
|---|---|---|---|
| docker-compose start | 启动已停止的服务 | 服务名称 | docker-compose start web db |
| docker-compose stop | 停止运行的服务 | 服务名称 | docker-compose stop web |
| docker-compose restart | 重启服务 | 服务名称 | docker-compose restart web |
| docker-compose exec | 在服务中执行命令 | 服务名称, 命令 | docker-compose exec web bash |
| docker-compose scale | 扩展服务实例 | 服务=实例数 | docker-compose scale web=3 |
docker-compose.yml示例:
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: myapp
volumes:
- db-data:/var/lib/mysql
volumes:
db-data:
⚙️ 系统基础操作
系统信息查看
| 命令 | 功能 | 参数说明 | 示例 |
|---|---|---|---|
| docker version | 查看Docker版本 | --format, -f | docker version --format '{{.Server.Version}}' |
| docker info | 查看Docker系统信息 | --format, -f | docker info |
| docker system df | 查看磁盘使用情况 | --verbose, -v | docker system df -v |
| docker system events | 查看Docker事件 | --filter, --since, --until | docker system events --filter container=nginx |
| docker system prune | 清理未使用的资源 | -a, -f, --volumes | docker system prune -a -f |
性能监控和调试
| 命令 | 功能 | 说明 | 示例 |
|---|---|---|---|
| docker context | 管理Docker上下文 | ls, use, create, rm | docker context ls |
| docker plugin | 管理Docker插件 | ls, install, rm, enable | docker plugin ls |
| docker trust | 内容信任管理 | sign, verify, inspect | docker trust inspect nginx:latest |
| docker manifest | 管理多架构清单 | create, inspect, push | docker manifest inspect myapp:latest |
🔒 安全基础操作
安全配置和管理
| 命令 | 功能 | 参数说明 | 示例 |
|---|---|---|---|
| docker run --user | 指定运行用户 | user:group, --userns | docker run --user 1000:1000 nginx |
| docker run --cap-add | 添加Linux能力 | --cap-add, --cap-drop | docker run --cap-add NET_ADMIN nginx |
| docker run --security-opt | 安全选项配置 | no-new-privileges, apparmor | docker run --security-opt no-new-privileges nginx |
| docker run --read-only | 只读文件系统 | --read-only, --tmpfs | docker run --read-only nginx |
| docker secret | 管理密钥 | create, ls, rm, inspect | docker secret create my-secret ./secret.txt |
| docker run --secret | 使用密钥 | --secret, --secret-env | docker run --secret my-secret nginx |
🔒 安全最佳实践:
- 避免以root用户运行容器
- 使用最小化的基础镜像
- 定期更新镜像和容器
- 限制容器的能力和权限
- 使用内容信任机制
🔧 实用工具操作
常用的Docker工具命令
| 命令 | 功能 | 说明 | 示例 |
|---|---|---|---|
| docker config | 管理Swarm配置 | create, ls, rm, inspect | docker config create my-config ./config.txt |
| docker node | 管理Swarm节点 | ls, inspect, promote, demote | docker node ls |
| docker service | 管理Swarm服务 | create, ls, inspect, scale | docker service create --name web nginx |
| docker stack | 管理Swarm栈 | deploy, ls, rm, services | docker stack deploy -c docker-compose.yml myapp |
| docker swarm | 管理Swarm集群 | init, join, leave, update | docker swarm init |
常用组合命令:
# 清理所有未使用的资源
docker system prune -a -f
# 查看容器资源使用
docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"
# 批量重启所有容器
docker restart $(docker ps -q)
# 清理所有未使用的资源
docker system prune -a -f
# 查看容器资源使用
docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"
# 批量重启所有容器
docker restart $(docker ps -q)