docker 对普通个人开发者的作用,求指点

2019-05-17 10:15:38 +08:00
 ynohoahc

最近在学习 docker 但是越学越不清楚自己为什么要学 docker

其中最大的疑惑是 服务器上用 docker 去部署项目真能节省很多资源吗? 比如说 用 docker 在机器上部署了几十个 api 服务 去对比 用传统的 tomcat 在本地部署几十个 api 服务

因为每开一个容器都相当于多开了一个基础 linux 镜像, 然后再在这个基础镜像里跑 tomcat 服务

基础镜像无论有多轻量 好歹也是一部分开销呢

所以从直观感觉上还是觉得后者会省资源一点 但外界宣传就是说容器会更轻量 呃~~

还有一个不小的疑惑就是, 对于普通个人开发者来说(我只想平日里没事接接外单, 挣点零花钱), 那么 docker 带来的好处是不是只有一个就是能统一开发环境呢?

有实操的前辈们能讲讲吗?

14368 次点击
所在节点    程序员
95 条回复
momocraft
2019-05-17 10:19:49 +08:00
比 VM 轻量,比一个 JVM 进程跑所有 servlet 显然是重的
qinyusen
2019-05-17 10:24:16 +08:00
你用过一键脚本么?一键部署环境,最简单的,比如,你装 LAMP,1 个半小时够么?

docker 的意义是,docker pull 一下就无障碍部署完毕了。

另外,你有没有遇见过环境里即需要 python2 又需要 python 3 的?也就是运行环境依赖有冲突的时候。

个人接单,你是喜欢跑人家服务器上叮咣手动装 2 天环境,还是直接 docker pull 一下,然后跑一个 docker run 的脚本,分分钟部署上比较好呢?也不用管宿主机到底是 centos 还是 debian。

docker 之于我,就是再也不用维护多个 os 的一键脚本了,维护一个 dockerfile 就 OK 了。

env independent, 你要先明白这个关键字的意义。
Vegetable
2019-05-17 10:24:23 +08:00
就说你外包吧
从前是登录客户提供的机器自己配置环境,装依赖,跑项目,写 crontab,可能还有别的.
这还是好的,起码让你连服务器.
不让你连的话,你就得教别人用,当然不排除沟通很顺畅的情况,但是大部分是....你懂得

如果用 docker 的话,在已经部署了 docker 的机器上会方便很多,可能能做到 git clone&docker-compose up 直接跑起来,哪怕对方是 Windows 系统.

我觉得这就算是对个人开发者比较大的意义了.
CallMeReznov
2019-05-17 10:24:47 +08:00
你喜欢把鸡蛋都往一个篮子里装的话,就不要怕这一篮子的鸡蛋都被砸烂.
ynohoahc
2019-05-17 10:25:03 +08:00
@momocraft 前辈其实我一直不明白为什么要拿容器和 vm 比呢 因为我理解的是容器就是在 vm 里跑的呀 如果是这样 那么现在的情况是 vm 跑容器 然后容器里面跑 tomcat 服务 传统的方式的 vm 里面直接跑 tomcat 服务
zjsxwc
2019-05-17 10:26:44 +08:00
首先没有 docker 之前我们用 chroot,先了解下什么是 chroot
ynohoahc
2019-05-17 10:29:18 +08:00
@qinyusen 谢谢指点 统一环境是 docker 的好处这我是知道 不过我可能还是低估了这一个好处
lhx2008
2019-05-17 10:29:55 +08:00
我觉得*个人、开发*是没啥用的,虽然可以拉镜像,但是配镜像的时间非常长,代码重新部署也要高度依赖脚本,给调试也带来很多困难。我觉得 Docker 最大的优势还是横向扩展吧。生产环境肯定还是有用的。
ynohoahc
2019-05-17 10:33:50 +08:00
@Vegetable 其实我从来没有私活啦 所以对于 docker 的这个好处还不能切身体会到 现在我是开发环境用 brew 去安装环境 然后云主机上用传统的方式去安装环境 环境装好之后就没怎么变过了 都是在写一些业务代码
ynohoahc
2019-05-17 10:35:37 +08:00
@lhx2008 对开发来说还是能统一环境的 但是对于不是经常搞环境的开发来说真的体会不到 目前来说我就是
/(ㄒoㄒ)/~~
GiantHard
2019-05-17 10:36:15 +08:00
使用 VM 或者容器的一个目的在于隔离各个网站的运行环境,而容器在达成这一目的上所需要付出的系统资源是要小于 VM 的,所以说 docker 比较节省资源。
noahzh
2019-05-17 10:36:20 +08:00
都是太片面理解了,举个简单例子,你能在同一台机器很容易同时部署各个版本的 jdk 嘛?就这一条就够用了.
ynohoahc
2019-05-17 10:36:32 +08:00
@zjsxwc 呃... 我还真不知道什么是 chroot 现在就去查一下
kevinhwang
2019-05-17 10:37:17 +08:00
只有我一个用 docker 跑 ss 和 frp 这些 daemon 吗?
原因是好管理,多机可以方便配置。与宿主更多的隔离,重装系统压力小很多,尽量将 daemon docker 化,放到 gitbhub 管理,带有密钥的 ignore 就好。
opengps
2019-05-17 10:37:22 +08:00
打包环境以前的做法是:拷贝整个虚拟机!
ynohoahc
2019-05-17 10:37:53 +08:00
@noahzh 言简意赅 精辟~👍
ynohoahc
2019-05-17 10:39:29 +08:00
@opengps 哈哈哈 程序员史上还有这么一个简单粗暴的黑历史吗
GiantHard
2019-05-17 10:39:48 +08:00
@ynohoahc 如果你有 docker 的话,就不用在云主机上去安装环境了,你在开发时候顺手打包一个 docker 镜像,在云主机上只要无脑 docker pull 就好了
fengbjhqs
2019-05-17 10:40:29 +08:00
win 电脑,表示没有听过 docker
ynohoahc
2019-05-17 10:41:08 +08:00
@kevinhwang 嗯 好专业~~老哥是运维吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/564937

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX