启动docker-machine On Boot

时间:2016-08-30 11:46:13

标签: macos docker launchd

我有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 lsdocker-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.

1 个答案:

答案 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>