如何在 mac 上将 docker 存储驱动程序更改为 devicemapper

Posted

技术标签:

【中文标题】如何在 mac 上将 docker 存储驱动程序更改为 devicemapper【英文标题】:how can I change docker storage driver to devicemapper on mac 【发布时间】:2017-01-06 23:11:43 【问题描述】:

我正在尝试将存储驱动程序更改为 mac 上的 devicemapper。并按照Change docker storage driver on Mac OS X中的步骤进行操作

但我收到以下错误,我的 docker for mac 是最新版本。

$ docker-machine create --driver virtualbox  --engine-storage-driver devicemapper test2
Running pre-create checks...
Creating machine...
(test2) Copying /Users/weiwang/.docker/machine/cache/boot2docker.iso to /Users/weiwang/.docker/machine/machines/test2/boot2docker.iso...
(test2) Creating VirtualBox VM...
(test2) Creating SSH key...
(test2) Starting the VM...
(test2) Check network to re-create if needed...
(test2) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Error creating machine: Error checking the host: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.99.105:2376": read tcp 192.168.99.1:49168->192.168.99.105:2376: read: connection reset by peer
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.

【问题讨论】:

【参考方案1】:

注意:请阅读更新

不再支持 Devicemapper。 您可以使用叠加层,这也很不错。

用法: docker-machine create --driver virtualbox --engine-storage-driver overlay test2

编辑:

我最初的评论没有正确回答问题。在对 devicemapper 存储驱动程序的工作原理进行了更多研究后,发现默认的boot2docker docker-machine 使用的基本操作系统不支持 devicemapper 存储驱动程序。

以下是支持的发行版列表:

RHEL/CentOS/Fedora Ubuntu 12.04 Ubuntu 14.04 Debian

更多详细信息可以在here找到。

因此,要解决此问题,您需要在 VM 中安装上述发行版之一。添加 SSH 服务器和无需 tty 即可运行命令的无密码 sudo 用户。

我通过在 VirtualBox 中安装 CentOS 虚拟机、添加 NAT 和仅主机驱动程序(用于下载互联网软件包的 NAT 以及用于 docker-machine 和虚拟机可以的专用网络的仅主机适配器)来尝试这一点交流。)

设置好 VM 后,可以使用以下命令将其连接到 docker-machine。 docker-machine 将 ssh 进入虚拟机并检查是否安装了 Docker 引擎。如果不是这样,它将自动下载和配置。

docker-machine create \
  --driver generic \
  --generic-ip-address=192.168.58.14 \
  --generic-ssh-port 22 \
  --generic-ssh-key ~/.ssh/id_rsa \
  --engine-storage-driver devicemapper \
  docker-centos

有关在此处使用通用驱动程序的更多信息: https://docs.docker.com/machine/drivers/generic/

希望这比最初的答案对您有所帮助:)

【讨论】:

感谢 Menzo,我能够创建带有覆盖作为存储驱动器的机器,但这并不能解决我的问题。我需要在容器内运行服务,但该服务不适用于 aufs 和覆盖 @weiwang 我对这个主题做了更多的研究并更新了我的答案。绝对仍然可以使用 devicemapper 存储驱动程序。 Docker 只是不支持它的默认基本操作系统。 @weiwang 我刚刚写了一篇关于如何在 OSX 上执行此操作的文章。你可以在这里找到它:medium.com/@menzo/…

以上是关于如何在 mac 上将 docker 存储驱动程序更改为 devicemapper的主要内容,如果未能解决你的问题,请参考以下文章

在 OSX 上将卷挂载到 Docker 映像

如何在 Mac 上将 openCV 安装到 Enthought python 发行版中

如何在 docker run 上将数据通过管道传输到 dockerified 应用程序?

Qt/C++ 在 Mac OSX 10 上将系统范围 QSettings 存储在哪里?

如何在 Mac 上将 Raspbian 安装到 SD 卡

如何在 Windows 上将 docker nginx 与 express 和 react 应用程序连接起来