以下记录在使用 Docker 过程中遇到的常用命令,方便查询。

镜像(Images)相关操作

  • 列出所有的镜像
    docker images

  • 搜索镜像(从官方镜像和所有个人公共镜像)
    docker search <NAME>

  • 拉取镜像
    docker pull [OPTIONS] <NAME[:TAG]>

  • 将一个容器固化为一个新的镜像
    docker commit <container> [repo:tag]

  • 删除镜像,通过镜像的id来指定删除谁
    docker rmi <image_id>

  • 删除untagged images没有标签的镜像,也就是那些id为<None>的镜像
    docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

  • 删除全部镜像
    docker rmi $(docker images -q)

容器(container)相关操作

  • 查看容器
    当前正在运行中容器: docker ps
    已经停止的所有容器: docker ps -a
    显示最新的一个容器(包括已停止的):docker ps -l

  • 从镜像启动容器
    docker run [OPTIONS] <image> [COMMAND] [ARG...]

    OPTIONS说明

    • -d: 后台运行容器,并返回容器ID;
    • -i: 以交互模式运行容器,通常与 -t 同时使用;
    • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

    例子
    操作运行的redis容器:docker run -it redis:3.2 redis-cli -h 172.17.0.1

  • 开启/停止/重启 容器
    docker start <container_id>
    docker stop <container_id>
    docker restart <container_id>

  • 连接到正在运行中的容器
    docker attach [OPTIONS] <container_id>

  • 在运行的容器中执行命令
    docker exec [OPTIONS] <container> <command> [ARG...]

  • 停止所有的容器,这样才能够删除相关的镜像
    docker stop $(docker ps -a -q)

  • 删除指定容器
    docker rm <container_id>

  • 删除所有退出的容器
    docker rm -f $(docker ps -a | grep Exit | awk '{ print $1 }')

  • 删除所有容器
    docker rm $(docker ps -aq)

  • 查看容器的相关信息
    docker inspect <container_id>

  • 显示指定容器的IP
    docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container_id>

  • 查看容器中正在运行的进程
    docker top <container_id/container_name>