如何将我的 RSA 密钥保存在我的 Docker 机器中?

How can I save my RSA KEY in my Docker Machine?

~/.ssh/my_id_rsa 在由 docker-machine create 创建的虚拟机中,每当我重新启动它时就会消失。我已阅读有关 docs.docker.com 的文档,但找不到有关此问题的信息。

我的主机是Mac(El Capitan),docker-machine的版本如下:

$ docker-machine version
docker-machine version 0.6.0, build e27fb87

我使用以下选项创建了我的 VM:

$ docker-machine create --driver virtualbox dev

关于如何解决这个问题有什么建议吗?我应该在哪里查看?

更具体地说,我想知道如何避免这个问题:

(host) $ docker-machine create --driver virtualbox dev
(host) $ docker-machine ssh dev
(dev) $ ssh-keygen
...
(dev) $ ls ~/.ssh
authorized_keys   authorized_keys2  id_rsa            id_rsa.pub
(dev) $ logout
(host) $ docker-machine restart dev
(host) $ docker-machine ssh dev
(dev) $ ls ~/.ssh
authorized_keys   authorized_keys2

"id_rsa" 和 "id_rsa.pub" 在哪里?

通常,我不会指定任何关于 ssh 密钥的信息:docker-machine~/.docker/machine/machines/<amachine>/

中创建一个无密码的 ssh 密钥

如果您想指定自己的,请参阅 this example from the docker-machine documentation:

$ docker-machine create \
  --driver generic \
  --generic-ip-address=203.0.113.81 \
  --generic-ssh-key=~/.ssh/id_rsa \
  vm

OP 添加:

(dev) $ logout
(host) $ docker-machine restart dev
(host) $ docker-machine ssh dev

那是在虚拟机本身内创建 ssh 密钥:基于 TinyCore 的 boot2docker 只保留 /var/lib/boot2docker 中的内容,没有其他内容。
它确实挂载了 /Users,但除此之外,其他所有内容(包括 /home/docker~/.ssh 中的 ~)都重置为 boot2docker.iso 原始内容下次重启。
参见“boot2docker: Persist data

要使这些 ssh 密钥在会话中持续存在,您需要:

  • 在 /Users/any/path/you/want 中生成它们(因为它们实际上会存储在主机上)
  • 或在 /var/lib/boot2docker
  • 中生成它们