macos - 启动后如何重启docker-machine?

标签 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 机器死机了,我看到 无法连接到位于 unix:///var/run/docker.sock 的 Docker 守护程序。 docker 守护进程是否正在运行? 错误。

我尝试在我的 .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?

最佳答案

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

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

To have launchd start docker-machine now and restart at login:

brew services start docker-machine

Or, if you don't want/need a background service you can just run:

docker-machine start

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

如果 docker-machine 状态是启动的,它应该在登录时重新启动。

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

关于macos - 启动后如何重启docker-machine?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50587035/

相关文章:

cocoa - 如何在 NSObject 子类上简洁地迭代 @properties 以从 plist 设置属性?

javascript - 如何直接选择id元素后的元素

python - 当所有权正确时,为什么 `killpg` 会返回 “not permitted”?

windows - 如何在 mac 中拆分文件然后将其连接到 Windows(例如 : using split and cat)?

swift - 保持窗口始终在顶部?

docker - Mac版Docker-极慢的请求时间

macos - 有没有办法在 OSX 中安装 gcc 而无需安装 Xcode?

通过 nginx 代理的 Docker 环境导致 502 Bad Gateway

php - 如何正确设置数据卷容器?

ios - 如何将 plist 文件重新加载到表中