Docker命令详解

在新容器中运行命令

用法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
选项
名字,速记    默认    描述
--add-host        添加自定义主机到IP映射(主机:ip)
--attach , -a        附加到STDIN,STDOUT或STDERR
--blkio-weight        阻止IO(相对权重),介于10和1000之间,或0阻止(默认为0)
--blkio-weight-device        阻止IO重量(相对设备重量)
--cap-add        添加Linux功能
--cap-drop        删除Linux功能
--cgroup-parent        容器的可选父cgroup
--cidfile        将容器ID写入文件
--cpu-count        CPU数量(仅限Windows)
--cpu-percent        CPU百分比(仅限Windows)
--cpu-period        限制CPU CFS(完全公平计划程序)期间
--cpu-quota        限制CPU CFS(完全公平计划程序)配额
--cpu-rt-period        API 1.25+
限制CPU实时周期(以微秒为单位)
--cpu-rt-runtime        API 1.25+
以微秒为单位限制CPU实时运行时间
--cpu-shares , -c        CPU份额(相对权重)
--cpus        API 1.25+
CPU数量
--cpuset-cpus        允许执行的CPU(0-3,0,1)
--cpuset-mems        允许执行的MEM(0-3,0,1)
--detach , -d        在后台运行容器并打印容器ID
--detach-keys        覆盖用于分离容器的键序列
--device        将主机设备添加到容器中
--device-cgroup-rule        将规则添加到cgroup允许的设备列表中
--device-read-bps        限制设备的读取速率(每秒字节数)
--device-read-iops        限制设备的读取速率(每秒IO)
--device-write-bps        限制写入速率(每秒字节数)到设备
--device-write-iops        限制设备的写入速率(每秒IO)
--disable-content-trust    true    跳过图像验证
--dns        设置自定义DNS服务器
--dns-opt        设置DNS选项
--dns-option        设置DNS选项
--dns-search        设置自定义DNS搜索域
--entrypoint        覆盖图像的默认ENTRYPOINT
--env , -e        设置环境变量
--env-file        读入环境变量文件
--expose        暴露端口或一系列端口
--group-add        添加其他组以加入
--health-cmd        运行以检查运行状况的命令
--health-interval        运行检查之间的时间(ms | s | m | h)(默认为0)
--health-retries        报告不健康需要连续失败
--health-start-period        API 1.29+
在开始运行状况重试倒计时之前初始化容器的开始时间段(ms | s | m | h)(默认为0)
--health-timeout        允许一次检查运行的最长时间(ms | s | m | h)(默认为0s)
--help        打印用法
--hostname , -h        容器主机名
--init        API 1.25+
在容器内运行init,转发信号并重新获得进程
--interactive , -i        即使没有连接,也要保持STDIN打开
--io-maxbandwidth        系统驱动器的最大IO带宽限制(仅限Windows)
--io-maxiops        系统驱动器的最大IOps限制(仅限Windows)
--ip        IPv4地址(例如,172.30.100.104)
--ip6        IPv6地址(例如,2001:db8 :: 33)
--ipc        使用IPC模式
--isolation        容器隔离技术
--kernel-memory        内核内存限制
--label , -l        在容器上设置元数据
--label-file        读入行分隔的标签文件
--link        添加到另一个容器的链接
--link-local-ip        容器IPv4 / IPv6链路本地地址
--log-driver        记录容器的驱动程序
--log-opt        日志驱动程序选项
--mac-address        容器MAC地址(例如,92:d0:c6:0a:29:33)
--memory , -m        内存限制
--memory-reservation        内存软限制
--memory-swap        交换限制等于内存加交换:' - 1以启用无限制交换
--memory-swappiness    -1    调整容器内存swappiness(0到100)
--mount        将文件系统挂载附加到容器
--name        为容器指定名称
--net        将容器连接到网络
--net-alias        为容器添加网络范围的别名
--network        将容器连接到网络
--network-alias        为容器添加网络范围的别名
--no-healthcheck        禁用任何容器指定的HEALTHCHECK
--oom-kill-disable        禁用OOM杀手
--oom-score-adj        调整主机的OOM首选项(-1000到1000)
--pid        要使用的PID命名空间
--pids-limit        调整容器pids限制(设置-1为无限制)
--platform        experimental(daemon)API 1.32+
如果服务器具有多平台功能,则设置平台
--privileged        为此容器授予扩展权限
--publish , -p        将容器的端口发布到主机
--publish-all , -P        将所有公开的端口发布到随机端口
--read-only        将容器的根文件系统挂载为只读
--restart    no    重新启动容器退出时应用的策略
--rm        退出时自动删除容器
--runtime        用于此容器的运行时
--security-opt        安全选项
--shm-size        / dev / shm的大小
--sig-proxy    true    代理接收到进程的信号
--stop-signal    SIGTERM    发出信号停止集装箱
--stop-timeout        API 1.25+
停止容器的超时(以秒为单位)
--storage-opt        容器的存储驱动程序选项
--sysctl        Sysctl选项
--tmpfs        挂载tmpfs目录
--tty , -t        分配伪TTY
--ulimit        Ulimit选项
--user , -u        用户名或UID(格式:<name | uid> [:<group | gid>])
--userns        要使用的用户名称空间
--uts        要使用的UTS名称空间
--volume , -v        绑定一个卷
--volume-driver        容器的可选卷驱动程序
--volumes-from        从指定容器装载卷
--workdir , -w        容器内的工作目录
父命令
命令    描述
搬运工人    Docker CLI的基本命令。
扩展说明
该docker run命令首先creates在指定的映像上写入可写容器层,然后starts使用指定的命令。也就是说, docker run相当于API /containers/create,然后 /containers/(id)/start。停止的容器可以使用完整的所有先前更改重新启动docker start。请参阅docker ps -a查看所有容器的列表。

