【问题标题】:difference between building a docker from ubuntu base image and python base image?从 ubuntu 基础镜像和 python 基础镜像构建 docker 的区别?
【发布时间】:2015-05-11 03:57:45
【问题描述】:

这里是 Docker 新手。

我正在阅读documentation,了解如何使用 Docker 设置 Django webapp,我意识到 dockerfile 使用了

FROM python:2.7

我是否仍然可以使用相同的 dockerfile 内容但将其更改为

FROM ubuntu:14.04

并使其与 python 2.7 或 3.4 一起用于 Django 1.8.1?

【问题讨论】:

    标签: python django ubuntu docker dockerfile


    【解决方案1】:

    使用 ubuntu,您可以运行 django 应用程序。您只需为其安装依赖项(例如,使用 Dockerfile 中的说明)。

    在您的 Dockerfile 中,添加如下内容:

    RUN apt-get install python
    RUN apt-get install django
    

    如果某些命令未在新的基础映像中实现,您可能还必须将它们替换为等效命令(如果您使用 archlinux 而不是 ,请将 apt-get 替换为 pacman ubuntu 为例)。

    但是如果你使用django,你也可以安装和使用pip。

    【讨论】:

      【解决方案2】:

      docker FROM 指令指定基础镜像以开始构建镜像。

      如果你去 python:2.7 dockerfile 你会看到它指定了下一个:

      FROM buildpack-deps:jessie
      

      这意味着该图像将使用图像 buildpack-deps:jessie 并在此基础上构建所有与 python 相关的依赖项。

      您可以将其视为应用程序层。您设置基本映像(在 FROM 语句中),然后安装启动应用程序所需的任何内容。

      例子:

      我需要一个已安装 wget 的映像,因此我制作了一个类似于此的 Dockerfile:

      FROM debian:jessie
      RUN apt-get update && apt-get install wget
      ...
      

      我可以称这个图像为:wgetimage。然后,如果我需要一个 wget 容器来下载某些东西,我可以使用这个图像:

      FROM wgetimage
      RUN wget ....
      

      在这种特定情况下,ubuntu 基础镜像不会包含与 python 相关的包,因此您需要将它们添加到 Dockerfile 中。如果您只需要启动 python 应用程序,最好使用 python:2.7(或 python:3.4)作为基础映像。

      希望对你有帮助。

      【讨论】: