我正在尝试连接到在远程主机上运行的 docker 守护程序(在远程位置上运行的摄像头)。
遵循的步骤:
我已按照docker 文档中的步骤创建所需的证书。在此之后,我已将证书上传到远程服务器并初始化了 docker 守护进程。日志消息表明 docker 守护进程正在运行并正在侦听:
2021-12-14T11:09:18.871+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32307]: Started logging.
2021-12-14T11:09:18.900+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32307]: Starting dockerd in TLS mode using SD card as storage.
2021-12-14T11:09:19.307+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:19.305675739+01:00" level=info msg="Starting up"
2021-12-14T11:09:19.316+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:19.315363522+01:00" level=info msg="parsed scheme: \"unix\"" module=grpc
2021-12-14T11:09:19.316+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:19.315509937+01:00" level=info msg="scheme \"unix\" not registered, fallback to default scheme" module=grpc
2021-12-14T11:09:19.317+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:19.315661800+01:00" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock <nil> 0 <nil>}] <nil> <nil>}" module=grpc
2021-12-14T11:09:19.317+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:19.316791271+01:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
2021-12-14T11:09:19.326+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:19.324681745+01:00" level=info msg="parsed scheme: \"unix\"" module=grpc
2021-12-14T11:09:19.326+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:19.324845221+01:00" level=info msg="scheme \"unix\" not registered, fallback to default scheme" module=grpc
2021-12-14T11:09:19.326+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:19.325024579+01:00" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock <nil> 0 <nil>}] <nil> <nil>}" module=grpc
2021-12-14T11:09:19.326+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:19.325135502+01:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
2021-12-14T11:09:19.411+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:19.408483444+01:00" level=info msg="[graphdriver] using prior storage driver: overlay2"
2021-12-14T11:09:19.434+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:19.430353521+01:00" level=warning msg="Your kernel does not support swap memory limit"
2021-12-14T11:09:19.434+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:19.430512819+01:00" level=warning msg="Your kernel does not support CPU realtime scheduler"
2021-12-14T11:09:19.434+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:19.431814516+01:00" level=info msg="Loading containers: start."
2021-12-14T11:09:20.103+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:20.102087081+01:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
2021-12-14T11:09:20.377+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:20.375156590+01:00" level=info msg="Loading containers: done."
2021-12-14T11:09:20.530+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:20.528313336+01:00" level=info msg="Docker daemon" commit=unsupported graphdriver(s)=overlay2 version=dev
2021-12-14T11:09:20.530+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:20.529844450+01:00" level=info msg="Daemon has completed initialization"
2021-12-14T11:09:20.663+01:00 axis-b8a44f0e633b [ INFO ] dockerdwrapper[32314]: time="2021-12-14T11:09:20.662757526+01:00" level=info msg="API listen on [::]:2376"
跑步时netstat -anp |grep 2376
我得到:tcp 0 0 :::2376 :::*LISTEN 31526/dockerd
.
问题:
但是,当我尝试使用以下方式从客户端(我的笔记本电脑)拨打电话时:
sudo docker -D --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H=<camera_ip_address>:2376 images
我得到以下回复:
DEBU[0062] FIXME: Got an status-code for which error does not match any expected type!!!: -1 module=api status_code=-1
Cannot connect to the Docker daemon at tcp://<camera_ip_address>:2376. Is the docker daemon running
我的怀疑:
由于 docker daemon 似乎运行正确并在远程服务器上的正确端口上列出,我相信这个问题可能与我在创建证书期间设置的 DNS 和 IP 地址有关。但是,我发现的信息是 docker 容器继承了主机的 DNS 设置。
我正在使用主机(在我的情况下是相机)DNS,我设置的 IP 是我用来从笔记本电脑 ssh 进入主机的 IP。