使用 Vagrant 和 Docker 在一个 VM 中进行开发(3)

试想想Docker当做是git.  我们已经对Ubuntu做了一些修改, 必须承认这减少了我们的工作量.

和Git一样, Docker减少了每个容器的差别,而不是整个系统. 这意味着我们至于要保存我们安装的软件以及我们改变的文件. 多厉害!

退出Ubuntu容器:
> ctrl-d
这将使容器消失. 我们用the/bin/bash程序开始容器 (> docker run -name="test" -t -i ubuntu /bin/bash), 并且当这个开始程序结束时这个容器也就消失了.

列出所有Docker容器:
> docker ps -a
-a选项列出了所有的容器.docker ps列出了运行的容器.

我们在列表中可以看见自己的容器:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES 4bf2ba69c69c        ubuntu:12.04        /bin/bash           5 seconds ago       Exit 0                                  test

提交改变给新的容器:
> docker commit test custom/base
我们已经使用ID而不是名字写了docker commit 4bf2b custom/base 来只是我们改变的那个容器.

这创建了一个叫做custom/base的新容器,这个新容器保存了所有已经做过的修改.和Ubuntu一样我们可以启动这个容器docker run [...] custom/base.这就好了.

可以通过键入docker images查看可用的容器. 你会看见新的Ubuntu图像,以及新的custom/base图像.

这是基础: 创建一个包含部分修改的新容器(用命令行也行, 但最好使用Docker files文件),并且提交和运行.

建立协议栈

我们将安装一个基于我们创建的容器的LAMP协议栈. 这不是必须的,安装 Python, ruby, golang可以由你自己来选择.

首先,用下列步骤来创建一个新的容器:

> docker run -name="lamp" -t -i custom/base /bin/bash

这个shell已经装载了我们刚才修改的那个容器.再为我们的基础协议栈安装mysql、apache和PHP.

> apt-get install apache2 mysql-server php5 libapache2-mod-php5

厉害. 跳过这些服务的配置,因为其中有很简单的向导. 如果失败了就加入头Linode Library.

软件安装和配置完成了, 将这些修改提交给新的容器. 按ctrl-d回到CoreOS, 然后按照如下方法提交容器:

> docker commit lamp custom/lamp

运行协议栈并且转发端口

我们已经做到了可以开始使用Docker容器这一步. 不过有几个前提条件: 转发端口, 并且是数据库和网络服务可以自动运行.

幸运的, 端口可以通过命令行轻松设置(用dockerfiles文件设置更简单):

> docker run -t -i -p 80:80 -p 3306:3306 -v /home/core/vagrant/project:/var/www/project custom/lamp /bin/bash

接下来我们要做:

再次使用伪shell运行容器(-t -i)

将容器端口80和3306设置的和CoreOS相同的端口 (-p 80:80 -p 3306:3306)

从CoreOS 安装一个卷到容器, 同时这个卷也被安装在Vagrant上. 这是装在我们机器上的开发文件(-v /from:/to)

现在, 我们可以通过localhost:8080(由Vagrant转发的端口)在容器中运行的网络服务了. 整理一下环境,现在可以开始开发我们的应用了.

从这里开始

你应该熟悉docker的高级功能,如提交、运行、图像以及通过向导创建新的工作开发环境。

通过docker可以做很多事情. 以下一些你可以参考:

Docker 的详细介绍请点这里
Docker 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/811b36c256f157fff4704ef35522d813.html