码迷,mamicode.com
首页 > 其他好文 > 详细

【docker】docker初试与填坑

时间:2015-11-21 21:14:01      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

docker是最近很流行的部署方式,最近尝试之前的项目都转移到docker上运行,下面是碰到的一些坑和解决方案。
  • 网络问题 因为国内的原因,docker pull 镜像的时候经常碰到连不上或者速度极慢的情况。 这部分可以使用 国内流行的 ?daocloud 的方案解决?,使用dao pull代替docker pull ,如果是自行构建,可能需要使用代理或者直接在国外主机build,再打包传回来。
  • 时间同步 hub.docker.com上的镜像,包括自己构建的,基本上都是以utc时区作为默认时区,这样于host主机时间往往差8个小时。 最好的解决方案是 ?挂载volumn ? /etc/localtime 到 ?docker环境中,如果是docker命令,docker -v /etc/localtime:/etc/locaitime:ro ... 如果是docker-compose.yml ? 添加volumes
    volumns:
       - /etc/localtime:/etc/localtime:ro
  • entrypoint 与 run 构建docker镜像时,最后一句往往要写上docker的"入口",使用entrypoint or run? 这两个最基本的区别就是?entrypoint 包含了命令本身,是应用化的docker镜像,如果 指定 ? ?docker-a 的entrypoint位 ls 则 docker run ?entrypoint ?-l ?的结果就是ls -l 的结果,而如果指定 ?run 为ls,则 ?docker run ?entrypoint ?ls -l ? 则为ls -l的结果 所以单次执行不需要后台运行的项目,基本上建议指定为?entrypoint,否则建议run。 可以在 docker/docker-compose run ?后面使用 --entrypoint覆盖dockerfile里的设置,不过如果想执行bash可能要使用 bash -c 代替。
  • 空间占用 如果pull了大量的image,可能会导致docker镜像占用了大量的磁盘空间,所以很多人往往希望找小而美的images,但是这往往没有必要: docker会复用相同的层(layer) ,所以pull或者build镜像的时候,最好找基于同一个base的镜像,特别是构建的时候,能复用的尽量复用。
  • docker 卡死 初期试用docker时,如果没有预估好资源使用量,可能会导致docker卡死,可能会导致系统其他服务响应都会变慢。 建议在多核机器上(>4),对docker使用CPU限制,建议使用cpuset 限制n-1个核心为docker使用,剩下一个响应其他操作,或者使用cpu-shares限制使用量(不超过90%)
  • 端口与IP docker默认使用nat作为网络使用方式,使用expose和publish bind暴露内部服务端口。 如果无需对外提供服务,尽量减少主机端口绑定,使用docker-compose时,对内服务无需是用ports指定端口,除非需要在另外一台机器上使用。 如果需要绑定静态ip或直接使用外网ip,可以使用iptables,或者?ip netns等方法,这里我也没做太多实践,下次补充。
  • 未完待补充..


文章来源:http://blog.xujif.com/archives/dockers.html

【docker】docker初试与填坑

标签:

原文地址:http://www.cnblogs.com/xujif/p/4984691.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!