说明

pull docker 官方 Python2.7 image失败,于是使用 官方 Python2.7 的Dockerfile,在本地创建

使用方法

docker pull chaonet/python

折腾的过程

尝试为一个 Python web 应用 创建 image 时,在第一步 pull python 就卡住了,正常下载 与 vpn 都不行

Dockerfile

FROM python:2.7
ADD . /code
WORKDIR /code
CMD python run.py runserver
```

于是上官方的python页面,发现有专用于建 image 的 onbuild 版,同样下载卡住

[docker 官方 Python](https://hub.docker.com/_/python/)

FROM python:2.7-onbuild ADD . /code WORKDIR /code CMD python run.py runserver


➜ web git:(master) ✗ docker build -t flask_blog . Sending build context to Docker daemon 688.6 kB Step 1 : FROM python:2.7-onbuild 2.7-onbuild: Pulling from library/python 7268d8f794c4: Already exists a3ed95caeb02: Download complete d9a49bc2b1b0: Downloading [===========================================> ] 16.3 MB/18.53 MB b965864d2d45: Download complete 47bed597ecf4: Downloading [=====> ] 15.14 MB/128.6 MB 061df887fe0c: Download complete 27c92d49cd5e: Download complete 6ffb450d14ab: Download complete 0cf60b4c8101: Download complete


想找其他人下好的,没找到

发现 docker hub 中 image 的 Dockerfile 保存在 github ,找到官方 image 的 github,原来是对一个名为 python 的 github 资源的引用,即 official-images 是索引

[official-images python](https://github.com/docker-library/official-images/blob/master/library/python)

2.7.11-onbuild: git://github.com/docker-library/python@7663560df7547e69d13b1b548675502f4e0917d1 2.7/onbuild

2.7-onbuild: git://github.com/docker-library/python@7663560df7547e69d13b1b548675502f4e0917d1 2.7/onbuild

2-onbuild: git://github.com/docker-library/python@7663560df7547e69d13b1b548675502f4e0917d1 2.7/onbuild


实际的 Python image 的 Dockerfile 文件:

[python Dockerfile](https://github.com/docker-library/python)

普通 Python 2.7 image 的 [Dockerfile](https://github.com/docker-library/python/blob/master/2.7/Dockerfile)

可以看出,资源在 Python 仓库中定义,指定从官网下载源代码包,然后在 official-images 中编写 shell 脚本,执行脚本从而完成 image

官方维护人员的维护[操作记录](https://github.com/docker-library/official-images/pull/1484)

[bashbrew 使用说明](https://github.com/docker-library/official-images/tree/master/bashbrew)

觉得可以尝试 clone [official-images python](https://github.com/docker-library/official-images/blob/master/library/python)到本地,然后自己执行 bashbrew 在本地建立 image

但是,[bashbrew](https://github.com/docker-library/official-images/tree/master/bashbrew)脚本无法运行,很多 Linux 的命令 mac 不支持

于是

直接用[Python 仓库](https://github.com/docker-library/python)的 dockerfile 文件 build image

先用[2.7/Dockerfile](https://github.com/docker-library/python/blob/master/2.7/Dockerfile)创建 Python2.7 image

然后在此基础上,用[2.7/onbuild/Dockerfile](https://github.com/docker-library/python/blob/master/2.7/onbuild/Dockerfile)创建 Python2.7-onbuild image

实际上,最后用的是`python:2.7`,而不是`python:2.7-onbuild`

成功