操作Docker容器

容器是镜像的一个运行实例。所不同的是,镜像是静态地只读文件,而容器带有运行时的可写文件层,同时,容器中的应用进程处于运行状态。

如果认为虚拟机是模拟运行的一整套操作系统和在上面跑应用。那么Docker容器是独立运行一个(或一组)应用,以及他们必须得运行环境。

1. 创建容器

1.1 新建容器

使用docker [container] create 命令新建一个容器,例如:

[root@localhost ~]# docker create -it ubuntu:latest
c716ec0d80bf4c2afa1e783ccf36a191ee09ac6f5c4fc7936fcde1571736b2cf
[root@localhost ~]# docker ps -a 
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS    PORTS     NAMES
c716ec0d80bf   ubuntu:latest   "/bin/bash"   10 seconds ago   Created             crazy_elion

 

create命令与容器运行模式相关的选项

选项说明
-a, --attach=[]是否绑定到标准输入、输出和错误
-d, --detach=true|false是否在后台运行容器,默认为false
-detach-keys=“”从attach模式推出的快捷键
--entrypoint=“”镜像存在入口命令时,覆盖为新的命令
--expose=[]指定容器会暴露出来的端口或端口范围
--group-add=[]运行容器的用户组
-i, --interactive=true|false保持标准输入打开,默认为false
--ipc=“”容器IPC命名空间,可以为其他容器或主机
--isolation=“default”容器使用的隔离机制
--log-drive=“json-file”指定容器的日志驱动类型,可以为json-file、syslog、journald、gelf、fluentd、awslogs、splunk、etwlogs、gcplogs或none
--log-opt=[]传递给日志驱动的选项
--net=“bridge”指定容器网络模式,包括bridge、none、其他容器内网络、host的网络或某个现有的网络等
--net-alias=[]容器在网络中的别名
-P, --published-all=true|false通过NAT机制将容器标记暴露的端口自动映射到本地主机的临时端口
-p, -publish=[]指定如何映射到本地主机端口,例如:-p 11234 - 12234:1234-2234
--pid=host容器的PID命名空间
--userns=“”启用userns-remap时配置用户命名控件的模式
--uts=host容器的UTS命名空间
--restart=“no”容器的重启策略,包括no、on-failure[:max-retry]、always、unless-stopped等
--rm=true|false容器退出后是否自动删除,不能跟-d同时使用
-t, --tty=true|false是否分配一个伪终端,默认为false
–tmpfs=[]挂载临时文件系统到容器
-v, --volume[=[HOST-DIR:]CONTAINER-DIR[:OPTIONS]]]挂载主机上的文件卷到容器内
--volume-driver=“”挂载文件卷的驱动类型
--volumes-from=[]从其他容器挂载卷
-w, --workdir=“”容器内的默认工作目录

create命令与容器环境和配置相关的选项

选项说明
--add-host=[]在容器内添加一个主机名到IP地址的映射关系(通过/etc/hosts文件)
--device=[]映射物理机上的设备到容器内
--dns-search=[]NDS搜索域
--dns-opt=[]自定义的DNS选项
--dns=[]自定义的DNS服务器
-e, --env=[]指定容器内环境变量
--env-file=[]从文件中读取环境变量到容器内
-h, --hostname=“”指定容器内的主机名
--ip=“”指定容器内的IPv4地址
--ip6=“”指定容器内的IPv6地址
--link=[<name or id>:alias]链接到其他容器
--link-local-ip=[]:容器的本地链接地址列表
--mac-address=“”指定容器的Mac地址
--name=“”指定容器的别名

create命令与容器资源限制和安全保护相关的选项

