我有docker-machine
名为default
。我试图让它在启动时启动。我可以在登录时完成,但我需要它而无需登录。
我已将以下文件放在/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>
如果有here所述的权限问题,我也会对这两个文件运行sudo chmod 640
。
当我跑步时,sudo launchctl load -w com.docker.machine.default.plist
如教程中所述,我得到了服务已经加载&#34;。
该服务肯定没有运行,因为我使用docker-machine ls
和docker-machine status default
进行了检查,并且机器在启动时停止。
更新
我已将登录添加到我的LaunchDaemon中并获得以下输出。
主机不存在:&#34;默认&#34;
然后我运行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.
答案 0 :(得分:0)
/ Library / LaunchDaemons中的服务默认以root用户身份运行。 root没有任何docker机器。您可以将用户(在我的情况下为jenkins)指定为
<key>UserName</key>
<string>jenkins</string>
有关更多文档,您可以使用man launchd.plist
。
我用于jenkins用户的完整org.vovkasm.docker-machine.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>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>