该docker run命令可以在组合使用docker commit,以 改变一个容器中运行的命令。有一个关于额外的详细信息docker run在泊坞运行参考。

有关将容器连接到网络的信息,请参阅“ Docker网络概述 ”。

例子
分配名称并分配伪TTY( - name,-it)
$ docker run --name test -it debian

root@d6c0fe130dba:/# exit 13
$ echo $?
13
$ docker ps -a | grep test
d6c0fe130dba        debian:7            "/bin/bash"         26 seconds ago      Exited (13) 17 seconds ago                         test
此示例运行test使用debian:latest 映像命名的容器。的-it指示多克尔分配一个伪TTY连接到所述容器的stdin; bash在容器中创建交互式shell。在示例中,bash通过输入退出shell exit 13。此退出代码将传递给调用者 docker run,并记录在test容器的元数据中。

捕获容器ID(--cidfile)
$ docker run --cidfile /tmp/docker_test.cid ubuntu echo "test"
这将创建一个容器并打印test到控制台。该cidfile 标志使Docker尝试创建一个新文件并将容器ID写入其中。如果文件已存在,Docker将返回错误。Docker将在docker run退出时关闭此文件。

完整的容器功能( - 特权)
$ docker run -t -i --rm ubuntu bash
root@bc338942ef20:/# mount -t tmpfs none /mnt
mount: permission denied
这将不会起作用,因为在默认情况下,最有潜在危险的核能力下降; 包括cap_sys_admin(这是挂载文件系统所必需的)。但是,该--privileged标志将允许它运行:

$ docker run -t -i --privileged ubuntu bash
root@50e3f57e16e6:/# mount -t tmpfs none /mnt
root@50e3f57e16e6:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
none            1.9G     0  1.9G   0% /mnt
该--privileged标志为容器提供了所有功能,它还device解除了cgroup控制器强制执行的所有限制。换句话说,容器几乎可以完成主机可以执行的所有操作。此标志存在以允许特殊用例,例如在Docker中运行Docker。

