这个(size)将允许在创建时将容器rootfs大小设置为120G。此选项仅适用于devicemapper、btrfs、overlay2、windowsfilter和zfs图形驱动
。对于devicemapper, btrfs, windowsfilter和zfs图形驱动
,用户不能传递小于默认BaseFS 的大小。对于overlay2存储驱动程序,只有当备份文件fs是xfs并且使用pquota挂载选项挂载时,size选项才可用。在这些条件下,用户可以传递任何小于备份文件大小的大小。
3.6、Mount tmpfs (–tmpfs)
$ docker run -d --tmpfs /run:rw,noexec,nosuid,size=65536k my_image
--tmpfs
标志将一个空的tmpfs装入容器中,其中包含rw、noexec、nosuid、size=65536k选项
。
3.7、Mount volume (-v, --read-only)
$ docker run -v
pwd
:pwd
-wpwd
-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
Volumes 可以与--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套接字和静态链接的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 …
3.8、使用–mount flag
--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
3.9、发布或公开端口(-p,–expose)
$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
这将容器的端口8080绑定到主机127.0.0.1上的TCP端口80。您还可以指定udp和sctp端口。Docker用户指南详细解释了如何在Docker中操作端口。
请注意,未绑定到主机的端口**(即-p 80:80而不是-p 127.0.0.1:80:80)**可以从外部访问。如果您将UFW配置为阻止此特定端口,这也适用,因为Docker管理自己的iptables规则。
$ docker run --expose 80 ubuntu bash
这暴露了容器的端口