设为首页 收藏本站
查看: 1155|回复: 0

[经验分享] 关于Docker

[复制链接]

尚未签到

发表于 2015-4-18 06:26:58 | 显示全部楼层 |阅读模式
  Docker 常用命令
  
  分类列一下常用的CLI命令

  • 仓库相关
  search/ pull / push / login etc.
  例:docker pull ubuntu 从仓库下载ubuntuimage
  

  • Images 操作相关
  images/ rmi / build / export  / import / save /load etc.
  例:docker images -t 以树形结构列出当前本地Image
  

  • 运行相关
  run / start / stop / restart / attach /kill etc.
  docker run -i -t ubuntu /bin/bash  启动ubuntu image,并交互式的运行shell
  

  • 杂项
  Docker diff  / commit
  Dockerinfo / ps / inspect / port / logs / top / history etc.
  
  具体docker命令的使用参见 http://docs.docker.io/en/latest/reference/commandline/

  常见问题

  • 使用Non root 用户
  目前版本的docker由于使用Socket进行通讯,因此需要root用户权限 sudo xxx,或者将需要使用Dockerclient的用户加入docker用户组
  sudogpasswd -a ${USER} docker
  

  • 网络相关问题
  当你在网关背后需要通过代理连接docker的index数据库时,可以手动加上http_proxy环境变量来启动dockerdaemon
  
  HTTP_PROXY=http://proxy_server:port docker -d &
  
  更好的做法是修改/etc/default/docker ( on ubuntu ), 添加 exporthttp_proxy=proxy_server:port

  同样,docker container 如果无法自动正确的从host环境中获得DNS的配置,则需要手动指定DNS服务器地址,这可以通过 docker -run --dns=xxx来实现,也可以修改/etc/default/docker 添加例如 DOCKER_OPTS="-dns 8.8.8.8"
  

  • 特权模式
  在正常情况下 在container内部你没有权限操作device设备,而当前版本中,container内部部分文件例如/etc/hosts;/etc/hostname; /etc/resolve.conf等文件是动态通过mount动态以只读的形式加载上来的,理论上说你应该找到合适的方法去保证这些自动生成并加载的文件的正确性 (例如 通过--dns 设置 resolve.conf ),但是如果由于特殊原因你需要手动修改,那么你可以通过特权模式启动 docker client : docker run --privileged ,然后你可以卸载这些文件,自己再创建新的版本
  

  • 过多的层级依赖关系

  以Layer的方式实现APP和相关library的cheap reuse和fast update是Docker的关键所在,不过受目前AUFS文件系统的限制,默认Layer的层级最多只能达到127(曾经只有42),在实际使用中有多种情况可能导致你的container的层级关系快速增长到这个极限值,撇开这么多layer叠加以后AUFS的效率不谈,更多情况下是你无法再更新构建你的image了
  

  • 使用Dockerfile构建Image时,每条指令都会给最终的Image增加一层layer依赖关系.
  • 以修改,提交,再修改再提交的方式不停的调整,更新你的Image
  • 从仓库中下载的别人的Image已经包含众多的层级依赖关系,而你需要进一步更新以创建你自己的版本
  
  前两者在一定程度上还是你自己可能把控的,最后一种情况就没办法了。这个问题最终必将影响Docker的实际可用性,目前的解决方案包括:
  

  • 使用Dockerfile时,尽可能合并多个操作:例如使用 "&&" 或 ";" 合并运行多个shell命令;将多个shell命令写成脚本,在dockerfile中添加并运行这个脚本
  • 通过Export再Import Image,丢弃所有历史信息和依赖关系,创建一个全新的image

  将来可能的解决方案包括:
  

  • 在Dockerfile中添加对多步操作的合并提交的支持
  • 外部的image Flat工具的支持,目标是能够保留历史信息等
  • 非AUFS的其它Storage解决方案


  
Future development

  虽然Docker目前默认使用LXC和AUFS,但是Docker的核心思想本身,并不强制绑定这两者,0.8版本已经可以使用BTRFS,而整个Docker框架也改成了插件式的架构,便于添加替换各个功能模块
  
  
DSC0000.jpg

  例如更多的Storage方案的支持,规避AUFS当前的问题,除了LXC以外更多的虚拟化方案等
  
  安装运行和使用
  
  Docker虽然是号称build once, runeverywhere。但是实际上还是受其引擎依赖关系的限制的,目前的版本具体来说对系统要求:
  

  • Linux Kernel 3.8+
  • LXC support
  • 64bit OS
  • AUFS
  
  以上要求,以ubuntu为例,需要12.04 配合 3.8kernel升级, 或者 ubuntu 13.04+

  在ubuntu12.04上,基本安装步骤如下

  sudoapt-get update sudo apt-get install linux-image-generic-lts-raringlinux-headers-generic-lts-raring
  sudoapt-key adv --keyserver keyserver.ubuntu.com --recv-keys36A1D7869245C8950F966E92D8576A8BA88D21E9
  sudosh -c "echo deb http://get.docker.io/ubuntudocker main\ > /etc/apt/sources.list.d/docker.list"
  sudoapt-get update
  sudoapt-get install lxc-docker
  
  如果你在安装之前想要先体验一下docker的基本操作命令等的话, 可以尝试一下这个在线的live教程
  https://www.docker.io/gettingstarted/#h_tutorial
  关于Docker的更多介绍,本文参考:http://blog.iyunv.com/colorant/article/details/20608157

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-58199-1-1.html 上篇帖子: docker的基本使用 下篇帖子: docker操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表