设置工作目录(-w)
$ docker  run -w /path/to/dir/ -i -t  ubuntu pwd
该-w让里面定目录正在执行的命令,在这里 /path/to/dir/。如果路径不存在,则在容器内创建。

每个容器设置存储驱动程序选项
$ docker run -it --storage-opt size=120G fedora /bin/bash
此(大小)将允许在创建时将容器rootfs大小设置为120G。此选项仅适用于devicemapper,btrfs,overlay2, windowsfilter和zfs图形驱动程序。对于devicemapper,btrfs,windowsfilter和zfs图形驱动程序,用户无法通过的尺寸小于默认尺寸BaseFS。对于overlay2存储驱动程序,size选项仅在支持fs xfs并使用pquotamount选项安装时可用。在这些条件下,用户可以传递小于支持fs大小的任何大小。

挂载tmpfs(--tmpfs)
$ docker run -d --tmpfs /run:rw,noexec,nosuid,size=65536k my_image
该--tmpfs标志安装一个空的tmpfs放入容器与rw, noexec,nosuid,size=65536k选项。

装载量(-v, - read-only)
$ docker  run  -v `pwd`:`pwd` -w `pwd` -i -t  ubuntu pwd
该-v标志将当前工作目录安装到容器中。在-w 让当前的工作目录内执行,通过改变进目录中返回的值的命令pwd。所以这个组合使用容器执行命令,但是在当前工作目录中。

$ docker run -v /doesnt/exist:/foo -w /foo -i -t ubuntu bash
当装入装入卷的主机目录不存在时,Docker将自动为您在主机上创建此目录。在上面的示例中,Docker将/doesnt/exist 在启动容器之前创建该文件夹。

$ docker run --read-only -v /icanwrite busybox touch /icanwrite/here
卷可以与--read-only控制容器写入文件的位置结合使用。该--read-only标志将容器的根文件系统挂载为只读,禁止写入容器的指定卷以外的位置。

$ docker run -t -i -v /var/run/docker.sock:/var/run/docker.sock -v /path/to/static-docker-binary:/usr/bin/docker busybox sh
通过绑定安装docker unix socket和静态链接的docker二进制文件(请参阅获取linux二进制文件),您可以为容器提供创建和操作主机的Docker守护程序的完全访问权限。

在Windows上,必须使用Windows样式语义指定路径。

PS C:\> docker run -v c:\foo:c:\dest microsoft/nanoserver cmd /s /c type c:\dest\somefile.txt
Contents of file

PS C:\> docker run -v c:\foo:d: microsoft/nanoserver cmd /s /c type d:\somefile.txt
Contents of file
使用基于Windows的容器时,以下示例将失败,因为容器中的卷或绑定装载的目标必须是以下之一:不存在或空目录; 或C:以外的驱动器。此外,绑定装载的源必须是本地目录,而不是文件。

net use z: \\remotemachine\share
docker run -v z:\foo:c:\dest ...
docker run -v \\uncpath\to\directory:c:\dest ...
docker run -v c:\foo\somefile.txt:c:\dest ...
docker run -v c:\foo:c: ...
docker run -v c:\foo:c:\existing-directory-with-contents ...
有关卷的深入信息,请参阅管理容器中的数据

使用--mount标志添加绑定装入或卷
该--mount标志允许您tmpfs 在容器中安装卷,主机目录和安装。

该--mount标志支持-v或 标志支持的大多数选项--volume,但使用不同的语法。有关的深度信息 --mount的标志,和之间的比较--volume和--mount,请参考服务创建命令参考。

即使没有计划弃用--volume,--mount建议使用。

例子:

$ docker run --read-only --mount type=volume,target=/icanwrite busybox touch /icanwrite/here
$ docker run -t -i --mount type=bind,src=/data,dst=/data busybox sh
发布或公开端口(-p, - expand)
$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
该端口绑定8080的容器TCP端口80上127.0.0.1的主机的。您还可以指定udp和sctp端口。该泊坞窗用户指南 详细解释了如何操纵港口码头工人。