选项说明
--blkio-weight=10~1000容器读写块设备的I/O性能权重,默认为10
--blkio-weight-device=[DEVICE_NAME:WEIGHT]指定各个块设备的I/O性能权重
--cpu-shares=0允许容器使用CPU资源的相对权重,默认一个容器能用满一个核的CPU
--cap-add=[]增加容器的Linux指定安全能力
--cap-drop=[]移除容器的Linux指定安全能力
--cgroup-parent=“”容器cgroups限制的创建路径
--cidfile=“”指定容器的进程ID号写到文件
--cpu-period=0限制容器在CFS调度器下的CPU占用时间片
--cpuset-cpus=“”限制容器能使用哪些CPU核心
--cpuset-mems=“”NUMA架构下使用哪些核心的内存
--cpu-quota=0限制容器在CFS调度器下的CPU配额
--device-read-bps=[]挂载设备的读吞吐率(以bps为单位)限制
--device-write-bps=[]挂载设备的写吞吐率(以bps为单位)限制
--device-read-iops=[]挂载设备的读速率(以每秒i/o次数为单位)限制
--device-write-iops=[]挂载设备的写速率(以每秒i/o次数为单位)限制
--health-cmd=“”指定检查容器健康状态的命令
--health-interval=0s执行健康检查的间隔时间,单位可以为ms、s、m或h
--health-retries=int健康检查失败重试次数,超过则认为不健康
--health-start-period=0s容器启动后进行健康检查的等待时间,单位可以为ms、s、m或h
--health-timeout=0s健康检查执行超时,单位可以为ms、s、m或h
--no-healthcheck=true|false是否禁用健康检查
--init在容器中执行一个init进程,来负责响应信号和处理僵尸状态子进程
--kernal-memory=“”限制容器使用内核的内存大小,单位可以是k、b、m或g
-m, --memory=“”限制容器内应用使用的容器内存,单位可以是k、b、m或g
--memory-reservation=“”当系统中内存过低时,容器会被强制限制内存到给定值,默认情况下等于内存限制值
--memory-swap=“LIMIT”限制容器内使用内存和交换区的总大小
--oom-kill-disable=true|false内存耗尽时是否杀死容器
--oom-score-adj=“”调整容器内存耗尽参数
--pids-limit=“”限制容器的pid个数
--privileged=true|false是否给容器高权限,这意味着容器内应用将不再受权限的限制,一般不推荐
--read-only=true|false是否让容器内的文件系统只读
--security-opt=[]指定一些安全参数,包括权限、安全能力、apparmor等
--stop-signal=SIGTERM指定停止容器的系统信号
--shm-size=“”/dev/shm的大小
--sig-proxy=true|false是否代理收到的信号给应用,默认为true,不能代理SIGCHLD、SIGSTOP和SIGKILL信号
--memory-swappiness=“0~100”调整容器内存交换区参数
-u, --user=“”指定在容器内执行命令的用户信息
--userns=“”指定用户命名空间
--ulimit=[]通过ulimit来限制最大文件数、最大进程数等

其他选项还包括:

-l,--label=[] :以键值对方式指定容器的标签信息;

--label-file=[]:从文件中读取标签信息。

1.2. 启动容器

使用docker [container] create 命令新建的容器处于停止状态,使用docker [container] start命令来启动它

[root@localhost ~]# docker start c716ec0d80bf
c716ec0d80bf
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS              PORTS     NAMES
c716ec0d80bf   ubuntu:latest   "/bin/bash"   48 minutes ago   Up About a minute             crazy_elion

1.3. 新建并启动容器

除了创建容器后在通过start来启动它,还可以直接创建并启动容器。

需要的命令为docker [comtainer] run ,等价于先执行docker [container] create 命令,在执行 docker [container] start 命令。

例如,输出一个“holle world” ,之后容器自动终止:

[root@localhost ~]#  docker run ubuntu /bin/echo "holle world"
holle world
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                      PORTS     NAMES
e7a37de014b7   ubuntu    "/bin/echo 'holle wo…"   21 seconds ago   Exited (0) 20 seconds ago             cranky_lalande
add5288a1367   ubuntu    "/bin"                   41 seconds ago   Created                               strange_shirley
 

当利用docker [container] 创建并启动容器时,Docker在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载;
  • 利用镜像创建一个容器,并启动该容器;
  • 分配一个文件系统给该容器,并在只读的镜像层外挂载一层可写读层;
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;
  • 从网桥的地址池配置一个IP地址给容器
  • 执行用户的指定程序
  • 执行完毕后容器被自动终止

下面的命令启动启动一个bash终端,允许用户进行交互:

