一、概述

本文基于 ​​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