$ docker run --expose 80 ubuntu bash
这会暴露80容器的端口,而不会将端口发布到主机系统的接口。

设置环境变量(-e, - env, - env-file)
$ docker run -e MYVAR1 --env MYVAR2=foo --env-file ./env.list ubuntu bash
使用-e,--env和--env-file标志设置在容器简单(非数组)环境变量,你正在运行,或覆盖在你运行图像的Dockerfile中定义的变量。

您可以在运行容器时定义变量及其值:

$ docker run --env VAR1=value1 --env VAR2=value2 ubuntu env | grep VAR
VAR1=value1
VAR2=value2
您还可以使用已导出到本地环境的变量:

export VAR1=value1
export VAR2=value2

$ docker run --env VAR1 --env VAR2 ubuntu env | grep VAR
VAR1=value1
VAR2=value2
运行该命令时,Docker CLI客户端会检查变量在本地环境中的值,并将其传递给容器。如果未=提供,并且未在本地环境中导出该变量,则不会在容器中设置该变量。

您还可以从文件加载环境变量。此文件应使用语法<variable>=value(将变量设置为给定值)或 <variable>(从本地环境获取值)和#注释。

$ cat env.list
# This is a comment
VAR1=value1
VAR2=value2
USER

$ docker run --env-file env.list ubuntu env | grep VAR
VAR1=value1
VAR2=value2
USER=denis
在容器上设置元数据(-l, - label, - label文件)
标签是key=value将元数据应用于容器的对。要标记带有两个标签的容器:

$ docker run -l my-label --label com.example.foo=bar ubuntu bash
该my-label键不指定这样的标签默认值为空字符串("")。要添加多个标签,请重复标签标记(-l或--label)。

的key=value必须是唯一的,以避免覆盖的标签值。如果指定具有相同键但具有不同值的标签,则每个后续值都会覆盖前一个值。Docker使用key=value您提供的最后一个。

使用该--label-file标志从文件加载多个标签。使用EOL标记分隔文件中的每个标签。下面的示例从当前目录中的标签文件加载标签:

$ docker run --label-file ./labels ubuntu bash
标签文件格式类似于加载环境变量的格式。(与环境变量不同,标签对于在容器内运行的进程是不可见的。)以下示例说明了标签文件格式:

com.example.label1="a label"

# this is a comment
com.example.label2=another\ label
com.example.label3
您可以通过提供多个--label-file标志来加载多个标签文件 。

有关使用标签的其他信息,请参阅“Docker用户指南”中的标签 - Docker中的自定义元数据。

将容器连接到网络(--network)
启动容器时,使用该--network标志将其连接到网络。这会将busybox容器添加到my-net网络中。

$ docker run -itd --network=my-net busybox
您还可以在 用户定义的网络上启动容器时选择容器的IP地址--ip和--ip6标志。

$ docker run -itd --network=my-net --ip=10.10.9.75 busybox
如果要将正在运行的容器添加到网络,请使用docker network connect子命令。

您可以将多个容器连接到同一网络。连接后,容器可以轻松通信,只需要另一个容器的IP地址或名称。对于overlay支持多主机连接的网络或自定义插件,连接到同一多主机网络但从不同引擎启动的容器也可以通过这种方式进行通信。

注意:默认桥接网络上的服务发现不可用。容器默认情况下可以通过其IP地址进行通信。要按名称进行通信,必须将它们链接起来。

您可以使用该docker network disconnect命令断开容器与网络的连接。

从容器装载卷(--volumes-from)
$ docker run --volumes-from 777f7dc92da7 --volumes-from ba8c0c54f0f2:ro -i -t ubuntu pwd
该--volumes-from标志从引用的容器中安装所有已定义的卷。可以通过重复--volumes-from 参数来指定容器。容器ID可以可选地分别以只读或读写模式为后缀:ro或:rw以安装方式安装卷。默认情况下,卷以与引用容器相同的模式(读写或只读)安装。

像SELinux这样的标签系统要求在安装到容器中的体积内容上放置适当的标签。如果没有标签,安全系统可能会阻止容器内运行的进程使用内容。默认情况下,Docker不会更改操作系统设置的标签。

要更改容器上下文中的标签,可以添加两个后缀中的任何一个:z或添加 :Z到卷装入。这些后缀告诉Docker重新标记共享卷上的文件对象。该z选项告诉Docker两个容器共享卷内容。因此,Docker使用共享内容标签标记内容。共享卷标签允许所有容器读/写内容。该Z选项告诉Docker使用私有非共享标签标记内容。只有当前容器才能使用私有卷。

附加到STDIN / STDOUT / STDERR(-a)
该-a标志告诉docker run绑定到容器的STDIN,STDOUT 或STDERR。这使得可以根据需要操纵输出和输入。

$ echo "test" | docker run -i -a stdin ubuntu cat -
这会将数据传输到容器中,并通过仅附加到容器来打印容器的ID STDIN。

$ docker run -a stderr ubuntu echo test
除非出现错误,否则不会打印任何内容,因为我们只附加到STDERR容器中。容器的日志仍然保存什么被写入STDERR和STDOUT。

$ cat somefile | docker run -i -a stdin mybuilder dobuild
这就是如何为构建管理文件到容器。在构建完成后将打印容器的ID,并且可以使用检索构建日志docker logs。如果您需要将文件或其他内容传递到容器中并在容器运行完毕后检索容器的ID,这将非常有用。

将主机设备添加到容器( - 设备)
$ docker run --device=/dev/sdc:/dev/xvdc \
             --device=/dev/sdd --device=/dev/zero:/dev/nulo \
             -i -t \
             ubuntu ls -l /dev/{xvdc,sdd,nulo}

brw-rw---- 1 root disk 8, 2 Feb  9 16:05 /dev/xvdc
brw-rw---- 1 root disk 8, 3 Feb  9 16:05 /dev/sdd
crw-rw-rw- 1 root root 1, 5 Feb  9 16:05 /dev/nulo
通常需要将设备直接暴露给容器。该--device 选项可以实现。例如,可以将特定的块存储设备或循环设备或音频设备添加到其他非特权的容器(没有--privileged标志)并让应用程序直接访问它。

默认情况下,容器就可以read,write而mknod这些设备。可以使用第三:rwm组选项覆盖每个--device 标志:

$ docker run --device=/dev/sda:/dev/xvdc --rm -it ubuntu fdisk  /dev/xvdc

Command (m for help): q
$ docker run --device=/dev/sda:/dev/xvdc:r --rm -it ubuntu fdisk  /dev/xvdc
You will not be able to write the partition table.

Command (m for help): q

$ docker run --device=/dev/sda:/dev/xvdc:rw --rm -it ubuntu fdisk  /dev/xvdc

Command (m for help): q

$ docker run --device=/dev/sda:/dev/xvdc:m --rm -it ubuntu fdisk  /dev/xvdc
fdisk: unable to open /dev/xvdc: Operation not permitted
注意:--device不能安全地与短暂设备一起使用。不应将可能被删除的块设备添加到不受信任的容器中 --device。

重启政策(--restart)
使用Docker --restart指定容器的重启策略。重启策略控制Docker守护程序在退出后是否重新启动容器。Docker支持以下重启策略:

政策    结果
no    退出时不要自动重启容器。这是默认值。
on-failure[:max-retries]    仅当容器以非零退出状态退出时才重新启动。(可选)限制Docker守护程序尝试的重新启动重试次数。
unless-stopped    除非显式停止或停止或重新启动Docker本身,否则重新启动容器。
always    无论退出状态如何,始终重新启动容器。当您指定always时,Docker守护程序将尝试无限期地重新启动容器。无论容器的当前状态如何,容器也将始终在守护程序启动时启动。
$ docker run --restart=always redis
这将redis使用始终重启策略运行容器, 以便在容器退出时,Docker将重新启动它。

