首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dockerfile vs shell

Dockerfile vs shell
EN

Stack Overflow用户
提问于 2020-09-03 07:11:40
回答 2查看 95关注 0票数 1

我正在尝试创建一个带有sqlite和postgreSQL安装的ubuntu映像。我很困惑我所做的是否是最好的做法。

我发现我可以构建一个非常简单的dockerfile,并通过shell (使用docker run -it [image_name])安装sqlite。

所以我要一个像这样的文件

代码语言:javascript
复制
FROM ubuntu:18.04
ENV TZ=[time zone data]
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

然后运行docker build some_container:1.0 .,然后运行docker run -it some_container:1.0,这将给出一个shell,然后在shell中运行安装命令,比如apt-get install postgres-12

这甚至是建立图像的正确方式吗?我很困惑这是否是一个好方法,因为许多在线材料不使用shell,而是使用dockerfile来指定安装和运行什么。

使用dockerfile对通过shell编辑图像有什么好处?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-03 07:20:40

一旦你退出你正在运行的机器,它就消失了,你需要重新创建它。您手动输入的每个命令都消失了。Dockerfiles是一种从头开始可再现地创建映像的方法。

从更大的角度看:虚拟机是有用的,我们可以同意这一点,是吗?它们允许您在一个简单的环境中运行复杂的服务,避免了您可能希望并行运行的其他内容的复杂性。但是,设置虚拟机可能会很痛苦;您需要启动机器本身,然后登录到其中以安装所需的所有内容。这既复杂又费时。

Docker简化了虚拟机在已知良好状态下的启动和运行:您在Dockerfile中定义了创建所需虚拟机所需的步骤,基本上就是这样。Docker将构建这台机器并使用一个简单的命令运行它,它能够高效地运行(通过层缓存和紧密的OS集成),您所需要的只是一个文本文件,您可以将它签入您的版本控制系统(而不是多GB虚拟机映像)。

票数 1
EN

Stack Overflow用户

发布于 2020-09-03 07:19:36

Dockerfile是一组用于构建映像的指令。您应该使用它来准备您需要工作的一切,所以下次当您旋转容器时,您将不必做任何准备工作。

Dockerfile中没有postgres安装意味着,每次您想使用容器时,都必须打开一个shell并手动安装它,而不是只运行容器并准备好数据库供您使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63718569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档