长期支持版本

    社区创新版本

      容器管理

      总体说明

      当前docker支持的子命令,按照功能划分为以下几组:

      功能划分

      命令

      命令功能

      主机环境相关

      version

      查看docker版本信息

      info

      查看docker系统和主机环境信息

      容器相关

      容器生命周期管理

      create

      由image创建一个容器

      run

      由image创建一个容器并运行

      start

      开始一个已停止运行的容器

      stop

      停止一个运行中的容器

      restart

      重启一个容器

      wait

      等待一个容器停止,并打印出退出码

      rm

      删除一个容器

      容器内进程管理

      pause

      暂停一个容器内的所有进程

      unpause

      恢复一个容器内被暂停的所用进程

      top

      查看容器内的进程

      exec

      在容器内执行进程

      容器检视工具

      ps

      查看运行中的容器(不加任何选项)

      logs

      显示一个容器的日志信息

      attach

      连接到一个容器的标准输入输出

      inspect

      返回容器的底层信息

      port

      列出容器与主机的端口映射

      diff

      返回容器相对于镜像中的rootfs所作的改动

      cp

      容器与主机之间复制文件

      export

      将一个容器中的文件系统导出为一个tar包

      stats

      实时查看容器的资源占用情况

      images相关

      生成一个新image

      build

      通过一个Dockerfile构建一个image

      commit

      基于容器的rootfs创建一个新的image

      import

      将tar包中的内容作为文件系统创建一个image

      load

      从一个tar包中加载一个image

      与image仓库有关

      login

      登录一个registry

      logout

      登出一个registry

      pull

      从registry中拉取一个image

      push

      将一个image推送到registry中

      search

      在registry中搜寻image

      与image管理有关

      images

      显示系统中的image

      history

      显示一个image的变化历史

      rmi

      删除image

      tag

      给image打标签

      save

      将一个image保存到一个tar包中

      其他

      events

      从docker daemon中获取实时事件

      rename

      重命名容器

      其中有些子命令还有一些参数选项如docker run,通过docker COMMAND --help可以查看相应COMMAND命令的帮助,命令选项参考上文的命令选项约定。下面详细介绍每个命令的使用。

      attach

      用法:docker attach [OPTIONS] CONTAINER

      功能:附加到一个运行着的容器

      选项:

      --no-stdin=false 不附加STDIN

      --sig-proxy=true 代理所有到容器内部的信号,不代理SIGCHLD, SIGKILL, SIGSTOP

      示例:

      $ sudo docker attach attach_test
      root@2988b8658669:/# ls bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
      

      commit

      用法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

      功能:由一个容器创建一个新的image

      选项:

      -a, --author="" 指定作者

      -m, --message="" 提交的信息

      -p, --pause=true 在提交过程中暂停容器

      示例:

      运行一个容器,然后将这个容器提交成一个新的image

      $ sudo docker commit test busybox:test
      sha256:be4672959e8bd8a4291fbdd9e99be932912fe80b062fba3c9b16ee83720c33e1
      
      $ sudo docker images
      REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
      busybox             latest              e02e811dd08f        2 years ago         1.09MB
      

        

      cp

      用法:docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-

      docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

      功能:从指定的容器内的一个路径复制文件或文件夹到主机的指定路径中,或者把主机的文件或者文件夹拷贝到容器内。

      注意:docker cp不支持容器内/proc,/sys,/dev,/tmp等虚拟文件系统以及用户在容器内自行挂载的文件系统内的文件拷贝。

      选项:

      -a, --archive 将拷贝到容器的文件属主设置为容器运行用户(--user)

      -L, --follow-link 解析并跟踪文件的符号链接

      示例:

      复制registry容器中/test目录到主机的/home/aaa目录中

      $ sudo docker cp registry:/test /home/aaa
      

      create

      用法:docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

      功能:使用image创建一个新的容器,并将返回一个容器的ID,创建之后的容器用docker start命令启动,OPTIONS用于创建容器时对容器进行配置,有些选项将覆盖image中对容器的配置,COMMAND指定容器启动时执行的命令。

      选项:

      表 2 参数说明

      参数

      参数含义

      -a --attach=[]

      使控制台Attach到容器内进程的STDIN,STDOUT,STDERR

      --name=""

      指定容器的名字

      --add-host=[host:ip]

      在容器内的/etc/hosts中添加一个hostname到IP地址的映射

      e.g. --add-host=test:10.10.10.10

      --annotation

      设置容器的annotations。例如支持native.umask选项:

      --annotation native.umask=normal  启动的容器umask值为0022
      --annotation native.umask=secure # 启动的容器umask值为0027

      注意如果没有配置该参数,则使用dockerd中的umask配置。

      --blkio-weight

      blockio的相对权重,从10到1000

      --blkio-weight-device=[]

      blockio权重(设置相对权重)

      -c, --cpu-shares=0

      容器获得主机CPU的相对权重,通过设置这个选项获得更高的优先级,默认所有的容器都是获得相同的CPU优先权。

      --cap-add=[]

      添加Linux权能

      --cap-drop=[]

      清除Linux权能

      --cgroup-parent

      为容器设置cgroup父目录

      --cidfile=""

      将容器的ID写到指定的文件中

      e.g. --cidfile=/home/cidfile-test 将该容器的ID写入到/home/cidfile-test中

      --cpu-period

      设置CFS(完全公平调度策略)进程的CPU周期。

      默认值为100ms;一般--cpu-period参数和--cpu-quota是配合使用的,比如--cpu-period=50000 --cpu-quota=25000,意味着如果有1个CPU,该容器可以每50ms获取到50%的CPU。

      使用--cpus=0.5也可达到同样的效果

      --cpu-quota

      设置CFS(完全公平调度策略)进程的CPU配额,默认为0,即没有限制。

      --cpuset-cpus

      设置容器中进程允许运行的CPU (0-3, 0,1)。默认没有限制。

      --cpuset-mems

      设置容器中进程运行运行的内存内存节点 (0-3, 0,1),只对NUMA系统起作用。

      --device=[]

      将主机的设备添加到容器中 (e.g. --device=/dev/sdc:/dev/xvdc:rwm)

      --dns=[]

      强制容器使用指定的dns服务器(e.g. 创建容器时指定--dns=114.114.xxx.xxx,将在容器的/etc/resolv.conf中写入nameserver 114.114.xxx.xxx并将覆盖原来的内容)

      --dns-opt=[]

      设置DNS选项

      --dns-search=[]

      强制容器使用指定的dns搜索域名

      -e, --env=[]

      设置容器的环境变量

      --env=[KERNEL_MODULES=]:

      在容器中插入指定模块。目前仅支持Host主机上有的模块,且容器删除后Host主机上模块仍然驻留,且容器需要同时指定--hook-spec选项。以下都是参数的合法格式:

      KERNEL_MODULERS=

      KERNEL_MODULERS=a

      KERNEL_MODULERS=a,b

      KERNEL_MODULERS=a,b,

      --entrypoint=""

      覆盖image中原有的entrypoint,entrypoint设置容器启动时执行的命令

      --env-file=[]

      从一个文件中读取环境变量,多个环境变量在文件中按行分割(e.g. --env-file=/home/test/env,其中env文件中存放了多个环境变量)

      --expose=[]

      开放一个容器内部的端口,使用下文介绍的-P选项将会使开放的端口映射到主机的一个端口。

      --group-add=[]

      指定容器添加到额外的组

      -h, --hostname=""

      设置容器主机名

      --health-cmd

      设置容器健康检查执行的命令

      --health-interval

      相邻两次命令执行的间隔时间,默认 30s

      --health-timeout

      单次检查命令执行的时间上限,超时则任务命令执行失败,默认30s

      --health-start-period

      容器启动距离第一次执行健康检查开始的时间,默认0s

      --health-retries

      健康检查失败最大的重试次数,默认3

      --health-exit-on-unhealthy

      容器被检查为非健康后停止容器,默认false

      --host-channel=[]

      设置一个通道供容器内进程与主机进行通信,格式:<host path>:<container path>:<rw/ro>:<size limit>

      -i, --interactive=false

      设置STDIN打开即使没有attached

      --ip

      设置容器的IPv4地址

      --ip6

      设置容器的IPv6地址

      --ipc

      指定容器的ipc命名空间

      --isolation

      指定容器隔离策略

      -l, --label=[]

      设置容器的标签

      --label-file=[]

      从文件中获取标签

      --link=[]

      连接到其他容器,这个选项将在容器中添加一些被连接容器IP地址和端口的环境变量及在/etc/hosts中添加一条映射(e.g. --link=name:alias)

      --log-driver

      设置容器的日志驱动

      --log-opt=[]

      设置日志驱动选项

      -m, --memory=""

      设置容器的内存限制,格式<number><optional unit>, 其中 unit = b, k, m or g。该参数最小值为4m。

      --mac-address

      设置容器的mac地址 (e.g. 92:d0:c6:0a:xx:xx)

      --memory-reservation

      设置容器内存限制,默认与--memory一致。可认为--memory是硬限制,--memory-reservation是软限制;当使用内存超过预设值时,会动态调整(系统回收内存时尝试将使用内存降低到预设值以下),但不确保一定不超过预设值。一般可以和--memory一起使用,数值小于--memory的预设值。

      --memory-swap

      设置普通内存和交换分区的使用总量,-1为不做限制。如果不设置,则为--memory值的2倍,即SWAP可再使用与--memory相同的内存量。

      --memory-swappiness=-1

      设置容器使用交换内存的时机,以剩余内存百分比为度量(0-100)

      --net="bridge"

      设置容器的网络模式,当前1.3.0版本的docker有四个模式:bridge、host、none、container:<name|id>。默认使用的是bridge。

      • bridge:使用桥接模式在docker daemon启动时使用的网桥上创建一个网络栈。
      • host:在容器内使用主机的网络栈
      • none:不使用网络
      • container:<name|id>:重复利用另外一个容器的网络栈

      --no-healthcheck

      设置容器不使用健康检查

      --oom-kill-disable

      禁用OOM killer,建议如果不设置-m参数,也不要设置此参数。

      --oom-score-adj

      调整容器的oom规则(-1000到1000)

      -P, --publish-all=false

      将容器开放的所有端口一一映射到主机的端口,通过主机的端口可以访问容器内部,通过下文介绍的docker port命令可以查看具体容器端口和主机端口具体的映射关系。

      -p, --publish=[]

      将容器内的一个端口映射到主机的一个端口,format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort,如果没有指定IP代表侦听主机所有网卡的访问,如果没有指定hostPort,表示自动分配主机的端口。

      --pid

      设置容器的PID命名空间

      --privileged=false

      给予容器额外的权限,当使用了--privileged选项,容器将可以访问主机的所有设备。

      --restart=""

      设置容器退出时候的重启规则,当前1.3.1版本支持3个规则:

      • no:当容器停止时,不重启。
      • on-failure:当容器退出码为非0时重启容器,这个规则可以附加最大重启次数,如on-failure:5,最多重启5次。
      • always:无论退出码是什么都退出。

      --read-only

      将容器的根文件系统以只读的形式挂载

      --security-opt=[]

      容器安全规则

      --shm-size

      /dev/shm设备的大小,默认值是64M

      --stop-signal=SIGTERM

      容器停止信号,默认为SIGTERM

      -t, --tty=false

      分配一个伪终端

      --tmpfs=[]

      挂载tmpfs目录

      -u, --user=""

      指定用户名或者用户ID

      --ulimit=[]

      ulimit选项

      --userns

      指定容器的user命名空间

      -v, --volume=[]

      将主机的一个目录挂载到容器内部,或者在容器中创建一个新卷(e.g. -v /home/test:/home将主机的/home/test目录挂载到容器的/home目录下,-v /tmp 在容器中的根目录下创建tmp文件夹,该文件夹可以被其他容器用--volumes-from选项共享 )。不支持将主机目录挂载到容器/proc子目录,否则启动容器会报错。

      --volume-driver

      设置容器的数据卷驱动,可选。

      --volumes-from=[]

      将另外一个容器的卷挂载到本容器中,实现卷的共享(e.g. -volumes-from container_name将container_name中的卷挂载到这个容器中 )。-v和--volumes-from=[]是两个非常重要的选项用于数据的备份和热迁移。

      -w, --workdir=""

      指定容器的工作目录,进入容器时的目录

      示例:

      创建了一个名为busybox的容器,创建之后的容器用docker start命令启动。

      $ sudo docker create -ti --name=busybox busybox /bin/bash
      

      diff

      用法:docker diff CONTAINER

      功能:检视容器的差异,相比于容器刚创建时做了哪些改变

      选项:无

      示例:

      $ sudo docker diff registry
      C /root
      A /root/.bash_history
      A /test
      

        

      exec

      接口原型

      rpc Exec(ExecRequest) returns (ExecResponse) {}
      

      接口描述

      在容器中执行命令,采用的gRPC通讯方式从CRI服务端获取url,再通过获得的url与websocket服务端建立长连接,实现与容器的交互。

      注意事项

      执行一条单独的命令,也能打开终端与容器交互。stdin/stdout/stderr之一必须是真的。如果tty为真,stderr必须是假的。 不支持多路复用,在这种情况下,stdout和stderr的输出将合并为单流。

      参数

      参数成员

      描述

      string container_id

      容器ID

      repeated string cmd

      待执行的命令

      bool tty

      是否在TTY中执行命令

      bool stdin

      是否流式标准输入

      bool stdout

      是否流式标准输出

      bool stderr

      是否流式输出标准错误

      返回值

      返回值

      描述

      string url

      exec流服务器的完全限定URL

      export

      用法:docker export CONTAINER

      功能:将一个容器的文件系统内容以tar包导出到STDOUT

      选项:无

      示例:

      将名为busybox的容器的内容导出到busybox.tar包中:

      $ sudo docker export busybox > busybox.tar
      $ ls
      busybox.tar 
      

        

      inspect

      用法:docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE...]

      功能:返回一个容器或者镜像的底层信息

      选项:

      -f, --format="" 按照给定的格式输出信息

      -s, --size 若查询类型为容器,显示该容器的总体文件大小

      --type 返回指定类型的JSON格式

      -t, --time=120 超时时间的秒数,若在该时间内docker inspect未执行成功,则停止等待并立即报错。默认为120秒。

      示例:

      1. 返回一个容器的信息

        $ sudo docker inspect busybox_test
        [
            {
                "Id": "9fbb8649d5a8b6ae106bb0ac7686c40b3cbd67ec2fd1ab03e0c419a70d755577",
                "Created": "2019-08-28T07:43:51.27745746Z",
                "Path": "bash",
                "Args": [],
                "State": {
                    "Status": "running",
                    "Running": true,
                    "Paused": false,
                    "Restarting": false,
                    "OOMKilled": false,
                    "Dead": false,
                    "Pid": 64177,
                    "ExitCode": 0,
                    "Error": "",
                    "StartedAt": "2019-08-28T07:43:53.021226383Z",
                    "FinishedAt": "0001-01-01T00:00:00Z"
                },
        ......
        

          

      2. 按照给定格式返回一个容器的指定信息,下面的例子返回busybox_test容器IP地址

        $ sudo docker inspect -f {{.NetworkSettings.IPAddress}} busybox_test
        172.17.0.91
        

      logs

      用法:docker logs [OPTIONS] CONTAINER

      功能:抓取容器内的日志信息,容器可以是运行状态的也可以是停止状态的

      选项:

      -f, --follow=false 实时打印日志信息

      -t, --timestamps=false 显示日志的时间戳

      --since 显示指定时间之后的日志

      --tail="all" 设置显示的行数,默认显示所有

      示例:

      1. 查看jaegertracing容器的日志信息,该容器上跑了一个jaegertracing服务

        $ sudo docker logs jaegertracing
        {"level":"info","ts":1566979103.3696961,"caller":"healthcheck/handler.go:99","msg":"Health Check server started","http-port":14269,"status":"unavailable"}
        {"level":"info","ts":1566979103.3820567,"caller":"memory/factory.go:55","msg":"Memory storage configuration","configuration":{"MaxTraces":0}}
        {"level":"info","ts":1566979103.390773,"caller":"tchannel/builder.go:94","msg":"Enabling service discovery","service":"jaeger-collector"}
        {"level":"info","ts":1566979103.3908608,"caller":"peerlistmgr/peer_list_mgr.go:111","msg":"Registering active peer","peer":"127.0.0.1:14267"}
        {"level":"info","ts":1566979103.3922884,"caller":"all-in-one/main.go:186","msg":"Starting agent"}
        {"level":"info","ts":1566979103.4047635,"caller":"all-in-one/main.go:226","msg":"Starting jaeger-collector TChannel server","port":14267}
        {"level":"info","ts":1566979103.404901,"caller":"all-in-one/main.go:236","msg":"Starting jaeger-collector HTTP server","http-port":14268}
        {"level":"info","ts":1566979103.4577134,"caller":"all-in-one/main.go:256","msg":"Listening for Zipkin HTTP traffic","zipkin.http-port":9411}
        

          

      2. 加上-f选项,实时打印jaegertracing容器的日志信息

        $ sudo docker logs -f jaegertracing
        {"level":"info","ts":1566979103.3696961,"caller":"healthcheck/handler.go:99","msg":"Health Check server started","http-port":14269,"status":"unavailable"}
        {"level":"info","ts":1566979103.3820567,"caller":"memory/factory.go:55","msg":"Memory storage configuration","configuration":{"MaxTraces":0}}
        {"level":"info","ts":1566979103.390773,"caller":"tchannel/builder.go:94","msg":"Enabling service discovery","service":"jaeger-collector"}
        {"level":"info","ts":1566979103.3908608,"caller":"peerlistmgr/peer_list_mgr.go:111","msg":"Registering active peer","peer":"127.0.0.1:14267"}
        {"level":"info","ts":1566979103.3922884,"caller":"all-in-one/main.go:186","msg":"Starting agent"}
        

          

      pause-unpause

      用法:docker pause CONTAINER

      docker unpause CONTAINER

      功能:这两个命令是配对使用的,docker pause暂停容器内的所有进程,docker unpause恢复暂停的进程

      选项:无

      示例:

      本示例将演示一个跑了docker registry(docker镜像服务)服务的容器,当使用docker pause 命令暂停这个容器的进程后,使用curl命令访问该registry服务将阻塞,使用docker unpause命令将恢复registry服务,可以用curl命令访问。

      1. 启动一个registry容器

        $ sudo docker run -d --name pause_test -p 5000:5000 registry
        

        此时可以用curl命令访问这个服务,请求状态码会返回200 OK。

        $ sudo curl -v 127.0.0.1:5000
        

          

      2. 暂停这个容器内的进程

        $ sudo docker pause pause_test
        

        此时用curl命令访问这个服务将阻塞,等待服务开启。

      3. 恢复运行这个容器内的进程

        $ sudo docker unpause pause_test
        

        此时步骤2中的curl访问将恢复运行,请求状态码返回200 OK。

          

      port

      用法:docker port CONTAINER [PRIVATE_PORT[/PROTO]]

      功能:列出容器的端口映射,或者查找指定端口在主机的哪个端口

      选项:无

      示例:

      1. 列出容器所有的端口映射

        $ sudo docker port registry
        5000/tcp -> 0.0.0.0.:5000
        
      2. 查找容器指定端口的映射

        $ sudo docker port registry 5000
        0.0.0.0.:5000
        

      ps

      用法:docker ps [OPTIONS]

      功能:根据不同的选项列出不同状态的容器,在不加任何选项的情况下,将列出正在运行的容器

      选项:

      -a, --all=false 显示所用的容器

      -f, --filter=[] 筛选值,可用的筛选值有:exited=<int>容器的退出码status=(restarting|running|paused|exited)容器的状态码(e.g. -f status=running,列出正在运行的容器)

      -l, --latest=false 列出最近创建的一个容器

      -n=-1 列出最近n此创建的容器

      --no-trunc=false 将64位的容器ID全部显示出来,默认显示12位容器的ID

      -q, --quiet=false 显示容器的ID

      -s, --size=false 显示容器的大小

      示例:

      1. 列出正在运行的容器

        $ sudo docker ps
        
      2. 列出所有的容器

        $ sudo docker ps -a
        

      rename

      用法:docker rename OLD_NAME NEW_NAME

      功能:重命名容器

      示例:

      示例中,用docker run创建并启动一个容器,使用docker rename对容器重命名,并查看容器名是否改变。

      $ sudo docker ps
      CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
      b15976967abb        busybox:latest        "bash"              3 seconds ago       Up 2 seconds                            festive_morse
      $ sudo docker rename pedantic_euler new_name
      $ sudo docker ps
      CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
      b15976967abb        busybox:latest        "bash"              34 seconds ago      Up 33 seconds                           new_name
      

        

      restart

      用法:docker restart [OPTIONS] CONTAINER [CONTAINER...]

      功能:重启一个运行中的容器

      选项:

      -t, --time=10 在杀掉容器之前等待容器停止的秒数,如果容器已停止,就重启。默认为10秒。

      示例:

      $ sudo docker restart busybox
      

      说明:
      容器在restart过程中,如果容器内存在D状态或Z状态的进程,可能会导致容器重启失败,这需要进一步分析导致容器内进程D状态或Z状态的原因,待容器内进程D状态或Z状态解除后,再进行容器restart操作。

      rm

      用法:docker rm [OPTIONS] CONTAINER [CONTAINER...]

      功能:删除一个或多个容器

      选项:

      -f, --force=false 强制删除运行中的容器

      -l, --link=false 删除指定的链接,而不是底层容器

      -v, --volumes=false 删除与容器关联的卷

      示例:

      1. 删除一个停止运行的容器

        $ sudo docker rm test
        
      2. 删除一个正在运行的容器

        $ sudo docker rm -f rm_test
        

      run

      用法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

      功能:该命令将由指定的image(如果指定的IMAGE不存在,则从官方镜像库中下载一个镜像)创建一个容器,并启动这个容器,并在容器中执行指定的命令。该命令集成了docker create命令、docker start命令、docker exec命令。

      选项:(该命令的选项与docker create命令的选项一样,请参考docker create命令选项,仅仅多了以下两个选项)

      --rm=false 设置容器退出时自动删除容器

      -v 挂载本地目录或匿名卷到容器内。注意:当将本地目录以带有selinux的安全标签的方式挂载到容器内的同时,尽量不要同时做该本地目录的增删操作,否则该安全标签可能不生效

      --sig-proxy=true 发往进程信号的代理,SIGCHLD, SIGSTOP, SIGKILL不使用代理

      示例:

      使用busybox镜像运行一个容器,在容器启动后执行/bin/sh

      $ sudo docker run -ti busybox /bin/sh
      

      start

      用法:docker start [OPTIONS] CONTAINER [CONTAINER...]

      功能:启动一个或多个未运行容器

      选项:

      -a, --attach=false 容器的标准输出和错误输出附加到host的STDOUT和STDERR上

      -i, --interactive=false 容器的标准输入附加到host的STDIN上

      示例:

      启动一个名为busybox的容器,添加-i -a选项附加标准输入输出,容器启动后直接进入容器内部,输入exit可以退出容器。

      如果启动容器时不加-i -a选项,容器将在后台启动。

      $ sudo docker start -i -a busybox
      

      stats

      用法:docker stats [OPTIONS] [CONTAINER...]

      功能:持续监控并显示指定容器(若不指定,则默认全部容器)的资源占用情况

      选项:

      -a, --all 显示所有容器(默认仅显示运行状态的容器)

      --no-stream 只显示第一次的结果,不持续监控

      示例:

      示例中,用docker run创建并启动一个容器,docker stats将输出容器的资源占用情况。

      $ sudo docker stats
      CONTAINER ID        NAME                    CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
      2e242bcdd682        jaeger                  0.00%               77.08MiB / 125.8GiB   0.06%               42B / 1.23kB        97.9MB / 0B         38
      02a06be42b2c        relaxed_chandrasekhar   0.01%               8.609MiB / 125.8GiB   0.01%               0B / 0B             0B / 0B             10
      deb9e49fdef1        hardcore_montalcini     0.01%               12.79MiB / 125.8GiB   0.01%               0B / 0B             0B / 0B             9
      

        

      stop

      用法:docker stop [OPTIONS] CONTAINER [CONTAINER...]

      功能:通过向容器发送一个SIGTERM信号并在一定的时间后发送一个SIGKILL信号停止容器

      选项:

      -t, --time=10 在杀掉容器之前等待容器退出的秒数,默认为10S

      示例:

      $ sudo docker stop -t=15 busybox
      

      top

      用法:docker top CONTAINER [ps OPTIONS]

      功能:显示一个容器内运行的进程

      选项:无

      示例:

      先运行了一个名为top_test的容器,并在其中执行了top指令

      $ sudo docker top top_test
      UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
      root                70045               70028               0                   15:52               pts/0               00:00:00            bash
      

      显示的PID是容器内的进程在主机中的PID号。

      update

      用法:docker update [OPTIONS] CONTAINER [CONTAINER...]

      功能:热变更一个或多个容器配置。

      选项:

      表 3 参数说明

      参数

      参数含义

      --accel=[]

      设置容器加速器,可设置一个或多个。

      --blkio-weight

      设置容器blockio的相对权重,从10到1000。

      --cpu-shares

      设置容器获得主机CPU的相对权重,通过设置这个选项获得更高的优先级,默认所有的容器都是获得相同的CPU优先权。

      --cpu-period

      设置CFS(完全公平调度策略)进程的CPU周期。

      默认值为100ms;一般--cpu-period参数和--cpu-quota是配合使用的,比如--cpu-period=50000 --cpu-quota=25000,意味着如果有1个CPU,该容器可以每50ms获取到50%的CPU。

      --cpu-quota

      设置CFS(完全公平调度策略)进程的CPU配额,默认为0,即没有限制

      --cpuset-cpus

      设置容器中进程允许运行的CPU (0-3, 0,1)。默认没有限制

      --cpuset-mems

      设置容器中进程运行运行的内存内存节点 (0-3, 0,1),只对NUMA系统起作用

      --kernel-memory=""

      设置容器的kernerl内存限制,格式<number><optional unit>, 其中 unit = b, k, m or g。

      -m, --memory=""

      设置容器的内存限制,格式<number><optional unit>, 其中 unit = b, k, m or g。该参数最小值为4m。

      --memory-reservation

      设置容器内存限制,默认与--memory一致。可认为--memory是硬限制,--memory-reservation是软限制;当使用内存超过预设值时,会动态调整(系统回收内存时尝试将使用内存降低到预设值以下),但不确保一定不超过预设值。一般可以和--memory一起使用,数值小于--memory的预设值。

      --memory-swap

      设置普通内存和交换分区的使用总量,-1为不做限制。如果不设置,则为--memory值的2倍,即SWAP可再使用与--memory相同的内存量。

      --restart=""

      设置容器退出时候的重启规则,当前1.3.1版本支持3个规则:

      • no:当容器停止时,不重启。
      • on-failure:当容器退出码为非0时重启容器,这个规则可以附加最大重启次数,如on-failure:5,最多重启5次。
      • always:无论退出码是什么都退出。

      --help

      打印help信息。

      示例:

      变更一个容器名为busybox的cpu和mem配置,包括容器获得主机CPU的相对权重值为512,容器中进程允许运行的CPU核心为0,1,2,3,容器运行内存限制为512m。

      $ sudo docker update  --cpu-shares 512  --cpuset-cpus=0,3 --memory 512m ubuntu 
      

      wait

      用法:docker wait CONTAINER [CONTAINER...]

      功能:等待一个容器停止,并打印出容器的退出码

      选项:无

      示例:

      先开启一个名为busybox的容器

      $ sudo docker start -i -a busybox
      

      执行docker wait

      $ sudo docker wait busybox
      0
      

      将阻塞等待busybox容器的退出,退出busybox容器后将看到打印退出码“0”。

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份