有关重新启动策略的更多详细信息 ,请参阅Docker运行参考页的 重新启动策略(--restart)部分。

将条目添加到容器主机文件(--add-host)
您可以/etc/hosts使用一个或多个--add-host标志将其他主机添加到容器的文件中。此示例为名为的主机添加静态地址 docker:

$ docker run --add-host=docker:10.180.0.1 --rm -it debian

root@f38c87f2a42d:/# ping docker
PING docker (10.180.0.1): 48 data bytes
56 bytes from 10.180.0.1: icmp_seq=0 ttl=254 time=7.600 ms
56 bytes from 10.180.0.1: icmp_seq=1 ttl=254 time=30.705 ms
^C--- docker ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 7.600/19.152/30.705/11.553 ms
有时您需要从容器中连接到Docker主机。要启用此功能,请使用--add-host标志将Docker主机的IP地址传递给容器。要查找主机的地址,请使用该ip addr show命令。

传递给的标志ip addr show取决于您是在容器中使用IPv4还是IPv6网络。对于名为的网络设备,请使用以下标志进行IPv4地址检索eth0:

$ HOSTIP=`ip -4 addr show scope global dev eth0 | grep inet | awk '{print \$2}' | cut -d / -f 1`
$ docker run  --add-host=docker:${HOSTIP} --rm -it debian
对于IPv6,使用-6标志而不是-4标志。对于其他网络设备,请更换eth0正确的设备名称(例如docker0 ,桥接设备)。

在容器中设置ulimits(--ulimit)
由于ulimit在容器中设置设置需要默认容器中不可用的额外权限,因此可以使用--ulimit标志设置这些权限。 --ulimit指定了软硬限制 <type>=<soft limit>[:<hard limit>],例如:

$ docker run --ulimit nofile=1024:1024 --rm debian sh -c "ulimit -n"
1024
注意:如果您未提供a hard limit,soft limit则将同时使用这两个值。如果未ulimits设置,则它们将从ulimits守护程序的默认设置继承。 as选项现在已禁用。换句话说,不支持以下脚本:

