这两天终于把《docker 从入门到实践》看完了,原本打算写写总结,但是感觉书中的内容太过死板,还不如从自己使用docker的过程中总结出一些好玩的docker应用方法分享给大家,欢迎有更多的人分享自己使用docker时一些好玩的项目,私信我给友情链接。
制作和使用Vim插件的镜像
如果你用关键词Vim搜索我的博客会发现有篇博客专门介绍如何使用Vim的插件来配置类似于VS的集成开发环境。现在我使用docker制作Vim插件的镜像来实现在多机上快速建立这样的VS集成开发环境。
利用Dockerfile制作镜像
将需要打包的插件放在某个目录下:
当前目录下编辑Dockerfile,将插件打包到基于ubuntu镜像创建的镜像中:1
2
3
4FROM ubuntu:14.04
MAINTAINER Kang Yan <wowyk@qq.com>
ADD . /tool
制作镜像,命令如下(happymain是我在daocloud上注册的用户名,主要的原因是国内有时候无法访问docker hub,所以就使用daocloud):1
docker build -t daocloud.io/happymain/tool .
push镜像到daocloud
1 | docker push daocloud.io/happymain/tool |
在部署机上pull镜像
1 | docker pull daocloud.io/happymain/tool |
在一个会话中运行容器:1
docker run -t -i daocloud.io/happymain/tool
在另一个会话中导出到test.tar:1
2docker ps(得到containerID)
docker export containerID > test.tar
这个test.tar就是整个文件系统的所有文件,找个目录将其解压,其中的tool目录就是Vim的插件。
在部署机上简单操作完成安装
1) ctags需要单独编译安装1
2
3
4tar xvf ctags-5.8.tar
cd ctags-5.8
./configure
make & make install
2) 需要将插件移到~/.vim目录下,将hello中的配置拷贝到~/.vimrc1
2
3mv * ~/.vim
cd ~/.vim
cp hello ~/.vimrc
这样就实现了VS集成开发环境的移植,其实Github也可以做类似的工作;)
开发与运维的隔离
比如说我在主机上编写代码,容器中同步更新并且可以直接运行:1
docker run -t -i -v $(pwd):/test ubuntu:14.04
结果如下:
我们可以看出主机的docker目录下的文件被映射到容器中的test目录下,你可以尝试编辑主机上的test.c文件,然后观察容器中的test.c完全同步更新。所以我们甚至可以想象如果只映射test可执行文件就相当于只在容器中运维,这样的话就可以实现开发和运维的隔离。再往大的讲,我可以映射上述那样的目录后,开启多个容器共享该目录,从而实现多个用户同时编辑,运维。如下所示:1
2
3docker run -d -v $(pwd):/test --name test training/postgres echo hello!
docker run -d --volumes-from test --name test1 training/postgres
docker run -d --volumes-from test --name test2 training/postgres
在主机中编辑test.c文件并且编译以后,test1,test2容器都会同步更新并且直接可以运行,也就是说如果我只暴露test可执行文件给test1,test2,那么就可以实现开发与测试运维的隔离。
mysql容器与wordpress容器的连接
拉取mysql和wordpress镜像(使用daocloud加速器来拉取):1
2dao pull mysql
dao pull wordpress
运行mysql容器:
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
连接mysql容器,运行wordpress容器:
docker run -d --name wordpress --link mysql:mysql -p 8888:80 wordpress
这样以后在浏览器中输入0.0.0.0:8888就可以使用wordpress,剩下的你就可以自己玩博客了。当然还有很多好玩的东西没有列举出来,欢迎大家继续分享!