搭建好了 docker 环境后,就可以来试试用 docker 跑一个应用实例来看看了。和 Vagrant 比较类似,docker 也是用一个配置文件来规划其基础镜像内的部署,不过值得注意的是,在 Dockerfile
里的每一个指令成功执行后,docker 默认都会 commit 一次,这样就节省了一些空间和时间。
构建失败的镜像,在 docker images
命令输出中显示为 <none>
可以根据具体的 commit id,调用 docker rmi <id>
命令清除。
一个比较简单的 Dockerfile
示例是这样的:
FROM centos:6.4
RUN yum install make gcc wget perl perl-devel perl-Time-HiRes perl-CGI perl-libwww-perl perl-Module-Build perl-Test-Simple perl-Test-Deep perl-YAML
RUN wget http://cpanmin.us
RUN perl cpanm Dancer
ADD /var/www/dancerapp app
EXPOSE 3000
CMD perl app/bin/app.pl
然后运行如下命令构建镜像:
docker build -t chenryn/perldancer
如果构建都成功的话,那就是正式运行了:
docker run -p 8080:3000 -d chenryn/perldancer
运行起来以后,可以通过 docker ps
命令看到本机上运行着的容器状态信息。同样,也可以通过映射的 8080 端口访问到页面了。
正在测试通过 plenv
来使用高版本的 perl,目前比较郁闷的是因为 plenv
是通过 ~/.profile
来在每次登陆的时候自动切换到指定版本的,而 docker
里的 RUN
调用 /bin/sh -c
不会调用到这些文件,所以一直还是使用系统自带版本。而在 RUN
指令里每行都写一个 source $HOME/.profile
也很难看的。