在 Mac OS X 上对应用程序进行 docker 化
dockerizing an application on Mac OS X
我按照 docker 网站上的说明安装了 boot2docker。这里有一些命令 运行s 来表明我已经正确安装了东西:
$$:~ 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 服务器。
我的问题如下:
如果我退出容器,它会保存我在其中所做的所有工作吗?
我不知道如何在端口 5555 上连接到服务器 运行ning。我读了一些关于公开端口的内容,但我不确定如何去做。我在容器内做了一个 ifconfig,并尝试像这样从主机连接到服务器:
$$:~ kv$ ./zmq_client tcp://container_ip:5555
这没有用。有人可以列出我需要采取的步骤才能连接到容器内的服务器运行ning。
为了完成,我提供了我的环境变量列表:
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 容器 运行ning(其中 运行s Ubuntu)。如果我 运行 应用程序,如容器内基于 zeromq 的服务器,与直接在 Mac OS X 上 运行 相比,它不会更慢吗?请解释在这种情况下使用 docker 的好处..
在求助于 SO 之前,您真的应该多做一些阅读和研究,然后询问任何您无法弄清楚的问题。但是:
没有。如果容器是 "exited" 你可以重新启动它并且你的文件仍然存在,但是一旦它被删除你的文件就消失了。您可以使用 docker commit
将它们保存到图像中,但最好的办法是使用 Dockerfile。
docker run -p 5000:8000 image
会将容器中的 8000 端口暴露为主机上的 5000 端口。
是的,由于boot2docker VM,它会更慢。如果您 运行 在 Linux 主机上,它不会更慢。优点是 zeromq 现在 运行 在一个独立的容器中及其所有依赖项。
我按照 docker 网站上的说明安装了 boot2docker。这里有一些命令 运行s 来表明我已经正确安装了东西:
$$:~ 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 服务器。
我的问题如下:
如果我退出容器,它会保存我在其中所做的所有工作吗?
我不知道如何在端口 5555 上连接到服务器 运行ning。我读了一些关于公开端口的内容,但我不确定如何去做。我在容器内做了一个 ifconfig,并尝试像这样从主机连接到服务器:
$$:~ kv$ ./zmq_client tcp://container_ip:5555
这没有用。有人可以列出我需要采取的步骤才能连接到容器内的服务器运行ning。
为了完成,我提供了我的环境变量列表:
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 容器 运行ning(其中 运行s Ubuntu)。如果我 运行 应用程序,如容器内基于 zeromq 的服务器,与直接在 Mac OS X 上 运行 相比,它不会更慢吗?请解释在这种情况下使用 docker 的好处..
在求助于 SO 之前,您真的应该多做一些阅读和研究,然后询问任何您无法弄清楚的问题。但是:
没有。如果容器是 "exited" 你可以重新启动它并且你的文件仍然存在,但是一旦它被删除你的文件就消失了。您可以使用
docker commit
将它们保存到图像中,但最好的办法是使用 Dockerfile。docker run -p 5000:8000 image
会将容器中的 8000 端口暴露为主机上的 5000 端口。是的,由于boot2docker VM,它会更慢。如果您 运行 在 Linux 主机上,它不会更慢。优点是 zeromq 现在 运行 在一个独立的容器中及其所有依赖项。