草 稿

一个 Web 开发者眼中的 Docker

听上去就是个轻量的虚拟机,实际理解起来还是会费点儿工夫。

  1. 去哪里了解Docker?

    Docker 的官方文档写得相当不错。还有清晰易懂、能严重帮助理解的交互式练习。

  2. 什么人适合用Docker?

    对运维来说肯定是救星。对小型应用开发者……还不大拿得准。求建议。

  3. 安装麻烦不?

    相当的不麻烦。

    Docker 已经入驻各个平台的包管理器。比如 CentOS 执行`yum install docker`即可安装。

    安装 Docker 镜像/容器,和 Composer 、 Bower 这些包管理工具没什么差异。更新和保存镜像的方式,也和 Git 很像。

  4. 如何分装“集装箱(container)”?

    按照 Docker 的官方哲学,是一个 docker 容器负责一个功能,比如搭建一个 LAMP 服务,需要分别制作 Apache 、 MySQL 和 PHP 的镜像。

    但实际上,Docker 对大家的真正吸引力却在于“到处部署一模一样的环境”。这样操作会略有些繁琐。

    容器之间的对话,会不会带来大量的配置工作?最佳实践是什么呢?求解答……

    p.s. 以下链接是 Docker 官方哲学的一种实现。

  5. Docker里的服务,如何与外界对话?

    容器里的服务会使用一个Private Port,你可以设置从Private Port到Public Port的映射。

  6. Docker是应该只负责跑服务,还是该包含代码/数据?

    尚未搞明白。求解答……

  7. ======我是华丽的分割线,下面是第二阶段研究成果======

  8. 基本概念:

    ·Docfile 及当前目录作为源代码

    ·build 得到镜像(在 docker 平台)

    ·run 得到容器

    ·容器互相 link,对外可暴露端口,提供服务。

  9. 标准配置文件的拷贝:

    1. 直接在 Docfile 目录下建立 conf 文件夹

    2. Docfile 里用 Add 把它们添加到应该在的位置(docker 有“层叠式文件系统”,很神奇)

    这样 build 出来的镜像就有你的配置文件了。

  10. 经常修改的配置文件怎么办?

    妹的……只能放在宿主了,但这又没实现“到处运行”。所以很纠结。

  11. 跑一个应用,但代码文件在宿主机里(修改也在宿主环境下修改):

    run ..... -v $PWD/宿主代码目录:/var/www/html/website:rw

    这样就把代码目录挂载到镜像的 VOLUME 目录下了

    **但容器(卷)里的修改不会写回到宿主中!!**

  12. 容器之间的链接可以这样:

    run 一个 redis 镜像,产生一个 redis 容器

    run laravel ...... --link redis:db ,让 laravel 可以用 db 这个域名(host)访问redis!

  13. 容器不是持久化的,那数据库怎么办?

    妹的……好像还是放在宿主比较好?

    **运行时的卷在最后一个容器被删除时会自动删除**,坑!可以在删除容器时打包备份,但这叫啥办法…

  14. 日志文件怎么办?

    妹的……又是个头疼问题。写在镜像中,不能持久相当于没日志。写在宿主里,不算“到处运行”。

    真正靠谱的办法貌似只能是跑个 log 服务了,参考:http://dockerone.com/question/54

评论(2

期待楼主的第三阶段!
解答了一些疑惑,但是带来了更多疑惑,期待更多的分享