这是Docker架构: 我无法弄清楚为什么需要docker守护进程。客户很好。客户端只需使用Unix套接字访问守护进程。它可以使用TCP,但我注意到的通常是客户端和守护进程在同一台机器上!那么为什么有两个独立的实体呢? 如上所述..客户端可以使用TCP与守护进程通信。那么在团队中工作的首选方式是什么?整个团队的一个守护进程在单独的服务器上运行客户端的每个开发人员?或者每个开发人员都有自己的守护进程。
答案 0 :(得分:15)
Docker客户端只提供cli,它只是一个http api包装器,就像aws cli一样。
Docker守护进程是整个操作背后的大脑,就像aws本身一样。当您使用docker run
命令启动容器时,您的docker客户端会将该命令转换为http API调用,将其发送到docker守护程序,Docker守护程序然后评估请求,与底层操作系统进行通信并配置您的容器。 / p>
请注意,docker cli可以连接到远程docker守护程序,您可以将docker守护程序配置为使用tcp IP。
我心中的问题是,在团队中工作的首选方式是什么?整个团队的一个守护进程在单独的服务器上运行客户端的每个开发人员?或者每个开发者都有他自己的恶魔。
这取决于您,但大部分时间开发人员都有本地docker守护程序和客户端,使用dockerfiles构建映像。如果他们需要共享docker镜像,您可以提供本地docker注册表或使用公共注册表注册表。通过这种方式,利用docker,您可以在开发人员的处置中拥有完全相同的开发环境。此开发环境将类似于生产环境。
答案 1 :(得分:2)
我心中的问题是,在团队中工作的首选方式是什么?整个团队的一个守护进程在单独的服务器上运行客户端的每个开发人员?或者每个开发者都有他自己的恶魔
每个开发人员都在使用自己的Docker守护进程和容器:Docker的想法是能够指定(Dockerfile)每个开发人员可以在本地重建和使用的容器,并确保docker build会生成完全相同的图像。
或者他们可以停靠推送图像并在其本地docker守护程序实例上重用它。
但无论如何,docker守护程序是每个服务器,这意味着只有当所述团队访问公共服务器时才会通过团队共享它。如果没有,他们可以在他们的工作站上安装docker,在这种情况下,每个人都有自己的docker守护进程。
答案 2 :(得分:1)
Docker守护程序安装在主机上,实际上充当Docker的大脑;它代表您创建和管理您的Docker映像。它的全部目的是执行客户端发出的命令。
例如,如果您对特定容器发出Docker stop命令,则守护程序将继续运行,找到该容器并将其停止。
此外,每当您的容器需要访问操作系统级别的网络端口,存储卷或任何其他组件时,Docker守护程序都会提供该功能。