制作 Python 运行环境镜像

拉取基础镜像

docker pull ubuntu:16.04

编写 Dockerfile

# 创建目录
mkdir docker-image/python && cd docker-image/python
# 编写 Dockerfile
FROM ubuntu:16.04
MAINTAINER kiki
# 更新 apt
RUN  apt-get update && apt-get install -y
# 安装依赖
RUN  apt-get install gcc -y \
  && apt-get install make -y \
  && apt-get install vim -y \
  && apt-get install openssl -y \
  && apt-get install libssl-dev -y \
  && apt-get install python3.5 -y \
  && apt-get install python3-pip -y
CMD ["pip3"]
CMD ["python3"]

安装出现警告信息 debconf: delaying package configuration, since apt-utils is not installed。解决方法:

RUN apt-get update && apt-get install -y --no-install-recommends apt-utils

制作镜像

docker build -t python3 .
# 查看镜像
docker images
# 运行容器
docker run -i -t python3 /bin/bash
# 进入 docker 之后,运行 python3 和 pip3
python3
pip3

更新镜像

安装 Sphinx + ReadTheDocs 支持

方法 1:进入镜像内部更新镜像

# 在 docker 内部安装相关依赖
pip3 install sphinx sphinx-autobuild sphinx_rtd_theme recommonmark pypandoc
# 提交更新
docker commit -m="add Sphinx + ReadTheDocs support" -a="kiki" CONTAINER-ID sphinx-rtd
# 查看新镜像
docker images
# 启动新镜像
docker run -i -t -v sphinx-rtd /bin/bash
# 给镜像设置标签
docker tag CONTAINER-ID compile-blog

安装 Python 包遇到错误:requests.packages.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out。解决方法:

# 在 Dockerfile 中增加下面的参数
pip3 --default-timeout=1000 install sphinx sphinx-autobuild sphinx_rtd_theme recommonmark pypandoc

方法 2:编写新的 Dockerfile

FROM python3
MAINTAINER kiki
# 安装依赖
RUN pip3 --default-timeout=1000 install sphinx sphinx-autobuild sphinx_rtd_theme recommonmark pypandoc
CMD ["pip3"]
CMD ["python3"]
docker build -t sphinx-rtd .
# 查看镜像
docker images
# 运行容器
docker run -i -t sphinx-rtd /bin/bash
# 进入 docker 之后,运行 python3 和 pip3
python3
pip3

推送镜像

推送到官方仓库 Docker Hub

docker login -u username -p password
docker push sphinx-rtd
docker logout

推送到私有仓库 xxx

# 参考 https://github.com/docker/docker.github.io/blob/master/registry/insecure.md 设置 http 连接
# 给镜像添加标签
docker tag sphinx-rtd xxx:sphinx-rtd
# 推送镜像
docker push xxx:sphinx-rtd

相关