我是Docker的新手,并且想知道在docker容器中开发是否可行(并且是一个好主意)。 我的意思是创建一个容器,执行bash,安装和配置我需要的所有东西,然后开始在容器内部开发。
然后容器成为我的主机(用于CLI相关工作)。 当我在旅途中(或者当我购买新机器)时,我可以推开容器,然后将其拉到我的笔记本电脑上。
这就是必须保持和同步你的点文件的问题。
我还没有开始使用docker,所以它是现实的还是要避免的(spacke disk problem和/或pull / push timing问题)。
答案 0 :(得分:3)
是。这是一个好主意,正确的设置。您将像运行虚拟机一样运行代码。
用于创建构建系统的Dockerfile配置没有完善,也不会扩展shell变量,因此预安装应用程序可能有点单调乏味。另一方面,在构建自己的映像以创建新用户和工作环境之后,再次构建它不再是必要的,而且您可以使用run命令的-v参数装载自己的文件系统,这样您就可以了可以在主机和容器计算机中拥有您需要的文件。它是多才多艺的。
> sudo docker run -t -i -v
/home/user_name/Workspace/project:/home/user_name/Workspace/myproject <container-ID>
答案 1 :(得分:1)
我会扮演逆势者并说这是个坏主意。我已经完成了工作,我试图保持容器“长时间运行”并修改它,但随后意外丢失或删除它。
在我看来,容器并不意味着长时间运行的虚拟机。它们只是作为图像的实例。启动它,停止它,杀死它,再次启动它。
正如亚历克斯所说,这肯定是可能的,但在我看来,它违背了“Docker”的方式。
我宁愿使用VirtualBox和Vagrant来创建要开发的虚拟机。
答案 2 :(得分:1)
用于开发的Docker容器非常方便。根据您的堆栈和首选IDE,您可能希望将编辑部分保留在主机外部,并根据Alex的建议将主机上的源安装到容器中。如果您这样做,请注意使用boot2docker在macos x上的潜在性能问题。
我不希望工作流程推动图像在开发环境之间同步。恕我直言,将Dockerfiles与代码保持在一起,并通过SCM方式进行同步,这是更直接的方向。我还携带支持Makefile来构建图像/运行容器相同的地方。