Docker的出现是伴随着应用的微型化出现的。早期为了安装和测试新的应用,需要购买新的硬件和操作系统,成本极大。
后来出现了比如KVM,Exsi等一系列操作系统虚拟化技术,创建虚拟的操作系统,共用硬件,算是一个不小的进步。但是操作系统本身会占用比较多甚至主要的的硬件资源(CPU,RAM等),是一种浪费。
后来,伴随着计算机和操作系统技术的继续演进,尤其是出现了像namespace,cGroup,UnionFS等技术,是的应用的docker化变为可能。docekr公司也横空出世。
简单理解docker,就好像一颗颗种子,宿主机器(包括操作系统)是一块土壤,所有的种子在彼此不干扰情况下,从土壤中吸收养分生长。所以呈现给我们的画面就是: 一块土地上,有一片绿油油的小草, 彼此独立生长,绿叶随风飘扬。
具体信息,可以参考官方文档和书籍,不再赘述。
要想创建 新的镜像,肯定要有计划,按照怎样的步骤创建?这个计划机就是Dockerfile.下面是一个Dockfile的简单示例:
FROM python:3.7.5-slim ENV DJANGO_VERSION 3.0.1 COPY ./sources.list /etc/apt/sources.list RUN apt-get update \ && apt-get install -y --no-install-recommends \ gcc \ libc-dev \ uuid-dev \ libssl-dev \ libpcre3-dev \ && pip install --no-cache-dir uwsgi django=="$DJANGO_VERSION" django-cors-headers -i "https://pypi.tuna.tsinghua.edu.cn/simple" \ && rm -rf /tmp/* \ && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ && rm -rf /var/lib/apt/lists/* \
这个示例基于 python3.7.5 的 slim 镜像,构建一个django + uwsgi 镜像,具体步骤如下:
声明基础镜像: FROM
定义变量,此处是要安装的django的版本号
将基础镜像中的软件源替换为中国本土软件源,以加快速度安装,sources.list文件内容如下:
deb http://mirrors.ustc.edu.cn/debian/ buster main deb http://mirrors.ustc.edu.cn/debian/ buster-updates main
安装 django+uwsgi安装过程中需要的系统依赖(apt install ..);安装django+uwsgi;并在安装完成之后清理缓存文件
还有一些常用的Dockerfile 选项,比如ADD,CMD等,可以参考其他资料
有了计划(Dockerfile),现在就要执行了,执行很简单。
docker image build -t repository/name:tag .
注意,最后那个点 (.) 是必须的,代表 从当面目录下的 Dockerfile 构建
有时候,需要把本地创建的镜像传到docker hub上,分享给别人使用或者自己管理,需要上传到 dockerhub上。上传主要分两步:
上传完成之后,就可以在docker hub上看到自己的镜像啦!!
本文作者:王海生
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!