Linux入门教程:Docker命令行参考(2) – dockerd启动docker daemon,dockerd是管理
Linux入门教程:Docker命令行参考(2) – dockerd启动docker daemon,dockerd是管理
用法:
Usage: dockerd [OPTIONS] A self-sufficient runtime for containers. Options: --add-runtime=[] Register an additional OCI compatible runtime --api-cors-header Set CORS headers in the remote API --authorization-plugin=[] Authorization plugins to load -b, --bridge Attach containers to a network bridge --bip Specify network bridge IP --cgroup-parent Set parent cgroup for all containers --cluster-advertise Address or interface name to advertise --cluster-store URL of the distributed storage backend --cluster-store-opt=map[] Set cluster store options --config-file=/etc/docker/daemon.json Daemon configuration file --containerd Path to containerd socket -D, --debug Enable debug mode --default-gateway Container default gateway IPv4 address --default-gateway-v6 Container default gateway IPv6 address --default-runtime=runc Default OCI runtime for containers --default-ulimit=[] Default ulimits for containers --disable-legacy-registry Disable contacting legacy registries --dns=[] DNS server to use --dns-opt=[] DNS options to use --dns-search=[] DNS search domains to use --exec-opt=[] Runtime execution options --exec-root=/var/run/docker Root directory for execution state files --fixed-cidr IPv4 subnet for fixed IPs --fixed-cidr-v6 IPv6 subnet for fixed IPs -G, --group=docker Group for the unix socket -g, --graph=/var/lib/docker Root of the Docker runtime -H, --host=[] Daemon socket(s) to connect to --help Print usage --icc=true Enable inter-container communication --insecure-registry=[] Enable insecure registry communication --ip=0.0.0.0 Default IP when binding container ports --ip-forward=true Enable net.ipv4.ip_forward --ip-masq=true Enable IP masquerading --iptables=true Enable addition of iptables rules --ipv6 Enable IPv6 networking -l, --log-level=info Set the logging level --label=[] Set key=value labels to the daemon --live-restore Enables keeping containers alive during daemon downtime --log-driver=json-file Default driver for container logs --log-opt=map[] Default log driver options for containers --max-concurrent-downloads=3 Set the max concurrent downloads for each pull --max-concurrent-uploads=5 Set the max concurrent uploads for each push --mtu Set the containers network MTU --oom-score-adjust=-500 Set the oom_score_adj for the daemon -p, --pidfile=/var/run/docker.pid Path to use for daemon PID file --raw-logs Full timestamps without ANSI coloring --registry-mirror=[] Preferred Docker registry mirror -s, --storage-driver Storage driver to use --selinux-enabled Enable selinux support --storage-opt=[] Storage driver options --swarm-default-advertise-addr Set default address or interface for swarm advertised address --tls Use TLS; implied by --tlsverify --tlscacert=~/.docker/ca.pem Trust certs signed only by this CA --tlscert=~/.docker/cert.pem Path to TLS certificate file --tlskey=~/.docker/key.pem Path to TLS key file --tlsverify Use TLS and verify the remote --userland-proxy=true Use userland proxy for loopback traffic --userns-remap User/Group setting for user namespaces -v, --version Print version information and quit以上选项值为[]可以指定多次。dockerd是管理容器的常驻进程。daemon和客户端使用了不同的二进制文件。直接键入dockerd执行daemon。
Daemon socket选项
docker daemon监听三个不同类型的socket:unix,tcp和fd来处理Docker Remote API请求。
默认下,unix域名套接字[或IPC套接字]创建在/var/run/docker.sock,需要root权限或用户属于docker组。
如果需要开放docker daemon远程访问,需要启用tcp套接字。请注意默认的daemon配置没有加密和验证直接就能访问daemon – 应该使用内置的HTTPS加密的socket,或在它前面放置一个安全的web代理。可以使用-H tcp://0.0.0.0:2375在所有网络接口上监听2375端口,也可以使用-H tcp://192.168.59.103:2375在指定的网络接口监听。一般约定使用端口2375来监听非加密请求,使用2376来监听加密请求。
注意:如果使用了HTTPS加密套接字,记住只支持TLS1.0和以上版本的协议。SSLv3协议和之前的版本由于安全原因不再支持。
在基于systemd的系统,可以通过systemd socket activation使用dockerd -H fd://与daemon通信。使用fd://在大多数情况工作良好,不过也可以指定一个单独的sockets:dockerd -H fd://。如果指定的socket activated文件没有找到,docker将退出。
可以指定多次-H选项来设置docker监听多个sockets:
如果docker client没有指定-H选项,它将尝试查找环境变量DOCKER_HOST。
$ docker -H tcp://0.0.0.0:2375 ps # or $ export DOCKER_HOST="tcp://0.0.0.0:2375" $ docker ps # both are equal设置环境变量DOCKER_TLS_VERIFY为任何一个非空值,等同于–tlsverify参数。如下是等效的:
$ docker --tlsverify ps # or $ export DOCKER_TLS_VERIFY=1 $ docker psDocker客户端将遵守HTTP_PROXY,HTTPS_PROXY和NO_PROXY环境变量(或其小写版本)。 HTTPS_PROXY优先于HTTP_PROXY。
绑定docker到另一个host/port或unix socket
警告:更改默认的docker daemon绑定到一个TCP端口或Unix docker用户组会允许非root用户获取daemon的root访问权限,这将增加安全风险。确保仔细控制docker的访问权限。如果绑定到一个TCP端口,那么能够访问此端口的用户将对docker的完全的访问权限;所以不建议在一个开放的网络绑定端口。
使用-H参数可以使docker daemon监听在指定IP和端口。默认监听unix:///var/run/docker.sock只允许root用户在本地连接。可以设置0.0.0.0:2375或指定一个主机IP来给所有人访问权限,不过这不推荐因为这非常不安全。
类似的,docker客户端可以使用-H连接到一个自定义端口。Linux上docker客户端默认连接到unix:///var/run/docker.sock,windows连接到tcp://127.0.0.1:2376。
-H接受如下的格式:
例如:
tcp:// -> 监听tcp的127.0.0.1,当TLS加密启用时使用2376端口,否则使用2375端口。 tcp://host:2375 -> 监听在tcp的host:2375 tcp://host:2375/path -> 监听在tcp的host:2375并添加前缀路径到所有请求。 unix://path/to/socket -> 监听unix socket,路径为path/to/socket。当-H为空时,与没有指定-H选项时的默认值一样。
-H也接受TCP绑定的简短格式:host: 或 host:port 或 :port
以daemon模式运行docker:
下载ubuntu镜像:
$ docker -H :5555 pull ubuntu可以使用多个-H,例如,既监听TCP也监听unix socket
# Run docker in daemon mode $ sudo <path to>/dockerd -H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock & # Download an ubuntu image, use default Unix socket $ docker pull ubuntu # OR use the TCP port $ docker -H tcp://127.0.0.1:2375 pull ubuntudaemon DNS选项
为所有docker容器设置DNS服务器,使用:
$ sudo dockerd --dns 8.8.8.8为所有docker容器设置DNS search domain,使用:
$ sudo dockerd --dns-search example.comInsecure registries
Docker把私有的registry分为安全或不安全的。下面章节,我们用registry表示私有的registry,myregistry:5000作为私有的registry的示例。
一个安全的registry使用TLS且它的CA证书副本在docker主机的/etc/docker/certs.d/myregistry:5000/ca.crt。一个不安全的registry不使用TLS或使用了TLS,但其CA证书没有在docker daemon指定的路径或是错误的CA。
默认下,docker假设所有的,除了本地的,registry是安全的。如果Docker假设这个registry是安全的,那与一个不安全的registry通信是不可能的。为了与一个不安全的registry通信,docker daemon要求以下面两种格式其中一种指定–insecure-registry:
这个参数可以使用多次来指定多个不安全的registry。
如果一个不安全的registry没有标记为不安全的,docker pull,docker push和docker search将会得到一个错误来提示用户使用安全的registry或在daemon设置–insecure-registry参数。
本地的registry,那么解析出来的IP在127.0.0.0/8范围的,从Docker 1.3.2起就自动标记为不安全的registry。不推荐依赖这个,因为未来版本可能会更改。
启用–insecure-registry,允许非加密或不被信任的通信,在运行一个本地registry会有用。不过,因为这会产生安全漏洞,它只应该作为测试目的。 为了提高安全性,用户应该将CA添加到其系统的受信任CA列表中,而不是启用–insecure-registry。
daemon配置文件
–config-file允许设置JSON格式的daemon配置文件。这个文件使用与选项一样的名称作为key,除了那么允许多个值的选项,那就使用这个选项名称的复数,如label选项,使用labels作为key。
在配置文件的选项设置不能与命令行的选项设置冲突。如果一个选项在配置文件和命令行设置了,docker daemon将会启动失败。我们这样做是为了避免在配置文件重载时,会静默忽略对此选项的修改。
评论暂时关闭