【问题标题】:OSX terminal vs Docker CLIOSX 终端与 Docker CLI
【发布时间】:2016-08-07 04:24:19
【问题描述】:

我无法理解 Docker CLI(由 Kinematic 启动)与常规 OSX 终端相比的目的是什么。

我在两个(OSX 终端和 Docker-CLI)中都有docker 命令,但是在输入时:

//OSX terminal
$ docker images
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

// Kinematic terminal
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
mariadb             5.5.47              a31b2e03c00b        6 months ago        238.8 MB
mysql               latest              d617bcfd159e        6 months ago        360.3 MB
mysql               5.7.9               a5ad9eb2ff48        8 months ago        359.9 MB
<none>              <none>              9ee13ca3b908        8 months ago        125.1 MB

对于 docker-compose up 等其他命令也是如此,它们在以 Kinematics 开头的终端上工作,但在我的本地终端上却不行。

你能解释一下我在这里缺少什么吗?

【问题讨论】:

    标签: macos docker terminal


    【解决方案1】:

    这是由于 Docker 环境在 MacOS 上的虚拟化。 docker 环境不能作为原生应用程序使用,而是包含在虚拟机中。见docs

    Docker for Mac 是我们为 Mac 提供的最新产品。它以本地方式运行 Mac 应用程序并使用 xhyve 虚拟化 Docker 引擎 Docker 守护程序的环境和 Linux 内核特定的功能。

    您无需以任何方式手动访问该机器。您的应用程序下列出的 Docker 终端以及 Kitematic 将为您执行此操作。

    但是,如果您查看 VirtualBox 中列出的虚拟机,您会发现一个名为 default 的虚拟机,它是在 Docker 安装期间创建的。

    所以 docker CLI 是一种介于本地 OSX 终端和 Docker 环境终端之间的适配器。 CLI 以某种方式将命令从您的 OSX 终端传送到 Docker 环境。

    【讨论】:

    • eval $(docker-machine env default) 将设置您的 OSX 终端环境,以便 docker cli 可以连接到 Docker 工具箱 boot2docker default VM。
    • 事实上 Docker Terminal 为你制作了eval $(docker-machine env default)。确实是bash -c "clear &amp;&amp; DOCKER_HOST=tcp://192.168.99.100:2376 DOCKER_CERT_PATH=/Users/metzger9/.docker/machine/machines/default DOCKER_TLS_VERIFY=1 /bin/bash"。您可以使用 CTRL-D 注销会话,然后使用上箭头找到最后一个命令。最好的解决方案是将docker-machine env default 的结果记录在您的.bachrc 中。下次打开 OS X 终端时,您将拥有使 docker 运行(以本机方式)所需的 env 变量
    • 我做错了,不是bachrc,而是bash_profile。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 2013-08-04
    • 2011-05-06
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    相关资源
    最近更新 更多