如何部署自建的Docker镜像以根据本地环境对自身进行更改?

时间:2015-07-27 13:02:46

标签: linux docker dockerfile

作为一个快速回顾,docker可以作为一种方法,为特定的Web服务,运行环境,虚拟机编写代码或配置文件更改,所有这些都来自linux终端/文本文件的舒适范围。 Docker图像是由dockerfiles制作的代码层的保存点,或者可以从容器中创建,这些容器需要基础图像无论如何都要创建。 Dockerfiles是一种通过运行所有所需命令和操作来自动生成图像的构建过程的方法,用于生成任何新容器并将其转换为一个文件。

现在这很棒,但我想更进一步。构建映像,特别是那些具有依赖关系的映像是很麻烦的,因为1,你必须依赖于默认操作系统映像中不存在的命令,或者2,有许多其他不需要的无用命令。

现在在我的脑海里,我觉得它可能,但我还是无法建立联系。 我的愿望是让dockerfile从头开始构建(Litterally the scratch of scratch)并构建自己。它是复制任何所需的依赖项,如rpm或其他东西,安装它,找到它的启动命令,并中继成功创建和运行映像所需的所有依赖项,并且没有缺陷返回到docker文件。在编程意义上,

FROM scratch
COPY package.rpm
RUN *desired cmds*

运行错误被反馈到文件中。 file搜索当前操作系统以查找所需的依赖项,并将它们返回到RUN cmd。

CMD *service start up*

对于那个CMD,我们将运行该服务,并获取其状态并将其启动命令过滤回CMD部分。

这里的问题是,我不相信我可以使用docker来实现这些目的。要做一个Docker构建的东西,保留它的错误并将其过滤回到构建中再次看起来很有挑战性。我希望docker可以配备这个,因为看起来我执行这样一个任务的唯一机会就是通过一个破坏可移植性因素的脚本。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

Docker不会为您提供无痛的构建。 Docker不知道你想要什么。

这里有几个选项:

一个简单的例子:

web:
build: .
volumes:
   - "app:/src/app"
ports:
   - "3030:3000"

使用它:

docker-compose up

然后

Docker撰写:

  1. 调用容器web
  2. 使用当前工作目录以root身份构建
  3. app目录挂载到容器中的/src/app
  4. 将容器端口3030展示为外部世界3000。
  5. 请注意,build也可以指向您通过Kitematic找到的Docker容器(从registry.hub.docker.com读取),因此您可以替换.(在上面的示例中使用node:latest构建行,它将构建一个NodeJS容器。

    Docker Compose与docker命令行非常相似。您可以使用https://lorry.io/获取生成docker-compose.yml文件的帮助。

    • 如果您正在寻找史诗般的解决方案,那么我会为企业Docker环境推荐类似Mesosphere的内容。

    还有其他一些解决方案,比如谷歌的Kubernetes和Apache Mesos,但学习曲线会增加。

    我也注意到你正在使用IP,而我没有使用它,从我听到的,Weave大大简化了Docker的网络方面,这绝对不是Docker的强项。

答案 1 :(得分:0)

对我而言,听起来更像是一个供应系统,厨师或傀儡。我知道如果你必须留在码头区,有些人会用这些来创建图像。