这是“在Apple Silicon M1上运行Docker”的后续文章,继续了在Apple的新M1机器上探索Docker的旅程。
我们停止了启动ARM Linux虚拟机,并在其中安装和运行Docker的工作。这工作正常,并允许您运行类似Postgres数据库的容器。他们可以公开其端口,而不必连接到主机上的localhost:5432,而是连接到VM的IP地址,例如192.168.64.8:5432。
现在,如果您不知道,Docker实际上是一项通过HTTP公开API的服务,当您运行docker命令时,它们通过本地套接字上的这些API请求来控制服务。您可能有时会看到对unix:///var/run/docker.sock的引用。
这意味着可以引导您的Docker客户端通过网络与Docker服务进行通讯,这也是我们可以做的,以使“常规” Docker命令能够与在本地运行的“ Linux Docker VM”一起使用。
顺便说一句,这正是“ Docker for Mac”在幕后所做的:实际上,这是一个托管Docker的VirtualBox VM,而不是Mac本身。
为了开始,我们需要获取Docker客户端应用程序。现在,我不确定是否可以在M1 Mac上实际安装“ Docker for Mac”。我从Time Machine备份迁移了现有设置,因此从一开始就安装了Docker。如果安装程序失败,大概可以从英特尔计算机复制应用程序捆绑包。
假设您手头有一个docker二进制文件,那您就很好了。我们通过“ docker context”建立连接的方式,这一切都要归功于Johannes Weiss的技巧。
不过,首先,我们需要配置为通过SSH连接到我们的VM。安装SSH服务器:
并将您的公钥复制到ubuntu用户的authorized_keys中,以进行无密码访问。
为了连接到VM,您需要找到其IP地址(如果您之前的博客文章中介绍的,则位于192.168.64.0网络上)。
通过所有这些,我们可以测试来自主机的连接:
现在,所有docker命令都以虚拟机为目标,就像在Mac版Docker中一样。
❯Docker上下文创建myvm --docker“ host = ssh:// [受电子邮件保护]” myvm成功创建的上下文“ myvm”〜❯docker上下文使用myvmmyvm〜❯docker ps容器ID图像命令创建的状态端口名〜❯docker运行hello-worldHello来自Docker的消息!此消息表明您的安装似乎正常运行。要生成此消息,Docker采取了以下步骤:1. Docker客户端联系了Docker守护程序。 2. Docker守护程序从Docker Hub中提取了“ hello-world”映像。 (arm64v8)3. Docker守护进程从该映像创建了一个新容器,该容器运行可执行文件,该可执行文件将生成您当前正在读取的输出。 4. Docker守护程序将该输出流式传输到Docker客户端,该客户端将其发送到您的终端。要尝试更具野心的东西,您可以使用以下命令运行一个Ubuntu容器:$ docker run -it ubuntu bash免费的Docker ID:https://hub.docker.com/有关更多示例和想法,请访问:https://docs.docker.com/get-started/
请记住,此设置并不具备用于Mac的桥接网络或对卷的支持的Docker的便利性-但可以肯定的是,相距不远。