一、概述

本文基于 docker 20.10.12 版本,整理了 docker 中一些常用的基础命令,命令主要分为镜像相关和容器相关两个部分。

二、镜像相关

  1. 镜像拉取

    docker pull <repository>:<tag>
    
  2. 镜像列表查询

    docker images [<repository>:<tag>]
    
  3. 查看镜像的分层信息

    docker inspect <repository>:<tag>
    
  4. 删除镜像

    docker rmi <repository>:<tag>
    docker rmi <imageId>
    
  5. 导入本地镜像文件

    docker 镜像文件一般是一个 tar 格式的压缩包。

    docker load < <imageFile>
    docker load -i <imageFile>
    
  6. 导出镜像为镜像文件

    除了 save 命令,还有一个 export 命令,使用方法相同。

    docker save <repository>:<tag> > <imageFile>
    docker save <repository>:<tag> -o <imageFile>
    
  7. 使用 Dockerfile 构建镜像

    除了以下使用的 -t 指定标签参数,还有许多指定内存、CPU等数据的参数

    docker build -f <Dockerfile> -t <repository>:<tag> .
    
  8. 查询镜像的创建历史

    docker history <repository>:<tag>
    
  9. 为已有的镜像创建一个新的标签

    docker tag <oldRepository>:<oldTag> <newRepository>:<newTag>
    

三、容器相关

  1. 创建一个新容器运行命令

    docker run [OPTIONS] <repository>:<tag> [COMMAND] [ARG...]
    

    部分常用OPTIONS参数:

    参数说明
    -p指定端口映射,格式为:外部端口:容器端口
    -i以交互模式运行容器,通常与 -t 同时使用
    -t为容器重新分配一个伪输入终端,通常与 -i 同时使用
    -d后台运行容器,并返回容器ID
    --volume , -v绑定一个卷,格式为:外部路径:容器内部路径
    -m设置容器使用内存最大值
    --cpuset="0-2"
    --cpuset="0,1,2"
    绑定容器到指定CPU运行
    --name="blog"为容器指定一个名称

    示例:

    # 80端口映射,data目录挂载,后台运行
    docker run -p 80:80 -v /data:/data -d nginx:latest
    # 以交互模式启动容器,在容器内执行/bin/bash命令
    docker run -it nginx:latest /bin/bash
    
  2. 容器的启动、停止与重启

    # 启动
    docker start <container> [container...]
    
    # 停止
    docker stop <container> [container...]
    
    # 重启
    docker restart <container> [container...]
    
  3. 打印容器列表

    docker ps [OPTIONS]
    

    部分常用OPTIONS参数:

    参数说明
    -a显示所有的容器,包括未运行的
    -n列出最近创建的n个容器
    -s显示总的文件大小
    -q只显示容器编号
  4. 创建一个新的容器,但不启动

    docker create [OPTIONS] <repository>:<tag> [COMMAND] [ARG...]
    
  5. 在运行的容器中执行命令

    docker exec [OPTIONS] <container> [COMMAND] [ARG...]
    

    部分常用OPTIONS参数:

    参数说明
    -d在后台运行
    -i即使没有附加也保持STDIN 打开
    -t分配一个伪终端
  6. 连接到正在运行中的容器

    无法退出连接,Ctrl+C/Ctrl+P/Ctrl+Q?实际使用中都不行!

    docker attach <container>
    
  7. 文件拷贝

    容器内路径的表达格式:容器Id:容器内路径

    docker cp <srcPath>  <destPath>
    
  8. 检查容器内文件的变动

    A:表示创建,D:表示删除,C:表示修改

    docker diff <container>
    
  9. 将当前容器打包成一个镜像

    docker commit [OPTIONS] <container> [<repository>:<tag>]
    

    示例:

    docker commit dc test:v6
    
  10. 查询容器的端口映射

    docker port <container>
    
  11. 导出容器为镜像文件

    docker export <repository>:<tag> > <imageFile>
    docker export <repository>:<tag> -o <imageFile>
    
  12. 阻塞当前终端的运行,直到容器停止运行

    docker wait <container> [container...]
    
  13. 打印容器的日志信息

    docker logs [OPTIONS] <container>
    

    部分常用OPTIONS参数:

    参数说明
    -f跟踪日志输出
    --since显示某个开始时间的所有日志
    -t显示时间戳
    --tail仅列出最新n条容器日志
  14. 查看容器中运行的进程信息

    docker top <container>
    
  15. 暂停容器的运行

    docker pause <container> [container...]
    
  16. 恢复容器的运行

    docker unpause <container> [container...]
    
  17. 删除容器

    docker rm [OPTIONS] <container> [container...]
    

    部分常用OPTIONS参数:

    参数说明
    -f通过 SIGKILL 信号强制删除一个运行中的容器
    -i移除容器间的网络连接,而非容器本身
    -v删除容器,并删除与容器关联的卷
  18. 终止一个正在运行的容器

    docker kill [OPTIONS] <container> [container...]
    

    部分常用OPTIONS参数:

    参数说明
    -s向容器发送一个信号

    示例:

    docker kill -s KILL nginx