人生苦短,我用 docker - 构建自定义镜像

 前言

最近想要将博客(基于Django)迁移到容器内,同时也想通过 Jupyter-Notebook 创建一个 Python 和 JavaScript 的在线 IDE ,此处进行一些记录。

 步骤概览

  • 编写 Dockerfile 
  • 生成镜像
  • 通过镜像运行容器

 常用 Dockerfile 指令

FROM 指定基础镜像
MAINTAINER 作者&维护者信息
RUN 运行各种指令
ADD 添加文件(copy 自动解压)
WORKDIR 目录切换
VOLUME 挂载宿主机目录
EXPOSE 容器开放端口
CMD 容器建立时运行指令

 Blog(Django)

FROM centos:latest   # docker 基础镜像
RUN yum install -y python3  #安装 Python3
WORKDIR /root/  #切换工作目录
ADD ./markdown_blog.tar.gz  /root/  #将 blog 项目压缩文件拷贝到工作目录,自动解压
WORKDIR /root/markdown_blog/  #切换到 blog 项目目录
RUN bash -c "ls "  #构建镜像文件时列出镜像中的文件,可去除
RUN  pip3 install -r  requirements.txt  #安装 blog 项目内的项目依赖文件
RUN chmod 777 run.sh #设置项目内运行文件权限
CMD ["/bin/sh","run.sh"] #设置由镜像生成容器时的运行命令

 在线IDE(Jupyter-Notebook)包含 Python3 与 JavaScript 运行环境

在线运行环境为 Jupyter-Notebook ,JavaScript 需安装  [ijavascript](https://github.com/n-riesco/ijavascript  JavaScript kernel for Jupyter notebook)

FROM centos:latest
RUN yum install -y python3  \    #安装 Python 
&& yum install -y nodejs   \    #安装 Node.js
&& yum install  -y npm  \   #安装 npm 包管理
&& pip3 install jupyter \  #安装 jupyter 
&& npm install -g --unsafe-perm ijavascript \  #设置安装
&&  ijsinstall --install=global\  #设置安装参数
&& npm install -g ijavascript  #安装 JavaScript kernel for Jupyter notebook 
RUN bash -c "mkdir /root/.jupyter" #创建 jupyter 文件夹
WORKDIR /root/.jupyter 
ADD ./jupyter_notebook_config.py  /root/.jupyter  #将 jupyter 配置文件添加到镜像中
ADD ./run.sh /root/.jupyter   
RUN chmod 777 run.sh
CMD ["/bin/sh","run.sh"]

 构建镜像

分别将上面两段代码写入一个文本文件中,去掉后缀改名为 Dockerfile ,单独放在一个文件夹中,命令行切换到这个目录中,运行:

docker build -t blog:v1 .  #(最后有个点,即当前目录)
# -t 指定 tag ,即指定镜像名称

构建镜像是一层一层(layer)构建的,层数和镜像大小是成正比的,上面构建在线 IDE 的 Dockerfile 文件第一条 RUN 指令后面跟随了多个  \ 和 && 这是为了减少层数,类似的指令(这里的都是安装文件)可以写成一条。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值