Docker生存要点

之所以叫这个名字,因为Docker确实是个能把人搞死的东西。

使用最新版的Docker

通过包管理器安装的Docker通常不是最新版——起码ubuntu就不是。而Docker一个丧心病狂的地方就在于其文档没有划分版本,在网上看到的经验,在老版本中未必适用。1.0.1所支持的命令明显比1.4.1少了一大截。因此使用Docker的第一件事就是安装最新版本,哪怕新版本是在PPA中。

一次性操作系统Docker

理解的Docker的第一个难点,就是理解Docker是如何保存状态的,为什么export出去的变量在下一条命令中无法使用?最简单的方法就是认为Docker每次启动只执行一条命令,每条命令之间Docker都经历了一次重启。export的命令在重启之后当然就没有了,新建的文件当然都还在。另外我们的主进程必须保持阻塞,否则Docker执行完命令立刻就会退出。也是“一次性”的表现——即使是主进程,干完活儿照样退出。

未登录的运行环境

Docker的运行时使用未登录的Root账户——即使linux老手可能也会不习惯。未登录会带来一些问题,比如说.bashrc就没有了,比如说不能直接执行一个sh文件。同时一个成熟的Docker image在执行任务时使用的应该是新建的有权限的账户——毕竟Root还是太奔放了。

使用 exec -it <container> /bin/bash登录正在运行的Container

很多时候我们希望登录到正在运行的Docker中去进行一些查看或者修改的工作。我们可以使用attach,但这种方法对CMD有要求,又或者我们可以在image中装入ssh servser。但管理多个container的端口很快会成为另一项噩梦,最好的方法还是 docker exec -it <container> /bin/bash ——谁用谁知道。

较早版本的Docker没有exec命令,所以就像开头说的——装最新的版本。

只读操作系统

既然说道登入container,就必须提到登录后的所有操作的修改都是不被保存的(除非使用EXPOSE命令作了映射)。再小的改动要想持久化都必须重新build,是的,这就是Docker之道。

时间: 2024-08-02 11:03:55

Docker生存要点的相关文章

Docker学习要点记录

Docker的架构和底层技术: 1.docker提供了一个开发,打包,运行app的平台2.把APP和底层infrastructure隔离开来 docker底层技术支持: 1>Namespaces:做隔离pid,net,ipc,mnt,uts 2>control groups:做资源限制 3>Union file systems:Continer 和  image的分层 docker image 原文地址:https://www.cnblogs.com/byfboke/p/10710877

Docker初体验

Docker这玩意流行已经有一阵子,之前一直不愿意去碰它,是觉得它还不够稳定.虽说各类软文铺天盖地,什么Paas微服务,容器引擎,轻量级虚拟机(当然底层的cgroups,lxc技术早已耳熟能详)等等,对这些往往不置可否,原因只有一个:大规模工业级场景应用还未曾出现,或者说未曾亲历. 时间来到了最近,由于工作需求,需要做一些MQ镜像,所以系统化的学习了Docker(当然,催生我系统化学习的动力不仅是要深度使用它,还有Go语言这两年本身的实践魅力).这篇文章简单记录了Docker的一些使用心得及其感

docker实验--redis集群搭建

背景介绍: 我经常在做一些小项目的时候,采用了Redis来做缓存,但是都是基于单节点的,一旦redis挂了,整个项目就挂了.于是乎,想到了多节点集群的方式来使用,就开始折腾着怎么去搭建这个集群.在网上参考了一些大佬的做法以后,发现使用的ruby脚本已经过时了,所以就基于他们的方法做了一定的更新,如果有误,欢迎批评指正. 环境准备: centOS7,Docker,redis-cli 要点: a.Redis集群至少需要3个节点(笔者认为最好是部署奇数个节点),因为投票容错机制要求超过一半的节点认为某

Docker swarm搭建(1)

Docker swarm docker swarm集群:三剑客之一 一. Docker Swarm 的基本概念和原理 Docker Swarm 简介 Swarm是Docker公司推出的用来管理docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机.Swarm使用标准的Docker API接口作为其前端访问入口,换言之,各种形式的Docker Client(docker client in Go, docker_py, docker等)均可以直接与Swarm通信.Swarm几乎全部

Docker如何为企业产生价值?

一个 IT 系统大致可以分为: 应用程序 运行时平台(bin/framework/lib) 操作系统 硬件(基础设施) 开发人员的主要工作是应用程序的编码.构建.测试和发布,涉及应用程序和运行时平台这两层.而运维人员的工作则涉及从硬件.操作系统到运行时平台的安装.配置.运行监控.升级和优化等工作. 云计算最主要的价值体现在实现了自动化运维.提高资源的利用效率,是较为次要的价值. 要实现自动化运维,需要解除 IT 系统各层之间的耦合,使各层变成可编程控制,即「software defined」的.

一步一步搭建ZooKeeper + Mesos + Marathon平台管理Docker集群

最近在Youtube看Docker视频的过程中不幸看到了Mesos的介绍,然后就有一种一见如故的感觉,最终根据mesosphere官网的文档在IBM的Bluemix虚拟机上搭建了基于ZooKeeper + Mesos + Marathon的平台. 搭建之前先简单了解下各个组件是做什么的.(来自wikipedia及其他网络) ZooKeeper:Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.

应该在Ubuntu OS上生存下来(2/3)

为了在Ubuntu上生存下来 (能够看内核和源码之类的,注意不是搞服务器运维之类的) 还必须了解常用的文件或者目录操作命令,不废话了,直接上内容 按一次TAB 补全命令 按两次TAB 列出可选项 无意中读取了二进制未见 Ctrl+C  或者输入 reset 获取帮助 man 命令名称 例如 man ls 用linux的话,尽量避免用图形系统,实在需要的时候,比如说要用到IDE看android源码了,再去启动图形界面 linux 系统文件目录基础 记住要点: 1. linux没有folder(文件

Docker中的Redis容器如何连接上进行操作?

Docker中的Redis容器如何连接上进行操作? 1.登录putty有如下信息: 公用虚拟 IP (VIP)地址42.159.156.115内部 IP 地址10.205.178.22IP address for eth0:    10.205.178.22IP address for docker0: 172.17.42.1 2. 下载 http://download.redis.io/redis-stable/redis.conf修改如下字段 # requirepass foobared去掉

程序员生存定律--程序人生的出口

程序员的人生出口 很多人非常想知道自己的未来是什么样子的,迫切到一定程度甚至会找算命先生.如果并不是想得到一个精确结果,这事儿其实并没有想的那么难.程序员的人生看起来五花八门,可以是Windows系,可以是Android系,可以是iPhone系等等,但如果为之做点抽象,那就会发现人生出口的类别其实不多,接下来我们就结合例子来看看程序员的人生中最可能的几个出口.这些出口里有大部分人的未来景象. 1 成就超一流高手 袁峰先生是<Windows图形编程>一书的作者,也是一位纯粹的程序员.从袁峰先生公