我正在尝试创建一个安装了sqlite和postgreSQL的ubuntu镜像。如果我正在做的是最佳做法,我会感到困惑。
我发现我可以构建一个非常简单的dockerfile并通过shell(使用docker run -it [image_name]
)安装sqlite和postgresql。
所以我会有一个像这样的dockerfile
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来指定要安装和运行的内容。
与通过shell编辑图像相比,使用dockerfile有什么好处?
最佳答案
退出正在运行的计算机后,它就消失了,您需要重新创建它。您手动输入的每个命令都消失了。 Dockerfile是从头开始可复制地创建镜像的秘诀。
从更大的 Angular 看:虚拟机很有用,我们可以同意吗?它们使您可以在简单的环境中运行复杂的服务,从而避免了可能希望并行运行的其他事物的复杂性。设置虚拟机可能会很麻烦。您需要启动计算机本身,然后登录到计算机以安装所需的所有东西。这可能是复杂且耗时的。
Docker简化了以已知的良好状态启动和运行虚拟机的过程:您可以在Dockerfile中定义确切地创建所需虚拟机所需的步骤,基本上就是这样。 Docker将构建一个机器并使用一个简单的命令运行它,它会高效地运行(具有层缓存和紧密的OS集成),而您所需的只是一个文本文件,您可以将其检入到版本控制系统中(相对于多GB的虚拟机镜像)。
关于postgresql - Dockerfile与Shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63718569/