[root@localhost ~]# docker run -it ubuntu:18.04 /bin/bash
root@e5c35d72775d:/# 

-t选项让Docker 分配一个为终端并绑定到容器的标准输入上,-i则让容器的标准输入保持打开。
root@e5c35d72775d:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@e5c35d72775d:/# ps
   PID TTY          TIME CMD
     1 pts/0    00:00:00 bash
    13 pts/0    00:00:00 ps
在容器中使用ps可以看到只运行了bash应用,并无其它无关进程

root@e5c35d72775d:/# exit
[root@localhost ~]# 
当使用exit命令退出bash进程后,容器也会自动退出。这是因为对于容器来说,当其中的应用退出后,容器的使命就完成了,也就没有继续运行必要了。

可以使用docker container wait CONTAINER [CONTAINER..]来等待容器退出,并打印退出返回结果

[root@localhost ~]# docker wait 3ad9498d436c
127
wait后面可以是ID或容器名

某些时候,执行docker [container] run时因为命令无法正常执行容器会直接退出,此时可以查看退出的错误码。

默认情况下。常见的错误码:

125:Docker daemon执行出错,例如指定了不支持的Docker命令参数;

126:所指定命令无法执行,例如权限出错;

127:容器内命令无法找到。

命令执行后出错,会默认返回命令的错误码。

1.4. 守护态运行

更多的时候,需要让Docker容器在后台以守护态形式运行。此时,可以通过-d参数来实现。

[root@localhost ~]# docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
d496d020c0d7a630d2d8053a33b771b4791c7cd6b7847a983080625580d4fe6e
容器启动后会返回唯一的id,可以通过 docker ps 或 docker container ls 命令来查看容器信息。

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
d496d020c0d7   ubuntu    "/bin/sh -c 'while t…"   2 minutes ago   Up 2 minutes             bold_cray
 

[root@localhost ~]# docker container ls -a
CONTAINER ID   IMAGE          COMMAND                  CREATED             STATUS                         PORTS     NAMES
d496d020c0d7   ubuntu         "/bin/sh -c 'while t…"   5 minutes ago       Up 5 minutes                             bold_cray
4fff362db4c8   ubuntu:18.04   "/bin/bash"              39 minutes ago      Exited (0) 39 minutes ago                admiring_wilson
3ad9498d436c   ubuntu:18.04   "/bin/bash"              52 minutes ago      Exited (127) 50 minutes ago              sleepy_chatterjee
e5c35d72775d   ubuntu:18.04   "/bin/bash"              About an hour ago   Exited (0) 59 minutes ago                upbeat_torvalds
e7a37de014b7   ubuntu         "/bin/echo 'holle wo…"   About an hour ago   Exited (0) About an hour ago             cranky_lalande
add5288a1367   ubuntu         "/bin"                   About an hour ago   Created                                  strange_shirley

1.5查看容器输出

获取容器的输出信息,可以通过docker [container] logs 命令。

该命令支持的选项:

--details:打印详细信息;

-f,--follow:持续保持输出;

--since string: 输出从某个时间开始的日志;

--tail string:输出最近的若干日志;

-t,--timestamps:显示时间戳信息;

-until string :输出某个时间的日志。

查看某容器输出可以使用如下命令:

[root@localhost ~]# docker logs d496d020c0d7
hello world

[root@localhost ~]# docker logs --details d496d020c0d7
 hello world

[root@localhost ~]# docker logs -t d496d020c0d7
2023-04-08T10:23:35.029232488Z hello world
 

2. 停止容器

2.1 暂停容器

可以使用docker [container] pause CONTAINER [CONTAINER..] 命令来暂停一个运行中的容器。

例如:docker run --name test --rm -it ubuntu bash

[root@localhost ~]# docker pause test
test
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS                   PORTS     NAMES
f50ca1e0e3b6   ubuntu    "bash"    44 seconds ago   Up 43 seconds (Paused)             test
 

处于paused状态的容器,可以使用docker [container] unpause CONTAINER [CONTAINER..]命令来恢复到运行状态。

2.2 终止容器

