Yanbin
|
贡献一篇:
云主机可以选择操作系统镜像快速创建主机,这比虚拟机更便捷了,我们本地也可以这么做了,因为有了 Docker 这个东西。它依赖于 LXC(Linux Container),能从网络上获得配置好的 Linux 镜像,非常容易在隔离的系统中运行自己的应用。也因为它的底层核心是个 LXC,所以在 Mac OS X 下需要在 VirtualBox 中跑一个精小的 LXC(这里是一个 Tiny Core Linux,完全在内存中运行,个头只约 24MB,启动时间小于 5 秒的 boot2docker) 虚拟机,构建在 VirtualBox 中。以后的通信过程就是 docker --> boot2docker --> container,端口或磁盘映射也是遵照这一关系。 理解了上面的关系,开始说说 Docker 安装过程 1. 安装 VirtualBox, 不多讲, 因要在它当中创建一个 boot2docker-vm 虚拟机 2. 安装 boot2docker brew install boot2docker 你也可以手工安装 curl https://raw.github.com/steeve/boot2docker/master/boot2docker > boot2docker; chmod +x boot2docker; sudo mv boot2docker /usr/local/bin 3. 安装 Docker brew install docker 也可手工安装 curl -o docker http://get.docker.io/builds/Darwin/x86_64/docker-latest ; chmod +x docker; sudo cp docker /usr/local/bin 4. 配置 Docker 客户端 export DOCKER_HOST=tcp://127.0.0.1:4243 把它写到 ~/.bash_profile 中,如果你是用的 bash 的话。我工作在 fish 下,所以在 ~/.config/fish/config.fish 中加了 set -x DOCKER_HOST tcp://127.0.0.1:4243 5. boot2docker 初始化与启动 boot2docker init 完成后就能在 VirtualBox 中看到一个叫做 boot2docker-vm的虚拟机,以后只需用 boot2docker 命令来控制这个虚拟机的行为,启动,停止等。 boot2docker up 启动,boot2docker-vm虚拟机,我们能在 VirtualBox 中看到该虚拟机变成 Running 状态 直接执行 boot2docker 可以看到可用的参数 Usage /usr/local/bin/boot2docker {init|start|up|save|pause|stop|restart|status|info|delete|ssh|download} 6. 启动 Docker 守护进程 sudo docker -d 这时可执行 boot2docker ssh,输入密码 tcuser 进到该虚拟机的控制台下,如果要用户名的话请输入docker
上面看到 Mac 启动了 4243 端口,在 boot2docker 虚拟机中也有 4243 端口,并在 /var/run/docker.sock 上监听。借此回顾下 docker 的通信过程,dock 命令是与 Docker daemon 在 Mac 上开启的 4243 端口通信,该端口映射到 boot2docker 的 4243 端口上,进而通过 /var/run/docker.sock 与其中的容器进行通信。 所以在执行 docker version 时如果没有启动 Docker daemon 会提示 2014/05/16 06:52:48 Cannot connect to the Docker daemon. Is 'docker -d' running on this host? 如果没有启动 boot2docker 会得到提示 Get http:///var/run/docker.sock/v1.11/version: dial unix /var/run/docker.sock: no such file or directory Mac OS X -- boot2docker -- container 三者之间的关系,这张图很好的说明了
上面 boot2docker, docker 都准备就绪了, 现在开始进入 dock 的操作了,有关于 docker 的命令可以参看这里 http://blog.tankywoo.com/docker/2014/05/08/docker-4-summary.html。 本文原始链接 http://unmi.cc/mac-os-x-experience-docker/, 来自 隔叶黄莺 Unmi Blog1. 下载镜像,并加载启动容器
docker images #现在没有一个镜像 现在我们在容器的控制台上 oot@95903c1a2bf7:/#,可以安装一个 apche2, curl 并启动 apache2,来测试下
root@95903c1a2bf7:/# apt-get update Apache2 正常启动了,在容器内可访问。但现在还无法从 Mac OS X 上对该 apache 服务进行访问,这需要端口映射,有两种方式。不过在端口映射之前还需保存下镜像的修改。 2. 保存镜像 如果前面用 docker run -i -t learn/tutorial 运行的镜像 在运行该镜像的容器中安装了软件,需要把新的内容保存到该镜像中去,否则下次启动该镜像又恢复成原样
uqiu@localhost ~> docker ps -l 看到容器的 ID,然后执行 docker commit 95903c1a2bf7 learn/tutorial:latest #把当前容器的修改提交到镜像 learn/tutorial 中去 以后再次运行该镜像就有了最新安装的内容了。 2. 端口映射 比如我们现在要做的映射关系是 Mac OS X(50080) --> boot2docker(40080) --> container(80),如下图:
图片修改自: http://tech.uc.cn/?p=2726 可以有两种办法 1) boot2docker ssh -L 50080:localhost:40080 #这条命令可以在 boot2docker-vm 运行时执行,建立多个不同的映射就是执行多次
docker run -i -t -p 40080:80 learn/tutorial 然后在 Mac 的浏览器中打开 http://localhost:50080
2) VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port_50080:80,tcp,,50080,,40080"
docker run -i -t -p 40080:80 learn/tutorial 这是直接修改了 boot2docker-vm 的配置,可以在 VirtualBox 中看到这条配置,配置 nat 命令见 http://www.virtualbox.org/manual/ch06.html#natforward. 也能建立许多的端口映射
还能直接在这里编辑端口映射关系 Docker 的世界很精彩,其他内容基本就是怎么用好 Docker 命令,如管理镜像,容器,创建自己的镜像; Docker 有三种运行命令的方式,短暂方式,交互方式,daemon方式; 使用 ssh 来管理容器等等。 在 Mac 下使用 Docker 除了可用 boot2docker 作为 LXC,还有个替代品 VAGRANT 。 参考:
1.
利用Docker构建开发环境 本文链接 http://unmi.cc/mac-os-x-experience-docker/, 来自 隔叶黄莺 Unmi Blog |
2014-05-19 23:28:36