关键时刻,第一时间送达!
前言
Python 家族成员繁多,解决五花八门的业务需求。这里将通过 Python 明星项目 IPython Notebook,使其容器化,让大家掌握基础的 Docker 使用方法。
IPython Notebook 目前已经成为用 Python 做教学、计算、科研的一个重要工具。
Docker 化应用的关键元素
镜像是 Docker 应用的静态表示,是应用的交付件,镜像中包含了应用运行所需的所有依赖:包括应用代码、应用依赖库、应用运行时和操作系统。
Dockerfile 是一个描述文件,描述了产生 Docker 镜像的过程,详细文档可以参见官方文档Dockerfile reference。
容器是镜像运行时的动态表示,如果把镜像想象为一个 Class 那么容器就是这个 Class 的一个实例。
一个应用 Docker 化的第一步就是通过 Dockerfile 产生应用镜像。
编写 Dockerfile
选择 Python 2.7 版本为我们依赖的系统镜像。
因所有官方镜像均位于境外服务器,为了确保所有示例能正常运行,可以使用与官方镜像保持同步的 DaoCloud 境内镜像: 。
也推荐通过DaoCloud Toolbox极速下载官方镜像!
设置镜像的维护者,相当于镜像的作者或发行方。
向镜像中添加文件并安装依赖。
与 的区别
总体来说 和 都是添加文件的操作,其中 比 功能更多, 允许后面的参数为 URL,还有 添加的文件为压缩包的话,它将自动解压。
使用 命令调用 pip 包管理器安装 App 的依赖包
在编写 Dockerfile 时尽量将安装依赖的过程提前以提高镜像层的复用率。
启动应用进程
通过 指定该镜像需要公开的端口。
与 的区别
指定了该镜像启动时的入口, 则指定了容器启动时的命令,当两者共用时,完整的启动命令像是 这样。
使用 的好处是在我们启动镜像就像是启动了一个可执行程序,在 上仅需要指定参数;另外在我们需要自定义 时不容易出错。
制作启动脚本(docker-entrypoint.sh)
一般我们会将初始化应用的过程编写成一个启动脚本,在脚本里以环境变量或命令行参数的形式获取应用初始化所必须的信息,然后配置并启动应用。
启动容器
有了 Dockerfile 以后,我们可以运行下面的命令构建 Python 应用镜像并命名为 :
通过指令建立镜像
通过以下指令启动容器
注意哦,我们将初始登录密码以环境变量的形式传入容器并告知应用。
打开游览器,访问 8888 端口,就可以看到 IPython Notebook 了。
领取专属 10元无门槛券
私享最新 技术干货