最近公司在推行使用docker,要求开发人员开发环境使用docker进行开发,于是看了下docker的东西,感觉好麻烦啊,这玩意就是将运行环境搞成镜像,放到docker里面,然后宿主机不需要环境了,代码放到docker里面运行。但是我开发的时候,随时都可能添加依赖扩展啊,要重新打镜像? 好麻烦的样子
最近公司在推行使用docker,要求开发人员开发环境使用docker进行开发,于是看了下docker的东西,感觉好麻烦啊,这玩意就是将运行环境搞成镜像,放到docker里面,然后宿主机不需要环境了,代码放到docker里面运行。但是我开发的时候,随时都可能添加依赖扩展啊,要重新打镜像? 好麻烦的样子
当然有很多,甚至可以说不用 docker 的才是大部分。
毕竟不是只有互联网大厂才有软件开发,很多人看不起的传统软件外包其实才是占据 IT 行业的大部分人群。
对于你的顾虑,我只能说,压根没有 CI/CD 流程或 DevOps 体系建设不好的团队,用 docker 确实往往麻烦 > 收益。但路当然都是一步一步走出来的,哪能一口吃个胖子呢?
P.S. 我公司反正是全部产品线都有在用。
补充:对于另一个回答的一些见解
原来搞 python 、java 、ruby 的时候,都在本机搭开发环境,后来有了 docker,直接把开发环境建到 docker 中,然后把源码映射到容器中去,这样各个开发环境都是隔离的,而且也提高了部署效率。 看看我这个项目(https://gitlab.com/Kangjier/d...)
有条件,一定要上虚拟化平台进行开发。好处如下:
1.如果只在一台物理机里开发,各种东西,比如 java 、C++、python 都要安装,而且有些软件比如 java 还要安装几个版本。混乱的环境,给开发会带来很多问题,处理起来,又好气又好笑,简直浪费时间。
虚拟化环境就没这个问题,先建立一个干净的模板,然后直接复制粘贴一堆出来,每个克隆后的环境,只安装一个系统。这样干净的系统,基本上不会出问题。
2.如果只在一台物理机里开发,你还要安装 QQ 与微信等一堆软件。这些东西就是祸源。如果长期不关机,这些软件经常搞坏 explorer.exe ,会出各种奇怪问题,比如桌面上,鼠标右键菜单没办法弹出来,有时候远程桌面又无法复制粘贴,等等。
出现了这种问题,系统得重启,但我已经打开了一大堆浏览器,里面很多资料还没看完;以及当前一堆软件开着一堆源码,在重启后,还要按顺序打开,特别浪费时间。
自从我把微信与 QQ,专门放到一台 IM 的虚拟化环境中去之后,再也没出过这种问题。微信与 QQ 想捣乱,直接重启那个虚拟化环境就行了,不影响开发。我甚至把开发、网页浏览、IM 、数据库软件等等,每一种工作,专门部署在一个虚拟化环境里,互相不影响。甚至连 Java 开发,也是部署了 3 个环境,一个给 8,一个 11,一个最新版。
15 回答8.4k 阅读
4 回答4.4k 阅读✓ 已解决
4 回答4k 阅读
3 回答2.1k 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
使用 docker 来构建开发环境,想法是美好的,只需要写写 docker-compose.yml 和 Dockerfile ,就能构建起一个开发环境,并且还能让每个开发人员的环境都是一样的,还可以达到同步环境的效果,减少了像 “在我这儿好好的呀,怎么到你那儿就不行了” 这样的麻烦。
但是,有个问题就是,大多数人都是用的 Windows 作为开发机,而 docker 的最佳运行环境是 Linux,因为这玩意儿在 MAC OS 还存在 IO 问题,体验也不是很好。
docker 在 Windows 上运行又有几个问题,在旧的 Windows 上,比如 7,要想使用 docker ,下载 docker toolbox ,他实际上是使用 virtual box 创建了一个虚拟机来提供给你访问。
你就需要创建目录共享来写代码,这样就会造成很严重的 IO 问题,导致你的项目访问奇慢无比。
在 Windows 10 上面,你倒是可以使用 WSL 来使用 docker,然而 WSL 仍然没有逃过 IO 问题,不过 WSL 提供了一种方法,在 WSL 里面安装/运行 docker,这样比虚拟机稍微好一些(不需要 Docker-Desktop)、并且不能使用 /mnt/ ,你需要把你的项目全部放到 WSL 下面去,不过好在现在 IDE 都提供了 WSL 的支持,虽然看起来很蹩脚,现在你差不多可以愉快的使用 docker,但是 WSL 的实际体验也并不那么好……
要想极致的体验,你最好是使用 Linux 操作系统,不过就我遇到的而言,如 Ubuntu 桌面的软件使用体验并不太好,尤其是使用 php storm 的时候。
使用 docker 的好处是很多,但是把 docker 作为开发环境,并且找到一个舒适的开发方式,很麻烦。