Docker命令备忘录

62 阅读3分钟

概述

Docker 是一个开源的应用容器引擎,允许开发者打包应用及其依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器或 Windows 机器上。

基本概念

  • 镜像(Image):Docker 镜像是一个只读模板,用于创建 Docker 容器
  • 容器(Container):容器是镜像的可运行实例
  • 仓库(Registry):Docker 仓库用来保存镜像,分为公有和私有两种

镜像管理命令

获取镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# 示例
docker pull ubuntu:20.04
docker pull nginx

列出镜像

docker images [OPTIONS] [REPOSITORY[:TAG]]
# 示例
docker images
docker images -a  # 显示所有镜像
docker images --digests  # 显示摘要信息

删除镜像

docker rmi [OPTIONS] IMAGE [IMAGE...]
# 示例
docker rmi ubuntu:20.04
docker rmi -f image_id  # 强制删除

构建镜像

docker build [OPTIONS] PATH | URL | -
# 示例
docker build -t myapp:1.0 .
docker build -f Dockerfile.dev -t myapp:dev .

镜像历史

docker history [OPTIONS] IMAGE
# 示例
docker history nginx

容器管理命令

运行容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 示例
docker run -it ubuntu:20.04 /bin/bash
docker run -d -p 80:80 nginx  # 后台运行
docker run --name mynginx -d nginx  # 指定容器名

常用选项:

  • -d: 后台运行容器
  • -it: 交互模式运行容器
  • -p: 端口映射(主机端口:容器端口)
  • -v: 卷挂载(主机目录:容器目录)
  • --name: 指定容器名称
  • --rm: 容器退出时自动删除
  • -e: 设置环境变量

列出容器

docker ps [OPTIONS]
# 示例
docker ps        # 运行中的容器
docker ps -a     # 所有容器
docker ps -q     # 只显示容器ID
docker ps -f status=exited  # 按状态过滤

启动/停止容器

docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]
# 示例
docker start mynginx
docker stop mynginx

删除容器

docker rm [OPTIONS] CONTAINER [CONTAINER...]
# 示例
docker rm mynginx
docker rm -f mynginx  # 强制删除运行中的容器
docker container prune  # 删除所有停止的容器

进入容器

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
# 示例
docker exec -it mynginx /bin/bash
docker exec mynginx ls /app

查看容器日志

docker logs [OPTIONS] CONTAINER
# 示例
docker logs mynginx
docker logs -f mynginx  # 实时日志
docker logs --tail 100 mynginx  # 最后100行

查看容器信息

docker inspect [OPTIONS] NAME|ID [NAME|ID...]
# 示例
docker inspect mynginx
docker inspect --format='{{.NetworkSettings.IPAddress}}' mynginx

网络管理命令

列出网络

docker network ls [OPTIONS]
# 示例
docker network ls

创建网络

docker network create [OPTIONS] NETWORK
# 示例
docker network create mynetwork

连接容器到网络

docker network connect [OPTIONS] NETWORK CONTAINER
# 示例
docker network connect mynetwork mynginx

断开网络连接

docker network disconnect [OPTIONS] NETWORK CONTAINER
# 示例
docker network disconnect mynetwork mynginx

数据卷管理命令

列出卷

docker volume ls [OPTIONS]
# 示例
docker volume ls

创建卷

docker volume create [OPTIONS] [VOLUME]
# 示例
docker volume create myvolume

删除卷

docker volume rm [OPTIONS] VOLUME [VOLUME...]
# 示例
docker volume rm myvolume
docker volume prune  # 删除所有未使用的卷

其他常用命令

查看Docker信息

docker info [OPTIONS]
# 示例
docker info

查看版本信息

docker version [OPTIONS]
# 示例
docker version

复制文件

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
# 示例
docker cp mynginx:/etc/nginx/nginx.conf ./
docker cp ./config.json mynginx:/app/config.json

Docker Compose 常用命令

启动服务

docker-compose up [OPTIONS]
# 示例
docker-compose up -d  # 后台启动
docker-compose up --build  # 重新构建镜像后启动

停止服务

docker-compose down [OPTIONS]
# 示例
docker-compose down
docker-compose down -v  # 同时删除卷

查看服务状态

docker-compose ps [OPTIONS]
# 示例
docker-compose ps

查看服务日志

docker-compose logs [OPTIONS] [SERVICE...]
# 示例
docker-compose logs
docker-compose logs -f web  # 实时查看web服务日志

实用技巧

清理Docker资源

# 删除所有停止的容器
docker container prune

# 删除所有未被使用的镜像
docker image prune -a

# 删除所有未被使用的网络
docker network prune

# 删除所有未被使用的卷
docker volume prune

# 一键清理所有未使用的资源
docker system prune -a

查看资源使用情况

docker stats [OPTIONS] [CONTAINER...]
# 示例
docker stats  # 所有容器资源使用
docker stats nginx mysql  # 指定容器资源使用