可以使用docker[container] stop 来终止一个运行中的容器。该命令的格式为 docker [container] stop [-t] --time [=10] [container]。

该命令首先发送SIGTERM信号,等待一段超过时间后(默认为10s),再发送SIGKILL信号来终止容器:

[root@localhost ~]# docker stop 47cbd7884e76
47cbd7884e76
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS                       PORTS     NAMES
47cbd7884e76   ubuntu    "bash"    8 minutes ago   Exited (137) 3 seconds ago             test
 

此时运行docker container prune 命令,会自动清除掉所有处于停止状态的容器。

[root@localhost ~]# docker container prune 
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
47cbd7884e769d02b6c7c8610cbdac1d81f32093098001472cf3e6bcfa927830

Total reclaimed space: 0B
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
 

此外,还可以通过docker [container] kill 命令直接发送SIGKILL信号来强行终止容器。

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED              STATUS         PORTS     NAMES
f0334689e3b4   ubuntu    "bash"    About a minute ago   Up 8 seconds             test
[root@localhost ~]# docker kill test
test
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED              STATUS                       PORTS     NAMES
f0334689e3b4   ubuntu    "bash"    About a minute ago   Exited (137) 8 seconds ago             test
 

当docker指定的应用终止时,容器也会自动终止。只启动一个终端的容器,通过exit或者ctrl+d退出终端时,所创建的容器立刻终止,处于stoped状态。

处于终止状态的容器,可以通过docker [comtainer] start 命令来重新启动:

[root@localhost ~]# docker start test
test
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAMES
f0334689e3b4   ubuntu    "bash"    8 minutes ago   Up 2 seconds             test
 

docker [container] restart 命令会将一个运行状态的容器先终止,在重新启动:

[root@localhost ~]# docker restart test
test
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS          PORTS     NAMES
f0334689e3b4   ubuntu    "bash"    10 minutes ago   Up 13 seconds             test
 

3. 进入容器

在使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息,也无法进行操作。

这时候可以使用官方的attach或exec命令。

3.1 attach命令

attach是Docker 自带的命令,命令格式为:

docker [container] attach [--detach-krys[=[]]] [--no-stdin] [--sig-proxy[=true]] CONTAINER

这个命令支持三个主要选项:

---detach-krys[=[]] :指定退出attach模式的快捷键序列,默认是CTRL-p CTRL-q;

--no-stdin=true|false:是否关闭标准输入,默认是保持打开;

--sig-proxy=true|false:是否代理收到的系统信号给应用程序,默认为true。

[root@localhost ~]# docker run -itd ubuntu
20bea78ae52d442c377a19eba0bd37e1025aa51e4aafc1d9b746be9bf8f0ed05
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
20bea78ae52d   ubuntu    "/bin/bash"   11 seconds ago   Up 10 seconds             wizardly_knuth
[root@localhost ~]# docker attach wizardly_knuth
root@20bea78ae52d:/# 
然而使用attach有时候并不方便。当多个窗口同时attach到同一个容器时,所有窗口都会同步显示,当某个窗口因命令堵塞时,其他窗口也无法执行操作了。

3.2. exec命令

从Docker 1.3.0 版本起,Docker提供了一个更加方便的工具exec命令,可以在运行容器内直接执行任意命令。

该命令格式为:

docker [container] exec [-d|--detach] [--detach-keys[=]]] [-i|--interactive] [--privileged] [-t|--tty] [-u|--user[=USER]] CONTAINER COMMAND [ARG...]

比较重要的参数有:

  • -d,--detach:在容器中后台执行命令;
  • --detach-keys="":指定将容器切回后台的按键;
  • -e,--env=[]:指定环境变量列表;
  • -i,--interactive=true|false:打开标准输入接受用户输入命令,默认值为false;
  • -t,--tty=true|false:分配伪终端,默认值为false;
  • --privileged=true | false:是否给执行命令以最高权限,默认值为false;
  • -u,--user=“”:执行命令的用户或ID

[root@localhost ~]# docker exec -it 754 /bin/bash
root@7548fb45a1c8:/# 
 

可以看到会打开一个新的bash终端,在不影响容器内其他应用的前提下,用户可以与容器交互。

