Docker:容器vs本地安装

在周末第一次玩Docker之后,看到irssi,mutt,browsers等所有东西的小图片,我想知道是否本地安装的软件包正在为数十个容器取代?

我可以看到保持基本系统非常干净的好处,并使所有这些容器都是独立的,可以很容易地重新安装到不同的桌面,甚至是Windows。 每个运行一个像阿尔派这样的小发行版,与应用程序,例如irssi等….

这是事情的方式,还是我错过了这里的船?

杰斯·弗拉泽尔(Jess Frazelle)不会不同意你的看法 。
在她的博客文章“桌面上的Docker Containers”中 ,她将所有东西都集中起来 。 一切

像Chrome本身一样:

$ docker run -it \ --net host \ # may as well YOLO --cpuset-cpus 0 \ # control the cpu --memory 512mb \ # max memory it can use -v /tmp/.X11-unix:/tmp/.X11-unix \ # mount the X11 socket -e DISPLAY=unix$DISPLAY \ # pass the display -v $HOME/Downloads:/root/Downloads \ # optional, but nice -v $HOME/.config/google-chrome/:/data \ # if you want to save state --device /dev/snd \ # so we have sound --name chrome \ jess/chrome 

但是Docker容器并不局限于这种用法,主要是为每个容器提供一个服务,可以从开发工作站一直使用到生产服务器,来表示一个稳定的,定义良好且可重复的执行环境。

你的观点是正确的。 我一直是一个长期的stream浪者用户,创build便携式自充气系统所带来的简单性让我成为了一个stream浪的开发者 – 我只需要将我的私钥安全地转移到任何交给我的机器上,几分钟之后,我又回到了离开工作的地方。 你不能同时穿两双鞋,所以如果你有一台机器,并且很快需要采用一个新的辅助,这有助于(我为我的亲人购买了很棒的硬件,并在发生灾难的时候篡夺)。

除了浏览器客户端和文本编辑器之外,我的理想总是在我的主机上根本没有任何工具,以免遭受任何虚拟化开销。 不幸的是,对于Vagrant来说,这需要我对某些主机function做出妥协,比如能够与编译器,testing运行器,棉绒等进行集成。

有了Docker,这不是问题。 就像VonC所显示的那样,你可以想象,你可以把他的代码片段包装在一个脚本中,你可以传递命令,让它像Chrome二进制文件一样,在本地安装。

例如,我可以编写一个脚本来获取工作目录,将其安装到Node.js容器中,并在源eslint上运行eslint 。 我的编辑会高兴地通过选项来eslint和从STDOUT读取,完全没有意识到我的主机根本不存在。

 # eslint, as seen by the editor docker -v $(pwd):$(pwd) $OTHER_DOCKER_ARGS run $ESLINT_IMAGE $@ 

过去pipe理程序可能已经有了这种可能,有些深奥的SSH咒语,谁知道呢? 我从来没有想过这个想法,但是对于Docker来说,那些以前从未以这种方式工作过的人发现这种做法并不令人吃惊(作为一件好事)。