【问题标题】:dockerizing an application on Mac OS X在 Mac OS X 上对接应用程序
【发布时间】:2015-01-28 07:25:37
【问题描述】:

我按照 docker 网站上的说明安装了 boot2docker。以下是一些命令运行以显示我已正确安装:

$$:~ kv$ boot2docker start
Waiting for VM and Docker daemon to start...
...................ooo
Started.
Writing /Users/kvantum/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/kvantum/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/kvantum/.boot2docker/certs/boot2docker-vm/key.pem
Your environment variables are already set correctly.

$$:~ kv$ docker images
REPOSITORY  TAG     IMAGE ID        CREATED             VIRTUAL SIZE
ubuntu     14.04   b39b81afc8ca        11 days ago         188.3 MB
hello-world  latest e45a5af57b00        3 weeks ago         910 B

在此之后,我运行了以下命令:

docker run -t -i ubuntu:14.04 /bin/bash

在容器内部,我安装了 zeromq,并使用 tcp 在 5555 端口启动了一个 zeromq 服务器。

我的问题如下:

  1. 如果我退出容器,它会保存我在里面做的所有工作吗?

  2. 我不知道如何连接到在端口 5555 上运行的服务器。我读过一些关于暴露端口的文章,但我不知道如何去做。我在容器内做了一个 ifconfig,并尝试从主机连接到服务器,如下所示:

    $$:~ kv$ ./zmq_client tcp://container_ip:5555
    

    这不起作用。有人可以列出我需要采取的步骤以连接到容器内运行的服务器。

为了完整起见,我提供了我的环境变量列表:

TERM_PROGRAM=Apple_Terminal
TERM=xterm-256color
SHELL=/bin/bash
TMPDIR=/var/folders/km/5kbpdx4s7cg4rmyc6d5q9l9r0000gq/T/
DOCKER_HOST=tcp://192.168.109.103:2376
Apple_PubSub_Socket_Render=/tmp/launch-1tWMHJ/Render
TERM_PROGRAM_VERSION=326
OLDPWD=/Users
TERM_SESSION_ID=262CBC8B-0A74-4B70-9F28-D9FA51FF713C
USER=kv
SSH_AUTH_SOCK=/tmp/launch-ZTWNGL/Listeners
__CF_USER_TEXT_ENCODING=0x1F7:0:0
DOCKER_TLS_VERIFY=1
__CHECKFIX1436934=1
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin
PWD=/Users/kv
DOCKER_CERT_PATH=/Users/kv/.boot2docker/certs/boot2docker-vm
HOME=/Users/kv
SHLVL=1
LOGNAME=kv
LC_CTYPE=UTF-8
DISPLAY=/tmp/launch-rco9zt/org.macosforge.xquartz:0
_=/usr/bin/env

最后一个问题是关于代码性能的。所以在我的 Mac OS X 中,我有一个 docker 容器正在运行(它运行 Ubuntu)。如果我运行应用程序,比如容器内基于 zeromq 的服务器,与直接在 Mac OS X 上运行它相比,它不会更慢。请解释在这种情况下使用 docker 的好处..

【问题讨论】:

    标签: macos docker zeromq boot2docker


    【解决方案1】:

    在转向 SO 之前,您确实应该做更多的阅读和研究,然后询问您无法弄清楚的任何事情。但是:

    1. 没有。如果容器“退出”,您可以重新启动它,您的文件仍然存在,但一旦删除,您的文件就消失了。您可以使用docker commit 将它们保存到映像中,但最好的办法是使用 Dockerfile。

    2. docker run -p 5000:8000 image 会将容器中的 8000 端口公开为主机上的 5000 端口。

    3. 是的,由于 boot2docker 虚拟机,它会变慢。如果您在 Linux 主机上运行,​​它不会更慢。优点是 zeromq 现在运行在一个带有所有依赖项的隔离容器中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 2012-10-01
      • 2018-01-16
      • 2011-05-19
      • 1970-01-01
      相关资源
      最近更新 更多