我看到了类似的帖子,但它们适用于Linux上的Docker。
我正在使用Windows 10的Docker桌面。
这台运行Docker的Windows 10计算机已设置为自动重启。 Docker启动后还有其他脚本将运行。 Windows和Docker启动过程需要一点时间才能完成。有没有办法监视docker服务和所有需要的容器,直到它们启动并运行?由于Docker尚未准备就绪,因此其余脚本将连续运行而不会发送错误消息。
首选PowerShell。
答案 0 :(得分:0)
只是一个想法:
docker在启动过程中或未启动时:
PS C:\> docker version
Client: Docker Engine - Community
Version: 18.09.2
API version: 1.39
Go version: go1.10.8
Git commit: 6247962
Built: Sun Feb 10 04:12:31 2019
OS/Arch: windows/amd64
Experimental: false
Error response from daemon: An invalid argument was supplied.
PS C:\> echo $?
False
当Docker完成启动并在运行时:
PS C:\> docker version
Client: Docker Engine - Community
Version: 18.09.2
API version: 1.39
Go version: go1.10.8
Git commit: 6247962
Built: Sun Feb 10 04:12:31 2019
OS/Arch: windows/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.2
API version: 1.39 (minimum version 1.12)
Go version: go1.10.6
Git commit: 6247962
Built: Sun Feb 10 04:13:06 2019
OS/Arch: linux/amd64
Experimental: false
PS C:\> echo $?
True
您可以编写脚本来轮询docker version
的状态,以确保Docker准备就绪。
答案 1 :(得分:0)
docker version
可能是这样做的一种方法,但是需要解析文本,如果该文本发生更改,则需要在将来的某个日期进行解析,然后还必须维护和更新您的脚本。
另一种方法是只使用Get-Process
监视进程。当Docker不运行时,您将/应该仅看到com.docker.service
正在运行。 Docker for Windows完全启动后,您将看到其他3-4个其他进程。 com.docker.proxy
服务是Docker完全运行后特别容易出现的一种服务。
因此,一旦此命令返回进程,您将知道Docker for Windows已启动并正在运行:
Get-Process 'com.docker.proxy'