牛下载:绿色软件官方软件免费下载基地!
所在位置:首页 > 新闻资讯 > Docker命令行参考(2) – dockerd启动docker daemon

Docker命令行参考(2) – dockerd启动docker daemon

发布时间:2020-05-03 20:46:01来源:阅读:

用法:

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:

# listen using the default unix socket, and on 2 specific IP addresses on this host.
$ sudo dockerd -H unix:///var/run/docker.sock -H tcp://192.168.59.106 -H tcp://10.10.10.2

如果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 ps

Docker客户端将遵守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://[host]:[port][path] or unix://path

例如:

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:

$ sudo <path to>/dockerd -H 0.0.0.0:5555 &

下载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 ubuntu

daemon DNS选项

为所有docker容器设置DNS服务器,使用:

$ sudo dockerd --dns 8.8.8.8

为所有docker容器设置DNS search domain,使用:

$ sudo dockerd --dns-search example.com

Insecure 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:

–insecure-registry myregistry:5000 告诉docker daemon myregistry:5000是不安全的registry。 –insecure-registry 10.1.0.0/16 告诉docker daemon所有的registry域名解析出的IP地址在这个IP范围的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将会启动失败。我们这样做是为了避免在配置文件重载时,会静默忽略对此选项的修改。

反对
收藏
  • 热门资讯
  • 最新资讯
  • 应用排行榜
  • 游戏排行榜