容器引擎

Docker daemon是一个常驻后台的系统进程,docker 子命令执行前先要启动docker daemon。

如果是通过rpm包或者系统包管理工具安装的,就可以使用systemctl start docker来启动docker daemon。

docker命令支持多个参数选项,对于参数选项有以下约定:

  1. 单个字符的选项可以合并在一起,如:

    1. docker run -t -i busybox /bin/sh

    可以写成

    1. docker run -ti busybox /bin/sh
  2. 在命令帮助中看到的如--icc=true之类的bool命令选项,如果没有使用这个选项,则这个标志位的值就是在命令帮助中看到的默认值,如果使用了这个选项则这个标志位的值就是命令帮助中看的值的相反值,如果启动docker daemon没有加上使用--icc选项,则默认设置了--icc=true,如果使用了--icc选项则表示是--icc=false。

  3. 在命令帮助中看到的--attach=[]之类的选项,表示这类的选项可以多次设置,如:

    1. docker run --attach=stdin --attach=stdout -i -t busybox /bin/sh
  4. 在命令帮助中看到的-a, --attach=[]之类的选项,表示这种选项既可以用-a value指定也可以用--attach=value指定。如:

    1. docker run -a stdin --attach=stdout -i -t busybox /bin/sh
  5. --name=””之类的选项需要的是一个字符串,只能指定一次,-c=0之类的选项需要的是一个整数,只能指定一次。

表 1 docker daemon启动时指定参数详解

参数名称

说明

—api-cors-header

开放远程API调用的 CORS 头信息。这个接口开关对想进行二次开发的上层应用提供了支持。为remote API设置CORS头信息。

—authorization-plugin=[]

指定认证插件。

-b, —bridge=””

挂载已经存在的网桥设备到 Docker 容器里。注意,使用 none 可以停用容器里的网络。

—bip=””

使用 CIDR 地址来设定自动创建的网桥的 IP。注意,此参数和 -b 不能一起使用。

—cgroup-parent

为所有容器设定cgroup父目录。

—config-file=/etc/docker/daemon.json

启动docker daemon的配置文件。

—containerd

指定containerd的socket路径。

-D, —debug=false

开启Debug模式。

—default-gateway

容器IPv4地址的默认网关。

—default-gateway-v6

容器IPv6地址的默认网关。

—default-ulimit=[]

容器的默认ulimit值。

—disable-legacy-registry

不允许使用原版registry。

—dns=[]

强制容器使用DNS服务器。

例如: —dns 8.8.x.x

—dns-opt=[]

指定使用DNS的选项。

—dns-search=[]

强制容器使用指定的DNS搜索域名。

例如: —dns-search example.com

—exec-opt=[]

设置运行时执行选项。

例如支持native.umask选项:

  1. # 启动的容器umask值为0022
  2. exec-opt native.umask=normal
  3.  
  4. # 启动的容器umask值为0027(默认值)
  5. exec-opt native.umask=secure

注意如果docker create/run也配置了native.umask参数则以docker create/run中的配置为准。

—exec-root=/var/run/docker

指定执行状态文件存放的根目录。

—fixed-cidr=””

设定子网固定IP(ex: 10.20.0.0/16),这个子网IP必须属于网桥内的。

—fixed-cidr-v6

同上,使用与IPv6。

-G, —group=”docker”

在后台运行模式下,赋予指定的Group到相应的unix socket上。注意,当此参数 —group 赋予空字符串时,将去除组信息。

-g, —graph=”/var/lib/docker”

配置Docker运行时根目录。

-H, —host=[]

在后台模式下指定socket绑定,可以绑定一个或多个 tcp://host:port, unix:///path/to/socket, fd://* 或 fd://socketfd。例如:

$ dockerd -H tcp://0.0.0.0:2375

或者

$ export DOCKER_HOST=”tcp://0.0.0.0:2375”

—insecure-registry=[]

指定非安全连接的仓库,docker默认所有的连接都是TLS证书来保证安全的,如果仓库不支持https连接或者证书是docker daemon不清楚的证书颁发机构颁发的,则启动daemon的时候要指定如—insecure-registry=192.168.1.110:5000,使用私有仓库都要指定。

—image-layer-check=true

开启镜像层完整性检查功能,设置为true;关闭该功能,设置为false。如果没有该参数,默认为关闭。

docker启动时会检查镜像层的完整性,如果镜像层被破坏,则相关的镜像不可用。docker进行镜像完整性校验时,无法校验内容为空的文件和目录,以及链接文件。因此若镜像因掉电导致上述类型文件丢失,docker的镜像数据完整性校验可能无法识别。docker版本变更时需要检查是否支持该参数,如果不支持,需要从配置文件中删除。

—icc=true

启用容器间的通信。

—ip=”0.0.0.0”

容器绑定端口时使用的默认IP地址。

—ip-forward=true

启动容器的 net.ipv4.ip_forward。

—ip-masq=true

使能IP伪装。

—iptables=true

启动Docker容器自定义的iptable规则。

-l, —log-level=info

设置日志级别。

—label=[]

设置daemon标签,以key=value形式设置。

—log-driver=json-file

设置容器日志的默认日志驱动。

—log-opt=map[]

设置日志驱动参数。

—mtu=0

设置容器网络的MTU值,如果没有这个参数,选用默认 route MTU,如果没有默认route,就设置成常量值 1500。

-p, —pidfile=”/var/run/docker.pid”

后台进程PID文件路径。

—raw-logs

带有全部时间戳并不带ANSI颜色方案的日志。

—registry-mirror=[]

指定dockerd优先使用的镜像仓库。

-s, —storage-driver=””

强制容器运行时使用指定的存储驱动

—selinux-enabled=false

启用selinux支持,3.10.0-862.14及以上内核版本不支持—selinux-enabled=true。

—storage-opt=[]

配置存储驱动的参数,存储驱动为devicemapper的时候有效(e.g. dockerd —storage-opt dm.blocksize=512K)。

—tls=false

启动TLS认证开关。

—tlscacert=”/root/.docker/ca.pem”

通过CA认证过的的certificate文件路径。

—tlscert=”/root/.docker/cert.pem”

TLS的certificate文件路径。

—tlskey=”/root/.docker/key.pem”

TLS的key文件路径。

—tlsverify=false

使用TLS并做后台进程与客户端通讯的验证。

—insecure-skip-verify-enforce

是否强制跳过证书的主机名/域名验证,默认为false(不跳过)。

—use-decrypted-key=true

指定使用解密私钥。

—userland-proxy=true

容器LO设备使用userland proxy。

—userns-remap

容器内使用user命名空间的用户映射表。

说明:

当前版本不支持该参数。