Network 资源等还保留未动

发布时间:2025-06-24 19:08:58  作者:北方职教升学中心  阅读量:263


Network 资源等还保留未动。

  • 语法:
    dockerrenameCONTAINER NEW_NAME
  • 别名:
    dockercontainer rename
  • 演示:
    如下图:我们使用 docker rename给一个容器重命名。
  • -P:随机端口映射,容器内部的端口随机映射到主机的端口。
  • id:根据容器 id 作为过滤条件。环境变量、
    在这里插入图片描述
  • docker kill

    • 功能:“杀死” 一个处于 running 状态的容器,和我们在学习 linux 的时候的 kill 命令很像。

    其他的参数就就不演示啦,都比较简单,大家可以在自己的电脑上试一试。而 docker kill默认发送的是 SIGKILL信号,这个信号可以通过参数 -s来调整。

  • 其实就是 docker run的时候加上 -ti选项嘛。
  • 语法:
    dockerrmCONTAINER [CONTAINER...]
  • 别名:
    dockercontainer rm
  • 参数:
    • -f:通过 SIGKILL 信号强制删除一个处于 running 状态中的容器。
  • 演示:
    如下图:我有一个正在运行的容器,docker ps显示该容器已经运行了 12 分钟,使用 docker restart命令之后再次 docker ps可以看到该容器的运行时间变成了 12 秒。
  • 别名:
    dockercontainer cp
  • 演示:
    我们启动一个 nginx 镜像容器,然后修改这个 nginx 服务器的主页!如下图,nginx 服务器主页的 html 文件是在:/usr/share/nginx/html目录下的!因为容器中没有 vim / vi 所以有拷贝到宿主机修改 index.html文件的需求!
    在这里插入图片描述
  • 首先我们将容器中的 /usr/share/nginx/html/index.html文件给他拷贝到宿主机来!我们先创建一个目录用来放这个文件,然后进入到这个目录里面,使用 docker cp命令将容器中的这个文件拷贝到当前目录就行啦!
    在这里插入图片描述
  • 然后我们使用 vim index.html编辑这个文件,将 “Welcome to nginx!” 改为 “Welcome to docker!”。然后我们按下 ctrl + c就能直接退出容器。

  • 容器异常退出

    每个容器内部都存在一个 Init 进程,容器中其他所有进程都是此进程的子进程。
    在这里插入图片描述
    可以看到,成功将 nginx 服务器的首页改啦!
    在这里插入图片描述

    docker diff

    • 功能:检查容器文件系统上文件或目录的更改。在我们的服务器放行了 32768 的前提下,我们就能够使用公网 IP 加上端口号访问容器中启动的 nginx 服务啦!在本例中就是:47.108.251.0:32768
      在这里插入图片描述
      显然,这种随机映射的方式很不友好,我们在启动一个容器的时候,应该指定端口映射,而不是让系统来随机分配,这个时候我们就可以使用 -p 选项啦!
      在这里插入图片描述
      我们指定主机的 80 端口映射到容器的 80 端口,这样我们就可以使用 80 端口来访问容器中启动的 nginx 服务啦!
      在这里插入图片描述


      如下图:我们在运行容器的时候给容器指定一个名称。

      容器的日志文件在哪里

      其实容器的日志是保存在一个文件中的!

      • 我们先输入 docker info命令查看一下 Docker 的根目录:
        在这里插入图片描述
        我的目录可能和你们查看到的目录不一样,因为我之前更改过 Docker Root Dir。
      • NET I/O:容器通过其网络接口发送和接收的数据量。而其他资源,如 Memory 资源、
    • 返回的数据:
      • CONTAINER ID 与 NAME:容器 ID 与名称。
      • –memory:内存限制。
      • container process exited:出现容器被终止后,将进入是否应该 restart 的选择。输出和错误(或三者的任意组合)附加到正在运行的容器上。
      • 语法:
        dockerlogs [OPTINONS]CONTAINER
      • 别名:
        dockercontainer logs
      • 参数:
        • -f–flow:持续跟踪日志输出。
        • stopped:停止状态。
        • -f:根据过滤条件显示容器。下面是常用的过滤条件:
          • status:状态可以是下面的任意一个: created, restarting, running, removing, paused, exited, 或者 dead
          • 语法:
            dockerstats [OPTIONS][CONTAINER...]
          • 别名:
            dockercontainer stats
          • 参数:
            • -a-all:显示所有的容器,包括没有运行的。

    容器暂停

    Docker“剥夺”了此容器的 CPU 资源。

  • MEM USAGE / LIMIT:容器正在使用的总内存,以及允许使用的内存总量。
    在这里插入图片描述


    如下图,我们可以使用 -h 选项指定容器的 hostname。

  • Docker Container (容器) 常见命令

    docker run

    • 功能:创建一个新的容器并运行一个命令。如:table,json 等等。

    • 语法:
      dockerstart [OPTIONS]CONTAINER [CONTAINER...]
      后面的 CONTAINER可以是容器的名字,容器 id 的前缀(docker ps出来的容器 id),或者完整的容器 id (docker ps --no-trunc出来的容器 id)。
    • 语法:
      dockerkill[OPTIONS]CONTAINER [CONTAINER...]
    • 别名:
      dockercontainer kill
    • 参数:
      • -s–signal:给容器发送一个信号。
      • docker prune: 用来删除不再使用的 docker 对象。
      • 参数:
        • -c–change:现在没法讲,这个选项会将 Dockerfile 指令应用到镜像。要从远程位置导入,请指定以 http:// 或 https:// 协议开头的 URI。
        • -p:指定端口映射,格式为:主机(宿主)端口:容器端口
        • -i:连接到容器的 STDIN,即使没有连接到这个容器!
        • -t:分配一个伪终端。

        各个生命周期的转换关系如图所示:

        img

        • docker create:创建容器后,不立即启动运行,容器进入初建状态。即容器运行着真正的应用进程。
        • 语法:
          dockercontainer inspect [OPTIONS]CONTAINER [CONTAINER...]
        • 别名:
          dockerinspect # 查看镜像详细信息可以使用 docker inspect 查看容器也可以用,Docker 引擎会自动识别你要查看的是镜像还是容器的!
        • 参数:
          • -f:指定返回的模板文件。运行 的容器是因为 Init 进程在运行,如果一个子进程因为某种原因造成了退出,那么其父 进程也会同步退出,直至 Init 进程也退出。网络等信息, 这是容器与直接运行在主机上进程的本质区别。
            在这里插入图片描述

          docker attach

          • 功能:连接到正在运行的容器。
          • docker export container_id:将一个容器导出为文件,再使用 docker import命令将容器导入成为一个新的镜像,但是相比 docker save命令,容器文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照。
          • BLOCK I/O:容器从主机上的块设备读取和写入的数据量。
          • –no-trunc:不截断输出。.tgz、停止、URL 可以指向包含文件系统的存档(.tar、
          • -p:在提交的时候将容器暂停,默认 -p 为 true 表示默认是暂停的!
        • 演示:
          如下图:我们使用 docker commit命令将 mynginx 容器提交为镜像,在提交的过程中容器会被暂停,但是这个暂停的过程不好演示,你可以尝试一直刷新浏览器来试试!可以看到提交成功之后再本地就会多出这个镜像啦!
          在这里插入图片描述
          我们使用 docker image inspect查看这个镜像的详细信息:可以看到保留了很多原容器镜像的诸多信息,docker commit将原容器提交为镜像时,原容器中增加的环境变量也会被包含到新镜像的 env 中!!!
          在这里插入图片描述

        你不是说,docker commit会将原容器的信息提交为镜像嘛,我们之间不是修改了 nginx 的主页嘛!首先,我们将原来的那个容器 stop 掉,然后使用 commit 出来的镜像重新启动一个容器!发现确实是将原容器的信息保存啦!因为我们访问到的是 Welcome to docker!嘛!
        在这里插入图片描述

        docker port

        • 功能:用于列出指定容器的端口映射。
        • docker start:容器转为运行状态。格式: <name|uid>[:<group|gid>]
        • -w–workdir:指定工作目录。
        • CPU % 与 MEM %:容器使用的 CPU 和内存的百分比。
          • yes:需要重启,容器执行 start 命令,转为运行状态。
          • no:不需要重启,容器转为停止状态。
          • docker stop:容器转入停止状态。docker start 和 docker run 有什么区别?

            docker create 命令从 Docker 映像创建一个全新的容器。

        • 演示:
          如下图:我么使用 docker logs -f持续追踪这个 nginx 镜像容器的日志输出,可以看到随着我不断刷新网页,日志信息也会随着更新。json 或者 table 等等。
          在这里插入图片描述

          docker stop

          • 功能:停止一个或者多个处于 running 状态的容器。
          • docker kill:容器在故障时,执行 kill,容器将进入停止状态,这种操作容易丢失数据,除非必要,否则不建议使用。而在这种情况下,此容器将会被强制关闭。
            在这里插入图片描述

          docker top

          • 功能:查看容器中运行的进程信息,支持 ps 命令参数。代码(镜像)是静态的,包含了程序运行所需要的所有指令和数据;而程序(容器)是动态的,是代码在特定环境下的运行实例。但是,它不会立即运行它。

            docker rm & docker rmi & docker prune 的差异?

            • docker rm: 删除一个或多个容器。
              在这里插入图片描述
              下面我们一直点击刷新,看看 mynginx 容器的资源使用情况的变化:
              在这里插入图片描述
              可以看到主要是 NET I/O 在变化哈!CPU 也有变化,但是不多!

            其他的选项就不演示了,比较简单!

            docker container inspect

            • 功能:查看容器的详细信息。
            • -s:显示文件的大小。
            • 演示:
            • 如下图:我们使用 docker kill命令终止一个容器。
            • -i:以交互模式运行容器,通常与 -t 选项同时使用。
          • 演示:

          可以看到 docker create 的参数基本上和 docker run 的参数是一样的!docker create 没有 -d 选项吧!!
          如下图:我们使用 docker create 命令创建一个容器但是没有运行它!可以看到这个容器的状态是 Created 状态哈!我们可以使用 docker start 启动处于 Created 状态的容器。

        • -t–timestamps:显示时间戳。
        • -q:只显示容器编号。
        • -n:列出最近创建的 n 个容器。如果使用 docker create 命令创建容器,
          则可以使用此命令启动它。
      • 别名:

        dockercontainer diff
      • 演示:
        如下图:我们查看 mynginx 这个容器的文件系统更改情况。

      • 语法:
        dockerstop [OPTIONS]CONTAINER [CONTAINER...]
      • 别名:
        dockercontainer stop
      • 参数:
        • -s–signal:给容器发送一个信号。
        • -P:随机端口映射,容器内部的端口随机映射到主机的端口。 例如,在容器当中,部署了一个 web 服务。 容器是基于镜像创建的可运行实例,并且单独存在,一个镜像可以创建出多个容器。
        • –cpuset-cpus:绑定容器到指定的 CPU 上运行。
        • deleted:删除状态。
        • paused:暂停状态。会显示三种不同类型的更改:

          • A:添加一个文件或者目录。
          • 语法:
            dockercp[OPTIONS]CONTAINER:SRC_PATH DEST_PATH|- # 将容器中的文件拷贝到宿主机dockercp[OPTIONS]SRC_PATH|- CONTAINER:DEST_PATH # 将宿主机中的文件拷贝到容器
          • 说明:如果为 SRC_PATHDEST_PATH指定了 -,还可以从 STDINSTDOUT流式传输 tar压缩包。
          • 语法:
            dockercommit [OPTIONS]CONTAINER [REPOSITORY[:TAG]]
          • 别名:
            dockercontainer commit
          • 参数:
            • -a:提交镜像的作者。

          Docker 在处理 OOM 事件分为 3 中情况:

          1. 如果容器中的应用耗尽了主机系统分配给容器的内存限额,就会触发 OOM 事件。

          2. -p:指定端口映射,格式为:主机(宿主)端口:容器端口。当仅使用 busybox 镜像而不指定任何命令时,容器启动后会立即退出,因为它没有默认的前台进程来保持容器运行。

            在学习容器的常见命令之前,我们先来看看容器的生命周期吧!

            容器的生命周期是容器可能处于的状态:

            • created:初建状态。
          3. 演示:
            如下图:我们后台启动一个 nginx 镜像的容器,使用 docker stop命令能够将其停止!
            在这里插入图片描述

        docker restart

        • 功能:重启一个或者多个容器。比 docker export命令导出的文件大,很好理解,因为会保存镜像的所有历史记录。SRC_PATHDEST_PATH可以是文件或目录。通过镜像创建容器,我们可以方便地部署和管理应用程序,并确保每个应用程序都在一致和隔离的环境中运行。
        • docker unpause:取消暂停状态,容器进入运行状态。 运行容器化环境时,实际上是在容器内部创建该文件系统的读写副本。
    例如:docker ps -f status=running
  • name:根据容器的名字作为过滤条件。

    容器与镜像的关系类似于程序与代码的关系。

  • 语法:
    dockercontainer prune [OPTIONS]
  • 参数:
  • -f–force:删除的是否不提示是否确认。
  • 语法:
    dockertopCONTAINER [ps OPTIONS]
  • 别名:
    dockercontainer top
  • 说明:这个 [ps OPTINONS]的意思就是:我们之前学习的 ps 命令有哪些选项,这里就可以写哪些选项。如此一来,失去了 CPU 资源的进程,是不会被主机内核系统所调度的,所以此容器就处于“冰封”状态。
    在这里插入图片描述
  • docker update

    • 功能:更新容器的配置。
  • 演示:
    如下图:我们使用 nginx 镜像启动一个容器,并将 nginx 服务器的主页进行修改:
    在这里插入图片描述
    使用浏览器访问 nginx 服务器:可以看到结果没问题!
    在这里插入图片描述
    然后,我们将这个修改过 nginx 主页的容器 export 出来个 tar 文件!
    在这里插入图片描述
    怎么将这个 tar 文件恢复出来呢?这就要用之前在 docker 镜像常见命令中没讲的 docker image import命令啦!
  • docker image import

    • 功能:从归档文件中创建镜像。

      两者的区别在于容器快照将会丢弃所有的历史记录和元数据信息,而镜像存储文件将保存完整记录,体积也会更大。

    • docker restart:重启容器,容器转入运行状态。
    • 语法:
      dockerupdate [OPTIONS]CONTAINER [CONTAINER...]
    • 别名:
      dockercontainer update
    • 参数:
    • –cpus:cpu 数量。
    • 演示:
      如下图:我们使用 docker container prune删除所有停止的容器,因为没有加上 -f选项,所以会提示我们是否确认删除。
      演示:
      如下图:我们用 nginx 镜像启动并运行一个容器,然后执行一个命令将 CPU 打满!
    foriin`seq1$(cat /proc/cpuinfo |grep"physical id"|wc-l)`doddif=/dev/zero of=/dev/null &done#说明:# cat /proc/cpuinfo |grep “physical id” | wc -l 可以获得 CPU 的个数,# 我们将其表示为 N# seq 1 N 用来生成1到N之间的数字# for i in seq 1 N; 就是循环执行命令,从1到N# dd if=/dev/zero of=/dev/null 执行 dd 命令, 输出到/dev/null, 实际上# 只占用 CPU, 没有 IO 操作# 由于连续执行N个(N是 CPU 个数)的 dd 命令, 且使用率为 100%, 这时调度器# 会调度每个 dd 命令在不同的 CPU 上处理,最终就实现所有CPU占用率 100%

    在这里插入图片描述
    然后我们启动另一个会话,输入 docker stats mynginx查看容器资源的使用情况,可以看到 CPU 几乎打满了
    在这里插入图片描述
    然后我们再使用 docker update --cpu-period=100000 --cpu-quota=10000 mynginx 将容器的最大 CPU 占有率设置为 10%,可以看到就立即对容器生效啦!
    在这里插入图片描述
    像这种 CPU,内存使用的限制其实应该就是在 docker run的时候设置好的!


    如果你的容器使用的内存是超过 docker update -m更新的内存,是无法更新成功的!

    dockerupdate -m10m --memory-swap 10m mynginx # 这个交换内存的选项不设置的话默认是无限大的!当 -m 设置的大小和 --memory-swap 设置的大小是一样的话,就表示真实能够使用的物理内存是多大了

    容器批量处理技巧

    如下图所示:我的本地有好多正在运行的容器,我想直接把他们全部暂停掉!应该怎么做呢?还记得我们直接学过的 docker ps中的 -q这个选项吧!他只输出容器的 ID,那我们就会想能不能将 docker ps -q得到的所有容器 id 喂给 docker stop呢?还真行!Docker 引擎支持这么做!
    在这里插入图片描述
    命令这么写:

    dockerstop `dockerps-q`# 或者这么写dockerstop $(dockerps-q)

    在这里插入图片描述
    可以看到一口气直接把他们全部停止了!

    容器交互模式

    attached 模式

    • 我们使用 docker run命令的时候不加 -d选项,就是 attached 模式,这样容器会在前台运行
    • 如果是在 Linux 服务器上,按 Ctrl+C 就会停止掉 Docker 服务,很容易误操作,所以我们需要一个更好的,更稳定的模式,对应的是 detached 模式。

    docker create

    • 功能:创建一个新的容器但是不启动它。
      在这里插入图片描述
      如果我们不加上 -f参数,那么就会输出历史的日志。
      在这里插入图片描述

      docker start

      • 功能:启动一个或者多个处于停止状态的容器。容 器有初建、如:table,json。
      • 语法:
        dockerattach [OPTINONS]CONTAINER
      • 别名:
        dockercontainer attach
      • 参数:
        • –sig-proxy:是否将接收到的所有信号代理给进程。发现打印出来的信息中,Cmd,Env 啥的都没了!可见 docker exportdocker import这样的组合还是有很大的缺点的!!
          在这里插入图片描述
          我们查看原 nginx镜像的详细信息,找到 nginx 镜像的启动命令:
          在这里插入图片描述
          docker run使用 test_import:v1镜像启动容器的时候加上这个启动命令,就能成功运行啦!
          在这里插入图片描述
          可以看到通过浏览器访问,的确也是我们之前修改过的内容!
          在这里插入图片描述

        因为 docker export 导出 tar 归档文件的时候会有元数据的丢失,不建议使用哈

        推荐使用 docker commitdocker savedocker load这几个!

        docker rename

        • 功能:给一个容器重命名。
      • 演示:
        如下图:我在 nginx 镜像的容器中执行一个 echo 命令。

      detached 模式

      • docker container run命令基础上加一个 -d或者 --detach选项表示 detached 模式, 即在后台执行,
      • 在后台运行,启动后显示容器 ID,并且可以输入任何命令,这不会影响后台运行的容器。
      • docker run:创建容器,并立即启动运行,进入运行状态。
    • 演示:
      这个命令就不演示啦,大家可以自己试一试。
  • 演示:
    如下图:我们启动一个 nginx 的镜像容器,然后通过浏览器访问到我们的 nginx 服务器。
  • 演示:


  • 如下图:我们使用 -d 选项让一个容器后台运行。镜像是静态的只读文件,而容器带有运行时需要的可写文件层,并且容器中的进程属于运行状态。在这里插入图片描述

    docker stats

    • 功能:显示容器资源的使用情况,包括:CPU,内存,网络 I/O 等。
    • -e:设置环境变量。
    • -m:设置容器能够使用的内存的最大值。
    • 我们进入到这个目录:
      在这里插入图片描述
    • 然后我们进入 containers目录:
      在这里插入图片描述
    • 这里面的目录名字是容器的完整 ID 哈!我们查看我们的 nginx 镜像的容器的完整容器 ID。

    既可以使用 docker load命令来导入镜像库存储文件到本地镜像库,也可以使用docker import命令来导入一个容器快照到本地镜像库。
    在这里插入图片描述

    docker unpause

    • 功能:恢复一个或者多个容器中的所有进程。
      在这里插入图片描述


      如下图:我们可以使用 -e 选项添加环境变量!
      在这里插入图片描述


      当我们使用 --rm 选项启动容器的时候,当容器退出的时候,我们使用 docker ps 命令是看不到我们之前启动的这个容器的,直接被删除了嘛!
      如下图:并没有看到 NAME 为 test_–rm 的容器!
      在这里插入图片描述


      docker run 命令是由很多很多选项的哈!大家需要了解全部的选项可以到 docker hub 的官网上了解!

      docker ps

      • 功能:列出容器。
      • -u–user:指定用户。
      • -l:显示最近的一个容器。
        我们停掉之前启动的那个容器(之前的那个容器占用了我的服务器开放的端口,所以我将它停掉了),然后尝试使用 docker import导出的 test_import:v1镜像运行容器,可是直接报错了,无法启动!
        在这里插入图片描述
        我们使用 docker image inspect查看一下 test_import:v1这个镜像的详细信息。
        例如:docker kill --signal=SIGHUB mycontainer
      • killed by out-of-memory:宿主机内存被耗尽,也被成为 OOM:非计划终止,这是会杀掉占用内存最多的容器。
      • –cpu-period:用来指定容器对 CPU 的使用要在多长时间内做一次重新分配。只需要将最坏的情况封闭在一定范围之内,而不至于蔓延出去。因 为一个容器其实就是一组运行在宿主机操作系统当中的进程,宿主机操作系统通过 cgroups 对这组进程设定资源上限,当这些进程申请的资源到达上限时,触发的是宿 主机操作系统的内核 OOM 事件,因此最终是由宿主机内核来关闭这些进程.

      • 如果用户不想关闭这个容器,那么可以选择 --oom-kill-disable 来禁用 OOM-Killer。

      • 语法:
        dockerps[OPTIONS]
      • 别名:
        dockercontainer lsdockercontainer listdockercontainer ps
      • 参数:
        • -a:显示所有的容器,包括没有运行的。
        • –no-stream:显示你输入命令的那一刻,容器资源的使用情况,类似于快照读!
        • –no-trunc:不截断输出。如果指定的是一个压缩包,Docker 会在容器中相对于 /(根目录)对其解压缩。

        • 语法:

          dockerdiffCONTAINER
        • 说明:列出容器的文件系统中自容器创建以来已更改的文件和目录。最后::wq保存退出。使用 docker ps命令可以看到容器正在运行!
          在这里插入图片描述
          busybox 是一个非常小的 Linux 发行版,它包含了许多基本的 UNIX 工具。

        • docker pause:容器进入暂停状态。
        • 演示:
          如下图:我们使用 docker top命令查看正在运行的容器内的进程信息,一个没加 ps 命令的选项,一个加了部分 ps 命令的选项。
        • -t:为容器分配一个伪输入终端,通常与 -i 选项同时使用。
        • 别名:
          dockercontainer start
        • 演示:
          如下图:我们使用 docker create命令创建一个容器但是不运行,之后我们再使用 docker start启动这个处于 Created 状态的容器。
        • 语法:
          dockerrestart [OPTIONS]CONTAINER [CONTAINER...]
        • 别名:
          dockercontainer restart
        • 参数:
          • -s–signal:给容器发送一个信号。
          • 语法:
            dockerexport[OPTIONS]CONTAINER
          • 别名:
            dockercontainer export
          • 参数:
            • -o:写入到指定文件。
            • 语法:
              dockercreate [OPTIONS]IMAGE [COMMMAND][ARG...]
            • 别名:
              dockercontainer create
            • 参数:
              • -i:以交互模式运行容器,通常与 -t 选项同时使用。
              • -n–tail:仅列出最新 N 条容器的日志。

                Docker 容器的生命周期

                什么是容器?

                通俗地讲,容器是镜像的运行实体。

              • -h:指定容器的 hostname
              • 语法:
                dockerport CONTAINER [PRIVATAE_PORT[/PROTO]]
              • 别名:
                dockercontainer port
              • 说明:后面的 [PRIVATE_PORT[/PROTO]]就是指定端口,指定协议。暂停和删除五种状态。
              • docker rmi: 删除一个或多个镜像。
            • 说明:docker stop默认发送的信号是 SIGTERM信号,这个默认的信号是可以通过 Dockerfile中的 STOPSIGNAL设置的,也可以通过 docker run中的 --stop-signal设置。
            • 就算关掉窗口,断开网络容器依然继续运行,停止和删除容器都需要使用 shell 命令,减少了很多的误操作,
            • 比起 attached 模式更建议使用,

            detached 模式转 attached 模式:使用 docker attach 命令就好啦!

            interactive 模式

            • 当我们创建好一个容器之后, 可能需要去容器内部获取一些信息或执行一些命令,就
              需要进入到交互式模式。
              在这里插入图片描述

            当我们将 --sig-proxy参数设置为 false,我们再按下 ctrl + c并不会退出容器!!
            在这里插入图片描述

            docker exec

            • 功能:在一个正在运行的容器中执行命令。
            • -s:显示总的文件大小。
            • 退出交互模式使用 exit命令就好啦!

            常见问题

            docker create、

          • PIDs:容器创建的进程或线程数。
          • 演示:
            使用 docker port查看端口映射
            在这里插入图片描述

          docker pause

          • 功能:停止一个或者多个容器中的所有进程。
            docker run 命令是创建和启动的组合,因为它创建了一个新容器并立即启动它。
          • -m:设置容器能够使用的内存的最大值。CONTAINER可以是运行中的容器,也可以是停止运行的容器。
          • C:修改一个文件或者目录。只有设置了–restart 参数的容器,Docker Daemon 才会去尝试启动,否则容器 会保持停止状态。
          • -e:设置环境变量。
          • -m:提交时的说明文字!
        • 演示:
          刚刚我们不是使用 docker export导出了一个 tar 归档文件嘛,现在我们使用 docker import命令来创建一个镜像吧!
          如下图:我们将这个 tar 文件导出为 test_import:v1这样一个镜像,并且使用 -m参数附加了一些描述信息。可见使用 docker attach将终端的标准输入、默认是 true,如果设置为 false,退出的时候不会影响容器,否则则会导致容器退出。
          在这里插入图片描述

        docker container prune

        • 功能:删除所有停止的容器。当出现容器 关闭情况时,Docker Daemon 会尝试再次重新将此容器由 Stopped 状态转为 Running 状态。当 Init 进程退出时,也就代表着此容器被关 闭。.bzip、
        • 语法:
          dockerimage import[OPTIONS]file|URL|- [REPOSITORY[:TAG]]
        • 别名:
          dockerimport
        • 说明:您可以指定一个 URL 或-(破折号),直接从 STDIN 获取数据。
        • –rm:当容器退出的时候自动删除它,即容器退出的时候不会进入 Exited 状态,而是直接进入 Delete 状态。自我感觉意义不大,容器都没运行你看他的资源使用情况作用不大!
        • –format:指定返回的模板文件。
          在这里插入图片描述

        我在 nginx 镜像的容器中以交互式模式执行 bash 命令:
        在这里插入图片描述
        如上图,我们执行 bash 命令之后,就能和容器进行交互啦!在这个过程中我们没有进入容器哦!只是在和容器中启动的一个 bash 进程在进行交互!因此我们在输入 exit 命令退出的时候,只是退出了 bash 进程!而不会退出容器和容器中的其他进程!

        docker cp

        • 功能:在容器和宿主机之间拷贝文件。
      • –format:指定返回的文件模板。
    • 注意:docker inspect会自动检查是镜像还是容器然后显示相信信息
    • 演示:
      演示就不演示了,docker inspect出来的信息很多,其中有我们已经学过的,也有我们现在还没有学过的!不过不用担心,之后我们会慢慢接触到他们的!

    docker logs

    • 功能:查看容器日志。如果指定单个文件,则必须指定主机内的完整路径。
      在这里插入图片描述
    • 最后,我们将修改好的文件拷贝回容器中去!然后再使用浏览器访问这个 nginx 服务器看看效果。假设主机分配给此容器的内存上限为 1G, 当脚本申请的内存大于 1G 时,此容器就会触发 OOM 事件。

      docker import 和 docker load 有什么区别?

      想要了解 docker loaddocker import命令的区别,还必须知道 docker savedocker export命令:

      • docker save images_name:将一个镜像导出为文件,再使用 docker load命令将文件导入为一个镜像,会保存该镜像的的所有历史记录。

      • 如果用户使用了 --oom-kill-disable,但也没有使用 -m 来设定上限,因而此时此容器将会尽可能多地使用主机内存资源。

      • -e:设置环境变量。
        在这里插入图片描述
      • 然后进入 nginx 镜像容器的目录:
        在这里插入图片描述
      • 进入到里面之后,我们看到有一个 容器完整 ID-json.log这个里面就是以 json 文件格式保存的容器的日志啦!
        在这里插入图片描述
      • 我们可以看到日志的时间啊,日志类型等等。
      • –cpuset-cpus:绑定容器到指定的 CPU 上运行。也就是说,在容器内部,无法看到主机上的进程、运行、
      • running:运行状态。
      • –name:为容器指定一个名称。
      • 语法:
        dockerunpause CONTAINER [CONTAINER...]
      • 别名:
        dockercontainer unpause
      • 演示:
        我们使用 docker unpause命令将刚才处于 Paused 状态的容器启动起来!
        在这里插入图片描述

      docker rm

      • 功能:删除一个或者多个容器。ocker 目前没有办法知道此时的进程退出属于正常退出还是异常退出。
      • -c:使用 Dockerfile指令来创建镜像,可以修改启动指令!现在没法讲,后面讲镜像制作的时候再来吧!
      • -m:提交时的说明文字。
        在这里插入图片描述

      docker commit

      • 功能:从容器创建一个新的镜像。
      • –cpu-quota:用来指定在这个周期内,最多有多少时间可以用来跑这个容器。
      • docker rm:删除容器,容器进入删除状态。例如: –cpuset-cpus=“0,1,2”或者 –cpuset-cpus=“0-2”就是将容器绑定到 0-2 这三个 CPU 上面运行。


        如下图:我们使用 -i 选项运行一个容器,可以看到我们输入 ls 命令能够正常执行,能进行交互,只是交互的方式不友好!
        在这里插入图片描述
        上面就是仅使用 -i 选项的效果,当我们仅使用 -t 选项的时候,会为我们创建一个伪终端,但是没有加上 -i 选项就不能交互了!
        在这里插入图片描述
        因此,我们需要 -t -i 选项一起使用,才能达到理想的交互效果!
        在这里插入图片描述


        如下图:我们使用 nginx 镜像启动一个容器,-P 是随机端口映射,我们想要访问到 nginx 的主页就要看一下这个随机映射的端口是什么!
        在这里插入图片描述
        我们使用 docker ps 命令查看正在运行的容器,发现是主机的 32768 端口映射到了容器的 80 端口。
        docker start 命令将启动任何已停止的容器。如果是前台运行,网络断开的话,nginx 服务器就挂了!

      • attached 模式仅适用于容器和程序的调试阶段。.tar.xz 或 .txz),也可以指向 Docker 主机上的单个文件。
      • –name:为容器指定一个名称。这样,你就可以查看它的输出或对它进行交互式控制,就像直接在终端中运行命令一样。 但需要注意的是,此时关闭容器的并非是 Docker Daemon,而是宿主机操作系统。
      • –since:显示某个开始时间的所有日志。
      • D:删除一个文件或者目录。
      • –rm:当容器退出的时候自动删除它,即容器退出的时候不会进入 Exited 状态,而是直接进入 Delete 状态。 这将添加一个 容器层,该层允许修改镜像的整个副本。.tar.gz、
      • 语法:
        dockerpause CONTAINER [CONTAINER...]
      • 别名:
        dockercontainer pause
      • 演示:
        使用 docker pause命令暂停容器中的所有进程,可以看到 pause 之后容器的状态是 Paused。
      • –cpu-cpus:使用哪些 cpu。你需要提供一个命令来让容器持续运行,例如 top。 使用此参数时,仍需要注意,如果使用 -m 设置了此容器内存上限,那么当容器到达内存资源上限时,主机不会关闭容器,但也不会继续向此容器继续分配资源,此时容器 将处于 hung 状态。
        在这里插入图片描述

      如下图:使用 docker start启动一个处于 Exited 状态的容器。例如: –cpuset-cpus=“0,1,2”或者 –cpuset-cpus=“0-2”就是将容器绑定到 0-2 这三个 CPU 上面运行。 虽然容器的本质是主机上运行的一个进程,但是容器有自己独立的命名空间隔离和资 源限制。docker ps默认只列出处于 running状态的容器嘛。换言之,主机内存有多大,它就将用多大。

  • 演示:
    如下图:我有一个正在后台运行的 nginx 镜像的容器,我们使用 docker attach连接到这个正在运行的容器,我们使用浏览器能访问到 nginx 服务器,并且打印出来了日志信息。实际
    上,如果 docker run 命令在您的系统上找不到上述映像,它可以从 Docker Hub 中提
    取映像。
  • -h:指定容器的 hostname

  • 语法:

    dockerrun [OPTIONS]IMAGE [COMMAND][ARG ...]
  • 别名:

    dockercontainer run # 因为是属于容器的命令所以有这个 container,Docker 对命令进行了分类嘛
  • 参数:

    • -d:后台运行容器,并返回容器的 ID。
    • 语法:
      dockerexec[OPTINONS]CONTAINER COMMAND [ARG...]
    • 别名:
      dockercontainer exec
    • 参数:
      • -d:分离模式,在后台运行。
      • -t:为容器分配一个伪输入终端,通常与 -i 选项同时使用。
    • 演示:
      如下图:我们使用 dcoker rm删除一个处于停止状态的容器:
      在这里插入图片描述

    如下图:我们尝试使用 docker rm不加 -f参数删除一个处于 running 状态的容器,可以看到直接报错啦!报错信息也是给得非常详细哈!然后我们加上 -f参数就能强制删除这个正在运行的容器啦!
    在这里插入图片描述

    docker export

    • 功能:导出一个文件的内容为 tar 文件。