重命名 docker 台机器

Rename docker machine

如何重命名 docker-machine 机器?我无法使用 docker-machine --helpsubcommand docs.

找到它

似乎有一个被放弃的拉取请求: PR 30

在相关问题中,存在关于不允许此命令的争论: Issue 59

基本上你必须:

  1. 从 docker 机器存储(通常在 /.docker/machine/machines/ 中)重命名 docker 机器的目录
  2. 使用新名称和新路径更新 config.json
  3. 在虚拟机提供商(VirtualBox、VMware 等)中重命名机器

这里有一个gist for VirtualBox。有了这个,你可以像这样重命名机器 docker-machine-rename default my-default

这仅在您使用 VirtualBox 时有效。如果您使用的是 paralells 驱动程序或其他东西,则必须将 vboxmanage ... 替换为该驱动程序的适当命令

已编辑 我在收到@DagHøidahl

的反馈后更新了脚本

!!警告:我在下面使用的方法不起作用!!

在最后一次重启时,我的客户端版本不匹配。关闭终端并重新启动 "Docker Quickstart Terminal" 后,我的 default 机器被删除并重新创建...:(

无论如何,对于那些可能能够指出过程中的任何错误的人 - 我已经在此处列出了它。

也许名称 'default' 已保留。目前,我坚持使用 VMWare Fusion

中托管的机器的名称 'vm'

我已经发布了这个非答案作为对任何可能尝试相同但在默认机器中丢失任何容器的人的警告。


目标:删除默认机器并将 vm 重命名为默认机器。然后默认使用新机器

我用的方法不优雅,[最后]对我没用...

  1. 删除docker-机器

    docker-machine rm default

  2. 重命名目录

    cd ~/.docker/machine/machines
    mv vm default
    cd default

  3. 手动将所有 vm.* 文件重命名为默认值。*

    mv vm.plist default.plist
    mv vm.vmdk default.vmdk
    mv vm.vmdk.lck default.vmdk.lck
    mv vm.vmsd default.vmsd
    mv vm.vmx default.vmx
    mv vm.vmx.lck default.vmx.lck
    mv vm.vmxf default.vmxf

  4. 编辑 default.vmx 并在适当的地方用默认值替换 vm

    [you need to do this yourself...]

  5. 在 VMWare Fusion 中打开新的 'default' 虚拟机
    • Finder -> 转到 -> 文件夹 -> ~/.docker/machine/machines
    • 将 .vmx 文件拖入 Fusion
  6. 启动重命名的机器

    $ docker-machine start default
    Starting "default"...
    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.
    $ docker-machine env
    Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "172.16.41.132:2376": x509: certificate is valid for 172.16.41.131, not 172.16.41.132
    You can attempt to regenerate them using docker-machine regenerate-certs [name].
    Be advised that this will trigger a Docker daemon restart which will stop running containers.
    $ docker-machine regenerate-certs default
    Regenerate TLS machine certs? Warning: this is irreversible. (y/n): y
    Regenerating TLS certificates
    Waiting for SSH to be available...
    Detecting the provisioner...
    Copying certs to the local machine directory...
    Copying certs to the remote machine...
    Setting Docker configuration on the remote daemon...

此时机器工作正常...但是,尝试另一个docker-machine restart default产生客户端版本不匹配错误。

关闭终端并重新启动后 "Docker Quickstart Terminal" 使用 virtualbox 重新生成了默认机器,我的 VMWare 托管默认机器被删除了...

如果您使用 docker 工具箱创建或启动 docker 机器,有一个脚本文件来配置机器设置,包括名称。找到您的 docker 工具箱路径 like:c:\Program Files\Docker 工具箱。 有一个名为 start.sh 的脚本。将默认名称替换为您机器的名称。

VM=${DOCKER_MACHINE_NAME-xxxxx}

最好在更改配置之前删除默认机器文件。然后重启工具箱。

我按照以下步骤 docker-在 Mac OSX

中使用 VirtualBox 进行组合
  1. 从 VirtualBox 控制台重命名虚拟机。 (我想你也可以使用 vboxmanage modifyvm "$OLD_MACHINE_NAME" --name "$NEW_MACHINE_NAME")
  2. 从 VirtualBox 控制台删除虚拟机。注意不要删除数据,只删除虚拟机。
  3. 进入VirtualBox Media Manager,移除被移除的机器使用的硬盘和光盘。 (后面需要导入虚拟机)
  4. 重命名 docker 目录中虚拟机的目录。通常在$HOME/.docker/machine/machines。 mv $OLD_MACHINE_NAME $NEW_MACHINE_NAME
  5. 用新机器名替换 config.json 中对旧机器名的所有引用,即在机器目录中。当我将机器重命名为默认值时,在我的例子中是 $HOME/.docker/machine/machines/default/config.json
  6. 更新指向虚拟机目录子目录中.vbox 文件中磁盘映像的目录。您必须确保它们指向新位置。 (在我的例子中是 $HOME/.docker/machine/machines/default/default/default.vbox)
  7. 使用菜单中的 Machine > 添加... 选项将虚拟机导回 VirtualBox。选择计算机目录子目录中的 .vbox 文件。 (在我的例子中是 $HOME/.docker/machine/machines/default/default/default.vbox)

我使用的是以下版本: docker-机器版本 0.13.0,build 9ba6da9 Virtual Box 版本 5.2.6 r120293