镜像这东西,说起来玄乎,其实就像你早上起来照的那面镜子。
然而,放置在电脑之内的镜子,所映照浮现出来的可是一个虚拟模样的自身,完全是相同没有差异的,不管是能够奔跑还是跳起来都没问题,然而你却根本没办法抓住它。
半夜三点改代码,突然服务器崩了。
这时候你最想啥?
一种目光,一份留存,一种可令你一刹那间返回十分钟之前的“反悔之药”。
对,镜像就是那粒药。
到底啥是镜像?别跟我扯源码
我阅览过那些官方所撰写的文档,诸如所谓的“只读文件系统”,以及另所谓的“分层结构”。
打住。
你当作那是一个,刚完成系统安装的U盘,然而此U盘并非插在,电脑的后部位置,而是插在“虚空”之中的。
那里边有着各种各样的东西,其中包含Ubuntu系统,还有Nginx环境,以及你所编写的那一系列存在问题的代码,它们全被打包整理好了,正安安静静地处于放置状态。
但它不能自己开机。
它得等一个叫“容器”的东西把它“激活”。
容器跑起来,镜像就活了,跟真操作系统一模一样 。
镜像仓库?不就是个大硬盘嘛
对,就是放镜像的地方。
你需要这样去理解,属于你自身的电脑它是本地硬盘,而Docker Hub就如同百度网盘。
你在上面注册个账号,就有了自己的私人文件夹。
拉取镜像?
就是“下载”。
推送镜像?
就是“上传”。
你于命令行之中敲击 docker pull nginx,此行为乃是从那个规模巨大、范围广阔的公共仓库内里,将Nginx那个经过特殊处理、类似“阉割版”的系统搬运至你家的客厅之处哦。
可是存在那么一点,着实让人烦扰,就是你所传输的镜像前面是需要添加用户名的,就如同 你的名字/nginx 这样的形式。
官方的就不用,比如 nginx,傲娇得很 。
Docker Hub:程序员的共产主义试验田
这名字取得真好。
Hub,中心,集线器。
上面啥都有。
开源、共享、版本控制……这不就是GitHub那一套吗 ?
开源与共享:大多数镜像都公开,随便下。
但你想藏私房钱?
想建私人仓库?
交钱。
代码由GitHub进行托管,而异于代码的镜像则是由Docker Hub予以托管,这整个被称为镜像托管。
从本质层面来讲,都是相同的,存在害怕丢失的情况,并且也是为了能够让他人去借鉴(哦,不对,准确说是共享资源)。
版本控制:Git有tag,镜像也有tag。
最新版是 nginx:latest,那个经典稳定版是 nginx:1.23.3,想回滚的话就能够回滚。
你说这算不算另一种形式的共产主义?
各取所需,按需分配。
自己动手,捏一个镜像
光看不练假把式。
我试过两种方法,一种糙快猛,一种装文艺。
查查查
想找镜像?
docker search nginx。
一堆结果冒出来,STARS越多的越靠谱,跟大众点评似的 。
拉下来
docker pull 镜像名。
比如 docker pull centos:7。
瞧见进度条跑完啦,这般“阉割版”的CentOS就在你硬盘之中安稳躺好了哟。
第一种:commit 大法(快照方式)
在这之前,要先让它奔跑起来,具体的操作指令是,docker运行一个交互的容器,并且给这个容器命名为myubuntu,运行的镜像为ubuntu,运行之后的命令环境是/bin/bash。
这时候你已经“进入”这个虚拟系统了。
2. 随意地进行各种折腾:于其中执行“apt-get install vim”,安装Python,搭建一下环境。
随便造,这就是你的 playground。
3. 打包:玩够了,exit 退出来。
之后,去执行叫做docker commit的操作,给它添加一个叫做-m,内容是加了vim的标记,把容器ID作为参数,将你的名字/myubuntu:v1作为目标。
4. 这就成了!
一个属于你的镜像,新鲜出炉。
第二种:Dockerfile 文艺青年法
新建一个文件,就叫 Dockerfile,里面写:
FROM python:3.8-slim
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
然后,使用命令docker build,为其添加参数-t,参数值为你的名字/myapp:v1,最后一个点号表示当前目录,执行这样的命令。
看见没?
这是菜谱 。
以后想改啥,改菜谱就行,不用每次都进厨房重新炒菜。
这才是现代人该干的事。
写完这些,我看了眼窗外
镜像这东西,说白了就是人类对“完美复制”的执念。
我们惧怕遗漏,惧怕体系垮掉信息没了,惧怕条件设了三天一关机全白做。
于是我们发明了镜像。
把那个最完美的瞬间,咔嚓一下,拍下来,存好。
以后崩了?
不怕。
从镜像里再跑一个就行。
跟生活一样。
就算当下状况乱七八糟,只要过往你存在过那般完美情形,将其拍成镜像,那你便始终拥有机遇,再次从头开始。
只是,人生的镜像,该用什么命令来 commit 呢?

Comments NOTHING