佬们,咨询下docker的问题。

看官方描述,推荐一个容器只跑一个服务,
那用docker跟直接在服务器上跑这个服务有啥区别啊?
我一开始理解用容器就是方便迁移,比如一个容器把mysql,后台服务,图片压缩服务都装好了,然后直接迁移到其他服务上运行就可以。

4 个赞

主要的差别是隔离性和一致性。每个容器运行一个独立的服务,彼此之间相互隔离。这种隔离性确保服务之间不会相互干扰,可以防止依赖冲突并保证环境的一致性。此外,Docker 容器与主机系统隔离,减少了依赖于特定操作系统版本或配置的问题。

1 个赞

相互隔离方便管理

是的,方便迁移是一个优势。还能做到跟其他服务隔离,避免删库跑路佬(

这种问题 gpt 答的还可以,其实 docker 官网也有描述的

我们之前引入主要解决开发,测试,正式,预发布环境一致性的问题

我个人感觉方便不同的服务之间进行隔离,其次是安装方便,我记得还没有使用docker之前,在centos上安装一个rabbitmq,我要先安装erlang环境,然后才能安装mq,用docker直接一行命令安装了

这种的前提是 有人docker仓库发布这个服务的docker镜像吗

方便连依赖一起打包备份,也方便在其他环境部署

你也可以自己装好了自己打包镜像啊

是的,不过那些常用的软件一般官方自己也制作了对应的镜像

推荐一个容器一个服务而已,要是有需要,你可以all in one,我现在就是把代码,php环境,nginx全部打包一个镜像,部署的时候啥也不用配置。你也可以理解成,小型虚拟机

就是不用装一大堆奇奇怪怪的软件包和依赖,不同的机子条件不一样,有的就是死活装不上依赖,而且容器内跑的程序不会因为ssh断开而停止,在容器外你还得搞个screen。

1 个赞

迁移或者扩展容易

是的,你也可以在本地构建,使用dockerfile

1、使用docker主要是为了做资源隔离
2、方便做服务编排

不一定完全一致,其实会受内核版本影响的

方便迁移和运行也是一个。就这一点就很赞了。

我另外单独说一点:你跑的服务如果被入侵被植入病毒了,如果是在主机上跑,那你主机影响范围大,你也不确定它会被植入到哪个路径,检查范围也广。但如果是在容器里边跑,那只影响到单独的一个容器,可直接删除然后重新运行,然后再检查挂载的文件夹。

1 个赞

From 快问快答 to 开发调优