容器是镜像的一个运行实例。所不同的是,镜像是静态地只读文件,而容器带有运行时的可写文件层,同时,容器中的应用进程处于运行状态。
如果认为虚拟机是模拟运行的一整套操作系统和在上面跑应用。那么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