将应用程序停靠在Mac OS X上

时间:2015-01-27 23:00:36

标签: macos docker zeromq boot2docker

我按照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
    

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

  3. 为了完成,我提供了我的环境变量列表:

    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的好处..

1 个答案:

答案 0 :(得分:2)

在转向SO之前,你应该做更多的阅读和研究,然后询问你能做些什么。但是:

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

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

  3. 是的,由于boot2docker VM,它会慢一些。如果您在Linux主机上运行,​​速度会慢一些。优点是zeromq现在在一个具有所有依赖关系的隔离容器中运行。