社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

掘金 AMA:《开发者必备的 Docker 实践指南》小册作者--有明聊 Docker

清蒸不是水煮 • 6 年前 • 440 次点击  
阅读 51

掘金 AMA:《开发者必备的 Docker 实践指南》小册作者--有明聊 Docker

第十一期 AMA,掘金团队请来了《没什么难的 Docker》书籍、《开发者必备的 Docker 实践指南》小册作者-- 有明做了为期三天的 Ask Me Anything (AMA) 活动(已结束)。

我们在此精选了一些来自用户的提问及有明的回答。

关于有明

社区小伙伴精选提问

使用jenkins发布的go程序,且项目不大,对于这样的项目docker能带来什么? ─ @itstudying

使用jenkins发布的go程序,且项目不大,对于这样的项目docker能带来什么呢,谢谢。

对于 Go 程序来说,特点就是环境依赖性很强,我们在开发平台上编译、运行并测试通过的程序,也许在目标平台上还要重新编译,甚至编译后会出现与开发平台上运行不一致的情况。通过 Docker,我们就可以尽可能的保证开发、测试、生产环境的一致性,减少很多不必要的麻烦和因为这些麻烦带来的工作量。

docker有什么具体的使用场景呢─ @胜雄

测试领悟 docker有什么具体的使用场景呢

如果将 Docker 引入到 DevOps 流中,那么测试人员就再也不需要为程序运行环境所困扰了。在我司的实践中,通过使用 Docker 来搭建测试环境,测试同事对环境的管理和切换都变得非常容器,仅需几条命令或是几个配置就能完成。

Docker对于刚刚进去后端开发的工作者来说,是否真的有必要? ─ @旱鸭子

Docker对于刚刚进去后端开发的工作者来说,是否真的有必要。比如我,我自学的golang,就目前我的了解来看,我需要学习数据库,web框架等一些基本的东西,这个时候入手docker是否合适。会不会喧宾夺主呢?

这些东西对于学习 Docker 来说,完全不冲突。同时,学习 Docker 对于后端开发来说也是非常必要的。简单来比较,学习 Docker 与其说是学习 Docker 这门技术,不如说是学习使用 Docker 以及周边的工具,学习通过 Docker 来提高我们的工作效率。这就好比上手一款好用的 IDE 来替代记事本编写代码,虽然会消耗一些时间来掌握它,但之后的收益的非常明显的。从另一方面来说,掌握 Docker 虽然消耗了你的一些学习时间,但在之后会不断的为你节约大量用于环境方面的时间,用这些时间去学习其他的知识,岂不是非常完美。

怎么开一个容器? ─ @Arthur.Li

怎么开一个容器比如node,只用做打包比如运行个npm什么的。最好能放到compose里一起管理。 只能通过docker run xxx /bin/bash npm install 这种新建容器去执行吗?

完全可以将这个容器放到 Compose 项目里,这样可以更优雅的与 Compose 项目中的其他容器进行结果共享等。这个容器的命令就可以直接设置为 npm install,每次启动它就可以做一次更新。

mysql如果使用docker部署的话,会不会在特定的情况下出现性能问题?─ @Zaregoto

mysql如果使用docker部署的话,会不会在特定的情况下出现性能问题呀?比如I/O或什么的

Docker 做的工作主要是隔离,没有涉及资源转换,所以容器中的程序对硬件资源的使用上与宿主机上的程序是一致的(如果你通过 Docker 做了资源限制那另当别论)。所以,容器中的程序与宿主机中的程序镜像对比,在性能上没有差别。当然,如果你的流量特别高,真的已经达到了服务器硬件的 I/O 瓶颈,那不论程序是直接运行在服务器还是运行在容器里,都一样会出现峰值限制的。

中小项目是否有必要采用Docker解决方案?─ @Colin Jiang

中小项目是否有必要采用Docker解决方案?

Docker 的优势并不仅在于其能够更快实现集群搭建和管理,更在于其能够贯穿 DevOps 流。换句话说,Docker 在开发、测试、运维领域都能发挥不少作用。所以,中小型项目更应该引入 Docker,因为它真的能够节约大量的人力、物力以及时间,这些成本对于中小型项目来说,都是非常宝贵的。

Docker 和 微服务 或者 Service Mesh 怎么优雅的搭配一起使用?─ @wujunze

Docker 和 微服务 或者 Service Mesh 怎么优雅的搭配一起使用

通过 Docker 以及周边技术来实现服务化相关的基础设施,进而替代以往微服务体系在应用程序中实现的这些功能,使得服务基础设施与应用分离,让应用开发不再需要过多考虑服务化基础架构的问题,这就是 Service Mesh 的核心理念之一。

docker里直接pull一个centos,然后装lnmp;与分开装有什么区别

docker里直接pull一个centos,然后装lnmp;与分开装有什么区别

Docker 推崇轻量级容器,即程序即容器的概念。分开使用不同的容器运行不同的程序,既符合 Docker 自身的设定,又能够让 Docker 更好的对这些容器镜像管理。而从另外一个角度出发,用容器隔离不同的程序,才是破解程序间复杂依赖难题的关键步骤。

docker算不算精简化的虚拟机? ─ @诺墨

docker算不算精简化的虚拟机?

准确来说,Docker 以及它所对应的容器技术不属于虚拟机的范畴。虚拟机特指的是通过 Hypervisor 也就是虚拟机监控器来实现虚拟资源到实际资源转换的。而容器技术更关心的是资源的隔离,其中是没有 Hypervisor 这一层的,所以其与虚拟机存在很大的差别。关于这两者的比较,在我的《开发者必备的 Docker 实践指南》中有更详细的解读。

如何保证安全性?─ @buheshuicat

docker并不能完全将资源隔离起来,如何保证安全性?

Docker 的安全可以从几个角度出发去考虑:

  1. 隔离安全,也就是依靠 Docker 实现隔离的 Namespace、CGroup 等机制实现安全隔离。
  2. 内核能力限制,即通过限制 Docker 容器及其中应用对内核敏感功能的使用,来达到防范风险的目的。
  3. 服务器安全防护,这和普通的服务器防护原则是一致的,也就是设立防火墙,使用证书保护,应用非 root 运行等方式来限制外部攻击。
  4. 设立安全机制,通过像 AppArmor、SELinux 这样的安全策略或安全软件来增强内核本身的安全性。

本期 AMA 社区小伙伴提了许多实用问题,感谢有明认真地为掘金小伙伴解答了不少疑问。浏览更多的问答,可以到有明的 AMA 进行阅读和讨论。


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/U9jO13YiWR
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/27153
 
440 次点击