在 EC2 上为具有许多依赖项的 Web 应用程序构建 docker 图像
Building a docker image on EC2 for web application with many dependencies
我是 Docker 的新手,有一些非常基本的问题。我无法在其他地方澄清我的疑虑,因此将其张贴在这里。如果查询非常明显,请原谅我。我知道我对图像缺乏一些基本的了解,但我很难找到一些易于理解的解释。
手头的问题:
我的应用程序 运行ning 在 EC2 节点 (r4.xlarge) 上。它是一个具有大量依赖项(系统依赖项+其他库等)的 Web 应用程序。我想为我的机器创建一个 docker 映像,这样当我启动一个新的 EC2 实例时,我可以轻松地 运行 它放心。
问题:
- 我需要从头开始构建 docker 图像还是可以使用一些基础图像?
- 如果我可以使用基本图像,我会使用哪一个 select? (很难知道 EC2 机器上的 OS 版本,因此我不确定我应该从哪个基础映像开始。
我提到了这个文档-
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html#install_docker
但它是从 Ubuntu 基本图像创建的。
- 上面的示例包含有关安装 apache(以及应用程序所需的其他内容)的说明。假设我的应用程序需要安装服务器 X + 20 个系统依赖项 + 10 个其他库。
例如:
yum install gcc
yum install gfortran
wget <abc>
当我创建一个 docker 文件时,我是否需要像上面那样指定所有安装说明?我认为创建图像就像复制现有机器一样。在这种情况下,docker 文件应该包含什么?
向我指出一些好的文档以在 EC2 上为具有依赖项的 Web 应用程序构建 docker 图像也将非常有用。
提前致谢。
- 您可以使用基本图像,您可以在第一行指定它
你的 Docker 文件,
FROM
- EC2 实例的基础 OS 对于容器来说无关紧要。
这就是容器的意义所在,你可以 运行 linux on windows, arch
在 debian 上,随心所欲。
- 是的,基础映像中不存在的依赖项将需要
被指定和安装。 (取决于默认包装器
您正在使用的基本图像的管理器,您可以使用 dpkg,
或 yum 或 apt-get。 )
首先,如果你想向 docker 迈进,那么我会建议使用专为 docker 容器设计并具有自动缩放和负载平衡功能的 AWS ECS。
至于你的问题是关注所以
- 您需要一个 docker 文件,其中包含已安装在您的 EC2 实例中的所有包和应用程序。至于基本图像,我会推荐Alpine。 Docker 默认图像是 Alpine
为什么选择高山?
Alpine 将自己描述为:
Small. Simple. Secure. Alpine Linux is a security-oriented,
lightweight Linux distribution based on musl libc and busybox.
https://nickjanetakis.com/blog/the-3-biggest-wins-when-using-alpine-as-a-base-docker-image
https://hub.docker.com/_/alpine/
Let's say my application needs server X to be installed + 20 system
dependencies + 10 other libraries.
所以你需要制作docker需要你提到的所有这些的文件。
我再次建议 ECS 是基于 docker 的最佳应用程序,因为这是为 docker 而设计的 ECS,而不是 EC2。
CONTAINERIZE EVERYTHING
Amazon ECS lets you easily build all types of
containerized applications, from long-running applications and
microservices to batch jobs and machine learning applications. You can
migrate legacy Linux or Windows applications from on-premises to the
cloud and run them as containerized applications using Amazon ECS.
https://aws.amazon.com/getting-started/tutorials/deploy-docker-containers/
https://caylent.com/containers-kubernetes-docker-swarm-amazon-ecs/
我是 Docker 的新手,有一些非常基本的问题。我无法在其他地方澄清我的疑虑,因此将其张贴在这里。如果查询非常明显,请原谅我。我知道我对图像缺乏一些基本的了解,但我很难找到一些易于理解的解释。
手头的问题:
我的应用程序 运行ning 在 EC2 节点 (r4.xlarge) 上。它是一个具有大量依赖项(系统依赖项+其他库等)的 Web 应用程序。我想为我的机器创建一个 docker 映像,这样当我启动一个新的 EC2 实例时,我可以轻松地 运行 它放心。
问题:
- 我需要从头开始构建 docker 图像还是可以使用一些基础图像?
- 如果我可以使用基本图像,我会使用哪一个 select? (很难知道 EC2 机器上的 OS 版本,因此我不确定我应该从哪个基础映像开始。 我提到了这个文档- https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html#install_docker 但它是从 Ubuntu 基本图像创建的。
- 上面的示例包含有关安装 apache(以及应用程序所需的其他内容)的说明。假设我的应用程序需要安装服务器 X + 20 个系统依赖项 + 10 个其他库。
例如:
yum install gcc
yum install gfortran
wget <abc>
当我创建一个 docker 文件时,我是否需要像上面那样指定所有安装说明?我认为创建图像就像复制现有机器一样。在这种情况下,docker 文件应该包含什么?
向我指出一些好的文档以在 EC2 上为具有依赖项的 Web 应用程序构建 docker 图像也将非常有用。
提前致谢。
- 您可以使用基本图像,您可以在第一行指定它
你的 Docker 文件,
FROM
- EC2 实例的基础 OS 对于容器来说无关紧要。 这就是容器的意义所在,你可以 运行 linux on windows, arch 在 debian 上,随心所欲。
- 是的,基础映像中不存在的依赖项将需要 被指定和安装。 (取决于默认包装器 您正在使用的基本图像的管理器,您可以使用 dpkg, 或 yum 或 apt-get。 )
首先,如果你想向 docker 迈进,那么我会建议使用专为 docker 容器设计并具有自动缩放和负载平衡功能的 AWS ECS。
至于你的问题是关注所以
- 您需要一个 docker 文件,其中包含已安装在您的 EC2 实例中的所有包和应用程序。至于基本图像,我会推荐Alpine。 Docker 默认图像是 Alpine
为什么选择高山? Alpine 将自己描述为:
Small. Simple. Secure. Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.
https://nickjanetakis.com/blog/the-3-biggest-wins-when-using-alpine-as-a-base-docker-image
https://hub.docker.com/_/alpine/
Let's say my application needs server X to be installed + 20 system dependencies + 10 other libraries.
所以你需要制作docker需要你提到的所有这些的文件。
我再次建议 ECS 是基于 docker 的最佳应用程序,因为这是为 docker 而设计的 ECS,而不是 EC2。
CONTAINERIZE EVERYTHING
Amazon ECS lets you easily build all types of containerized applications, from long-running applications and microservices to batch jobs and machine learning applications. You can migrate legacy Linux or Windows applications from on-premises to the cloud and run them as containerized applications using Amazon ECS.
https://aws.amazon.com/getting-started/tutorials/deploy-docker-containers/
https://caylent.com/containers-kubernetes-docker-swarm-amazon-ecs/