跬步 On Coding

Docker初探

听闻Docker很久了,一直也没有动手玩一下,只知道是Linux的新的虚拟技术容器,比以往的虚拟机轻量很多,能最大化利用硬件资源.

最近RSS Factory因为使用量太大,又一次被搜狗反爬虫机制封杀,不少人来问我如果要自己搭建RSS服务怎么操作,也有自己动手的小伙伴遇到各种问题来问我,鉴于现在市面上有一些免费Docker CaaS提供商,所以考虑自己搭建一个RSS Factory的Docker image来分享给小伙伴来使用.顺便探索一下Docker的使用方法.

概念

  1. Docker repository: 可以理解为Docker的GIT库,Docker的官方的repository就叫Docker hub,可用想见Github之于GIT,上面世界各地的开发者分享的Docker镜像或者Dockerfile;

  2. Docker image: Docker镜像,Docker容器实例是通过Docker镜像来构建的,Docker镜像可用看做是一个没有跑起来的Docker环境,存储了Docker环境的所有变更与配置;

3. Dcoker容器: 由Docker镜像创建的容器实例才是最终我们所运行的虚拟环境,我们的应用是跑在这个环境中的.

  1. Dockerfile: 已经设置好的镜像就可用上传到repository上分享了,但是由于镜像可能很大,不方便分享,所以有了Dockerfile,Dockerfile中记录了对已有镜像的更改,文本格式很小,通过Docker build就可用把Dockerfile编译为自己的镜像.

过程

  1. RSS Factory是跑在linux上的所以首先打造ubuntu基础环境

  2. 安装open-ssh, nginx, memcached, supervisor, python相关依赖

  3. 配置配置文件,提交docker commit,生成新的镜像ok啦

  4. 把镜像push到repository上,分享给小伙伴一键构建

其实过程跟在真实的ubuntu环境中搭建服务没什么不同,但是有些可能需要注意的地方.

  1. Docker推荐一个容器跑一个进程,所以有分布式的容器服务布局,mysql一个容器,nginx一个容器,memcached一个容器,但是我的RSS服务只用了一个容器,把所有的进程都跑在了一个容器中

  2. Docker中的进程不能以守护进程的形式运行

  3. Docker启动多个进程只能用shell &&或者进程管理攻击supervisor这种来启动,同2supervisor也不能运行在Daemon

分享

https://hub.alauda.cn/repos/zhu327/rss

这是我构建的Docker镜像,有兴趣的小伙伴可用注册灵雀云后,一键构建自己的RSS服务.