docker守护进程dockerd

dockerd

Docker为守护程序和客户端使用不同的二进制文件。要运行守护程序,请输入dockerd 。dockerd 是 docker 架构中一个常驻在后台的系统进程,称为 docker daemon,dockerd 实际调用的还是 containerd 的 api 接口(rpc 方式实现),docker daemon 的作用主要有以下两方面:

  • 接收并处理 docker client 发送的请求
  • 管理所有的 docker 容器

要使用调试输出运行守护程序,请使用dockerd -D或在daemon.json文件中添加"debug": true 。

手动启动守护程序

如果你不想使用系统实用程序来管理Docker守护程序,或者只想进行测试,则可以使用以下dockerd 命令手动运行它。你可能需要使用sudo,具体取决于您的操作系统配置。
当您以这种方式启动Docker时,它在前台运行,并将其日志直接发送到您的终端。

$ dockerd

INFO[0000] +job init_networkdriver()
INFO[0000] +job serveapi(unix:///var/run/docker.sock)
INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)

要在手动启动Docker时停止它,请Ctrl+C在终端中发出a 。

配置docker守护进程

有两种配置Docker守护程序的方法:

  • 使用JSON配置文件。这是首选选项,因为它将所有配置都放在一个位置。
  • 启动时使用标志dockerd。

只要你未同时在标志和JSON文件中指定相同的选项,就可以将这两个选项一起使用。如果发生这种情况,则Docker守护程序将不会启动并显示错误消息。
要使用JSON文件配置Docker守护程序,请/etc/docker/daemon.json在Linux系统或C:\ProgramData\docker\config\daemon.json Windows上创建一个文件 。在MacOS上,转到任务栏中的docker>首选项>守护程序>高级。
配置文件如下所示:

{
  "debug": true,
  "tls": true,
  "tlscert": "/var/docker/server.pem",
  "tlskey": "/var/docker/serverkey.pem",
  "hosts": ["tcp://192.168.0.1:2376"]
}

通过此配置,Docker守护程序以调试模式运行,使用TLS,并侦听路由到192.168.59.3:port的流量2376。可以在dockerd参考文档中了解可用的配置选项。
还可以手动启动Docker守护程序并使用标志对其进行配置。这对于解决问题很有用。
这是一个如何使用与上面相同的配置手动启动Docker守护程序的示例:

dockerd --debug \
  --tls=true \
  --tlscert=/var/docker/server.pem \
  --tlskey=/var/docker/serverkey.pem \
  --host tcp://192.168.0.1:2376

可以在dockerd参考文档中或通过运行以下命令了解可用的配置选项 :

dockerd --help

docker守护进程socket的选项

Docker守护程序可以通过三种不同类型的Socket监听Docker Engine API请求: unix , tcp和fd 。
1、默认情况下,在/var/run/docker.sock上创建一个unix域套接字(或IPC套接字),需要root许可或docker组成员身份。
如果需要远程访问Docker守护程序,则需要启用tcp Socket。
2、可以使用-H tcp://0.0.0.0:2375 2375在所有网络接口上的端口2375上监听,也可以使用其IP地址-H tcp://192.168.0.1:2375在特定的网络接口上监听端口-H tcp://192.168.0.1:2375 。通常使用端口2375进行未加密,使用端口2376进行与守护程序的加密通信。
3、在基于Systemd的系统上,可以通过dockerd -H fd:// 套接字激活与守护程序通信,请使用dockerd -H fd:// 。使用fd://可以在大多数设置中完美运行,但是您也可以指定单个套接字: dockerd -H fd://3 。如果找不到指定的套接字激活文件,则Docker将退出。

dockerd -H unix:///var/run/docker.sock -H tcp://192.168.0.1 -H tcp://10.10.0.1

Docker客户端将使用DOCKER_HOST环境变量来为客户端设置-H标志。使用下面的命令 :

docker -H tcp://0.0.0.0:2375 ps
export DOCKER_HOST="tcp://0.0.0.0:2375"
docker ps 

docker客户端可以使用-H连接到自定义端口。Docker客户端默认将连接到Linux上unix:///var/run/docker.sock ,以及Windows上的tcp://127.0.0.1:2376 。
-H接受以下格式的主机和端口分配:

tcp://[host]:[port][path] or unix://path

在守护进程下模式下运行docker:

 >/dockerd -H 0.0.0.0:8888 &

下载ubuntu镜像:

docker -H :8888 pull ubuntu

如果您想同时监听TCP和Unix套接字,则可以使用多个-H

# Run docker in daemon mode
$ sudo >/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

docker运行时执行选项

Docker守护程序依赖于OCI兼容运行时(通过containerd守护程序调用)作为与Linux内核namespaces ,
cgroups和SELinux 。
默认情况下,Docker守护程序会自动启动containerd 。如果要控制containerd启动,请手动启动containerd然后使用–containerd标志将路径传递到containerd套接字。例如:

dockerd --containerd /var/run/dev/docker-containerd.sock

在docker.service文件也可以使用dockerd来运行守护进程

/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

你可能感兴趣的:(云原生,docker,容器,云原生)