docker - 如何在开发环境和生产环境中使用docker?

标签 docker

我们目前在生产和开发环境中都使用 Chef。我喜欢 docker 的概念,它为不同的服务角色启动独立的容器。而且我认为在构建开发环境时它会很好用。我不太清楚我们应该如何在生产环境中使用它(或者我应该在生产环境中使用它吗?)。

在生产环境中,每项服务都已在其专用服务器实例上运行。我觉得在容器中运行它们而不是直接在主机操作系统上运行效率很低。

另一方面,如果我们只在开发环境中使用 docker,我们最终将编写 2 份系统配置,一份在 docker 中,一份在 chef 中,这也不理想。

如有任何建议或建议,我们将不胜感激。

最佳答案

In production, each service is already running on their dedicate server instances. I feel it's inefficient to run them inside a container instead of directly running on the host operating system.

docker 在生产中的优势在于易于部署。为了保持最佳性能,请在每台生产机器上安装 docker,并让每个 docker 主机仅运行一个容器。这样,您的应用程序就可以访问与以前相同数量的系统资源。

为了减少 docker 可能引起的开销,有一些技巧:

快速网络

默认情况下,docker 将为您的容器创建一个新的网络堆栈,但如果您使用 --net=host运行新容器时的选项,则容器将改为使用 docker 主机网络堆栈。这将使您的容器在网络性能方面完全没有开销。

另请注意,使用 --net=host 时,您不需要使用 -p docker run 选项发布端口,也不需要公开它们.容器进程中的任何监听端口都可以在 docker 主机 ip 上访问。

快速文件系统

docker 容器文件系统是 Union file system与非分层文件系统相比,with 速度较慢。为了保持良好的磁盘性能,请确保容器中运行的进程在 docker data volume 上执行密集的读/写操作。 .数据卷不是容器分层文件系统的一部分,将具有 docker 主机文件系统的性能。

关于docker - 如何在开发环境和生产环境中使用docker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26321163/

相关文章:

docker - 无法使用 Goland 部署 docker 容器 - DockerClientException - .eslintrc(没有这样的文件或目录)

docker - 根据轴选择 Jenkins -奴隶

python - docker运行时错误: Failed to initialize platform (azure-c-shared).错误:2153

docker - 在Docker中运行的多进程应用程序(例如Postgres)会发生什么情况?

ruby-on-rails - 如何将Kafka客户端添加到Rails Docker部署中?

docker - 如何在 Dockerfile 中为基础镜像指定运行参数?

reactjs - 减小 Cypress docker 镜像大小

docker - 导出正在运行的Docker容器的压缩包是否安全?

Swarm模式下Docker容器间通信加密

azure - 使用 Azure Runbook 拉取并运行 Docker 容器