启动后如何重启docker-machine?

时间:2018-05-29 14:34:51

标签: macos docker plist docker-machine launchctl

我正在使用MacBook Pro 2009,它不支持最新的Docker for Mac。所以,我正在使用Docker Machine方法让Docker启动并运行我的机器。

以下是我用来在我的机器上安装Docker的命令:

$ brew install docker docker-compose docker-machine
$ docker-machine create --driver virtualbox default
$ docker-machine env
$ eval $(docker-machine env default)

上面的命令没有错。每次运行最后一个命令时,Docker进程都会正常运行。

但是,当我重新启动主机(MacBook)时,Docker Machine已经死了,我看到Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?错误。

我尝试在.bash_profile下面放两行,但它不起作用(是的,我已经source了):

docker-machine restart default
docker-machine env
eval $(docker-machine env default)

我还尝试创建LaunchDaemons .plist文件以在启动时运行bash脚本,但它也不起作用:

<?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/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:</string>
    </dict>
    <key>Label</key>
    <string>com.startup</string>
    <key>Program</key>
    <string>/Users/zulh/scripts/start_docker.sh</string>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <false/>
    <key>LaunchOnlyOnce</key>        
    <true/>
    <key>StandardOutPath</key>
    <string>/tmp/startup.stdout</string>
    <key>StandardErrorPath</key>
    <string>/tmp/startup.stderr</string>
    <key>UserName</key>
    <string>zulh</string>
    <key>GroupName</key>
    <string>staff</string>
    <key>InitGroups</key>
    <true/>
  </dict>
</plist>

bash脚本:

#!/bin/bash
docker-machine restart default
docker-machine env
eval $(docker-machine env default)

命令是:

$ sudo launchctl load -w /Library/LaunchDaemons/com.startup.plist

每次启动或重新启动MacBook时,如何重新启动Docker Machine?

2 个答案:

答案 0 :(得分:0)

您可以使用brew services command来做到这一点。

  1. 运行brew info docker-machine,您应该看到有关docker-machine公式的一些信息。
  

要立即启动docker-machine并在登录时重新启动:

     

brew services start docker-machine

     

或者,如果您不想/不需要后台服务,则可以运行:

     

docker-machine start

  1. 运行brew services start docker-machine,将立即启动服务docker-machine并将其注册以在登录时启动。
  2. 运行brew services list列出所有正在运行的服务。

如果docker-machine状态已启动,则应在登录时重新启动。

您可以在eval $(docker-machine env default)中添加.bash_profile来配置Shell。

答案 1 :(得分:0)

尝试此行

docker-machine start default