$ docker run -it --ulimit as=1024 fedora /bin/bash`
这些值在设置时发送到适当的值syscall。Docker不执行任何字节转换。设置值时请考虑这一点。

对于NPROC使用
请谨慎设置Linux设计nproc的ulimit标志,nproc以设置用户可用的最大进程数,而不是容器。例如,用daemonuser 启动四个容器:

$ docker run -d -u daemon --ulimit nproc=3 busybox top

$ docker run -d -u daemon --ulimit nproc=3 busybox top

$ docker run -d -u daemon --ulimit nproc=3 busybox top

$ docker run -d -u daemon --ulimit nproc=3 busybox top
第4个容器失败并报告“[8]系统错误:资源暂时不可用”错误。这会失败,因为调用者设置nproc=3导致前三个容器使用了为daemon用户设置的三个进程配额。

用信号停止容器( - 停止信号)
该--stop-signal标志设置将发送到容器以退出的系统调用信号。此信号可以是与内核的系统调用表中的位置匹配的有效无符号数,例如9,或SIGNAME格式的信号名,例如SIGKILL。

可选的安全选项(--security-opt)
在Windows上,此标志可用于指定credentialspec选项。在credentialspec必须在格式file://spec.txt或registry://keyname。

停止容器超时(--stop-timeout)
该--stop-timeout标志设置--stop-signal将发送到容器退出的预定义(请参阅)系统调用信号的超时(以秒为单位)。超时过后,容器将被SIGKILL杀死。

指定容器的隔离技术( - 隔离)
在Windows上运行Docker容器的情况下,此选项很有用。该--isolation <value>选项设置容器的隔离技术。在Linux上,唯一受支持的是default使用Linux命名空间的选项。这两个命令在Linux上是等效的:

$ docker run -d busybox top
$ docker run -d --isolation default busybox top
在Windows上,--isolation可以采用以下值之一:

值    描述
default    使用Docker守护程序--exec-opt或系统默认值指定的值(参见下文)。
process    共享内核命名空间隔离(Windows客户端操作系统不支持)。
hyperv    Hyper-V虚拟机管理程序基于分区的隔离。
Windows服务器操作系统上的默认隔离是process。Windows客户端操作系统上的默认(且仅支持)隔离是hyperv。尝试在客户端操作系统上启动容器--isolation process将失败。

在Windows服务器上,假设使用默认配置,这些命令是等效的,并导致process隔离:

PS C:\> docker run -d microsoft/nanoserver powershell echo process
PS C:\> docker run -d --isolation default microsoft/nanoserver powershell echo process
PS C:\> docker run -d --isolation process microsoft/nanoserver powershell echo process
如果您--exec-opt isolation=hyperv在Docker上设置了选项daemon,或者是针对基于Windows客户端的守护程序运行,则这些命令是等效的并导致hyperv隔离:

PS C:\> docker run -d microsoft/nanoserver powershell echo hyperv
PS C:\> docker run -d --isolation default microsoft/nanoserver powershell echo hyperv
PS C:\> docker run -d --isolation hyperv microsoft/nanoserver powershell echo hyperv
指定容器可用内存的硬限制(-m, - memory)
这些参数始终设置容器可用内存的上限。在Linux上,这是在cgroup上设置的,容器中的应用程序可以在其中查询/sys/fs/cgroup/memory/memory.limit_in_bytes。

在Windows上,这将根据使用的隔离类型对容器产生不同的影响。

通过process隔离,Windows将报告主机系统的完整内存,而不是容器内运行的应用程序的限制

  PS C:\> docker run -it -m 2GB --isolation=process microsoft/nanoserver powershell Get-ComputerInfo *memory*

  CsTotalPhysicalMemory      : 17064509440
  CsPhyicallyInstalledMemory : 16777216
  OsTotalVisibleMemorySize   : 16664560
  OsFreePhysicalMemory       : 14646720
  OsTotalVirtualMemorySize   : 19154928
  OsFreeVirtualMemory        : 17197440
  OsInUseVirtualMemory       : 1957488
  OsMaxProcessMemorySize     : 137438953344
通过hyperv隔离,Windows将创建一个足以容纳内存限制的实用程序VM,以及托管容器所需的最小操作系统。该大小报告为“总物理内存”。

  PS C:\> docker run -it -m 2GB --isolation=hyperv microsoft/nanoserver powershell Get-ComputerInfo *memory*

  CsTotalPhysicalMemory      : 2683355136
  CsPhyicallyInstalledMemory :
  OsTotalVisibleMemorySize   : 2620464
  OsFreePhysicalMemory       : 2306552
  OsTotalVirtualMemorySize   : 2620464
  OsFreeVirtualMemory        : 2356692
  OsInUseVirtualMemory       : 263772
  OsMaxProcessMemorySize     : 137438953344
在运行时配置命名空间的内核参数(sysctls)
所述--sysctl容器中的命名空间的内核参数(的sysctl)集。例如,要在容器网络命名空间中打开IP转发,请运行以下命令:

$ docker run --sysctl net.ipv4.ip_forward=1 someimage
注意:并非所有sysctl都是命名空间。Docker不支持更改也修改主机系统的容器内的sysctls。随着内核的发展,我们希望看到更多的sysctl成为命名空间。

目前支持的SYSCTLS
IPC Namespace:

kernel.msgmax, kernel.msgmnb, kernel.msgmni, kernel.sem, kernel.shmall, kernel.shmmax, kernel.shmmni, kernel.shm_rmid_forced
Sysctls beginning with fs.mqueue.*
如果使用该--ipc=host选项,则不允许使用这些sysctls。

Network Namespace:

Sysctls以net开头。*

如果使用该--network=host选项,则不允许使用这些sysctls。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值