Bootstrap

【Docker开篇第二篇】Docker 掌握核心技术_docker --ipc host

这个(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 -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

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

这暴露了容器的端口

;