4. 删除容器

可以使用docker [container] rm命令来删除处于终止或退出状态的容器,命令格式为docker[container] rm [f|--force] [-l|--link] [-v| --volumes] CONTAINER [CONTAINER...].

主要支持的选项有:

-f,--force=false:是否强行终止并删除一个运行中容器;

-l,--link=false:删除容器的链接,但保留容器;

-v, --volumes=false:删除容器挂载的数据库卷。

例如,查看处于终止状态的容器,并删除:

[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED             STATUS                      PORTS     NAMES
7548fb45a1c8   ubuntu    "/bin/bash"   24 minutes ago      Up 24 minutes                         objective_neumann
20bea78ae52d   ubuntu    "/bin/bash"   39 minutes ago      Exited (0) 25 minutes ago             wizardly_knuth
f0334689e3b4   ubuntu    "bash"        About an hour ago   Up 52 minutes                         test
[root@localhost ~]# docker rm 20bea78ae52d
20bea78ae52d
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED             STATUS          PORTS     NAMES
7548fb45a1c8   ubuntu    "/bin/bash"   24 minutes ago      Up 24 minutes             objective_neumann
f0334689e3b4   ubuntu    "bash"        About an hour ago   Up 53 minutes             test
默认情况下,docker rm 命令只能删除处于终止或退出状态的容器,并不能删除还处于运行状态下的容器。

如果要强行删除可以添加-f参数。Docker会先发送SIGKILL信号给容器,终止其中的应用,之后强行删除。

5. 导入和到处容器

某些时候,需要将容器从一个系统迁移到另外一个系统,此时可以使用Docker的导入和到处功能,这也是Docker自身提供的一个重要特性。

5.1.到出容器

导出容器是指,导出一个已创建的容器到一个文件,不管此时容器是否处于运行状态。使用docker [container] export 命令,该命令格式为:

docker [container] export [-o | --output [=""]] CONTAINER

其中可以通过-o指定导出文件的tar文件名,也可以直接通过重定向来实现。

[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED        STATUS        PORTS     NAMES
7548fb45a1c8   ubuntu    "/bin/bash"   13 hours ago   Up 13 hours             objective_neumann
f0334689e3b4   ubuntu    "bash"        14 hours ago   Up 13 hours             test
[root@localhost ~]# docker export -o test_run.tar 754
[root@localhost ~]# docker export -o test_stop.tar f03
[root@localhost ~]# ls
test_run.tar  test_stop.tar  
之后,可以将导出的tar文件传输到其他机器上,然后在通过导入命令导入系统中,实现容器的迁移。

5.2. 导入容器

导出的文件可以使用docker [container] import 命令导入变成镜像,该命令格式为:

docker import [-c|--changs[=[]]] [-m|--message[=MESSAGE]] file |URL|- [REPOSITORY[:TAG]]

用户通过-c,--change=[] 选项在导入的同时执行对容器进行修改的dockerfile指令。

[root@localhost ~]# docker import test_run.tar  test/ubuntu:0.1
sha256:657912304f3f8d20e0700803f99a047a5f6e3a0d04c3bd05f6caddfa76fe46c3
[root@localhost ~]# docker images
REPOSITORY     TAG       IMAGE ID       CREATED          SIZE
test/ubuntu    0.1       657912304f3f   3 seconds ago    77.8MB
test           0.1       228bd5a8f00b   14 hours ago     63.1MB
ubuntu         latest    08d22c0ceb15   4 weeks ago      77.8MB
ubuntu         18.04     3941d3b032a8   4 weeks ago      63.1MB
docker load和docker import十分相似,实际上,既可以使用docker load命令来导入系统镜像存储到本地镜像库,也可以使用docker import命令来导入一个容器快照到本地镜像库。这两者的区别在于:容器快照将丢失所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整状态,体积更大。此外,从容器快照导入可以重新指定标签等元数据信息。

6.查看容器

inspect 、top、stats命令

6.1. 查看容器详情

查看容器去详情使用docker container inspect [OPTIONS] CONTAINER [CONTAINER...]命令

例如,查看某容器的具体信息,会以json格式返回包括容器的ID、创建时间、路径、状态、镜像、配置等各项信息:

[root@localhost ~]# docker inspect 754
[
    {
        "Id": "7548fb45a1c840f5439ccfe52b7553e72f0f0c00f56f05d7074fadbed683590b",
        "Created": "2023-04-08T13:02:44.081480978Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
...

6.2 查看容器内进程

使用 docker [container] top [OPTIONS] CONTAINER [CONTAINER...]命令。

类似于linux中的top命令会打印出容器内的进程信息,包括PID、用户、时间、命令等。例如:

[root@localhost ~]# docker top 754
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                67368               67348               0                   Apr08               pts/0               00:00:00            /bin/bash
 

6.3. 查看统计信息

查看统计信息使用 docker [container] stats [OPTIONS] [CONTAINER...]命令,会显示CPU、内存、存储、网络等使用情况的统计信息。

支持选项包括:

  • -a,--all:输出所有容器统计信息,默认仅在运行中;
  • -format srting :格式化输出信息;
  • -no-stream:不持续输出,默认会自动更新持续实时结果;
  • -no-trunc:不截断输出信息

[root@localhost ~]# docker stats 754

CONTAINER ID   NAME                CPU %     MEM USAGE / LIMIT   MEM %     NET I/O     BLOCK I/O   PIDS
7548fb45a1c8   objective_neumann   0.00%     560KiB / 972.4MiB   0.06%     656B / 0B   0B / 0B     1

7. 其他容器命令

cp、diff、port、update

7.1. 复制文件

container cp 命令支持在容器和主机之间复制文件。格式为docker [container] cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-。

支持的选项有:

  • -a,--archive:打包模式,复制文件会带有原始的uid/gid信息;
  • -L,--follow-link:跟随软连接。当原始路径为软连接时,默认只复制软连接信息,使用该选项会复制链接的目标内容。

例如,将本地的data复制到容器/tmp路径下

[root@localhost ~]# docker cp data 7548fb45a1c8:/tmp/
Successfully copied 1.536kB to 7548fb45a1c8:/tmp/
[root@localhost ~]# docker exec -it 7548fb45a1c8 /bin/bash
root@7548fb45a1c8:/# cd /tmp/
root@7548fb45a1c8:/tmp# ls
data
 

7.2. 查看变更

container diff 查看容器内文件系统的变更。格式为docker [container] diff CONTAINER。

例如,查看容器内的数据修改

[root@localhost ~]# docker diff 7548fb45a1c8
C /root
A /root/.bash_history
C /tmp
A /tmp/data
 

7.3. 查看端口映射

container port 命令可以查看容器的端口映射情况。命令格式为docker container port CONTAINER [PRIVATE_PORT[/PROTO]]。例如:

[root@localhost ~]# docker port test

7.4. 更新配置

  • --blkio-weight uint16:更新块IO限制,10~1000,默认值为0,代表无限制;
  • --cpu-period int:限制CPU调度器CFS使用时间,单位为微秒,最小1000;
  • --cpu-quota int:限制CPU调度器配额,单位为微秒,最小1000;
  • --cpu-rt-period int:限制CPU调度器的实时周期,单位为微秒;
  • --cpu-rt-runtime int:限制CPU调度器的实时运行时间,单位为微秒;
  • -c,--cpu-shares int:限制CPU使用份额;
  • -cpus decimal:限制CPU个数
  • -cpuset-cpus srting :允许使用的CPU核,如0-3,0,1;
  • -cpuset-mems string:允许使用的内存块,如0-3,0,1;
  • -kernel-memory bytes:限制使用的内核内存;
  • -m,-memory bytes:限制使用的内存;
  • -memory-reservation bytes:内存软限制;
  • -memory-swap bytes:内存加上缓存区的限制,-1表示为对缓冲区无限制;
  • -restart string :容器退出后的重启策略。

例如,限制总配额为1秒,容器test所占用时间为10%:

[root@localhost ~]# docker update --cpu-quota 1000000 test
test
[root@localhost ~]# docker update --cpu-period 100000 test
test
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值