📦 容器基础操作

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使用的关键技能。

镜像获取和管理

命令 功能 常用参数 示例
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 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 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)