在启动时启动docker-machine

我有一个名为defaultdocker-machine 。 我试图让它在启动时启动。 我可以在login时执行此操作,但无需login即可使用。

我已经将以下文件放在/LaunchAgents/com.docker.machine.default.plist/LaunchDaemons/com.docker.machine.default.plist ,两者都不起作用。

/Library/LaunchDaemons/com.docker.machine.default.plist

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>RunAtLoad</key> <true/> <key>EnvironmentVariables</key> <dict> <key>PATH</key> <string>/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin</string> </dict> <key>Label</key> <string>com.docker.machine.default</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/docker-machine</string> <string>start</string> <string>default</string> </array> </dict> </plist> 

我也在这两个文件上运行sudo chmod 640 ,以防这里描述的权限问题。

当我运行时, sudo launchctl load -w com.docker.machine.default.plist如教程中所述,我得到“服务已经加载”。

该服务绝对没有运行,因为我已经检查使用docker-machine lsdocker-machine status default和机器启动时停止。

更新

我已经将日志logging添加到我的LaunchDaemon并获得以下输出。

主机不存在:“默认”

然后运行docker-machine ls ,我得到:

 NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default - virtualbox Stopped Unknown 

正如你所看到的机器在那里。 如果我运行docker-machine start default手动,它启动罚款…

 Starting "default"... (default) Check network to re-create if needed... (default) Waiting for an IP... Machine "default" was started. Waiting for SSH to be available... Detecting the provisioner... Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command. 

来自/ Library / LaunchDaemons的服务默认以root用户身份运行。 根没有任何docker机器。 你可以指定用户(在我的情况下,jenkins)

 <key>UserName</key> <string>jenkins</string> 

有关更多文档,您可以使用man launchd.plist

完整的org.vovkasm.docker-machine.plist,我用于jenkins用户:

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>EnvironmentVariables</key> <dict> <key>PATH</key> <string>/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin</string> </dict> <key>Label</key> <string>org.vovkasm.docker-machine</string> <key>ProgramArguments</key> <array> <string>/usr/local/opt/docker-machine/bin/docker-machine</string> <string>start</string> <string>default</string> </array> <key>RunAtLoad</key> <true/> <key>WorkingDirectory</key> <string>/usr/local</string> <key>UserName</key> <string>jenkins</string> </dict> </plist> 
Interesting Posts