先介绍一下关于docker我的文章大纲
1 初始docker篇。要明白它是干什么的,为什么要用它和它的基础工作原理
2 docker三种基础命令篇。要学会服务相关命令,镜像相关命令,容器相关命令和各种表头
3 数据卷篇。学会-v的使用
4 重难点,镜像的压缩传递和dockerfile的编写。
5 私有镜像仓库篇。实现私有仓库构建和镜像上传和拉取
可以根据需求直接进我主页学习
我会穿插这实例来讲解,图文并茂,最好跟着做一遍实例,加油
命令很简单,但难在原理,原理最重要但难懂且长,如果需要可以直接跳到下面的操作部分。
镜像原理
镜像本质就是分层的文件系统
Linux操作系统组成
进程调度子系统
进程通信子系统
内存管理子系统
设备管理子系统
文件管理子系统——本章重点
网络通信子系统
作业控制子系统
主要来讲liunx文件管理子系统,由bootfs(内核和启动引导(大部分Linux系统都一样))和rootfs(文件系统(就是文件结构,cont7根目录下/dev之类的,不同版本Linux差距较大))组成。
下面来讲docker镜像的组成以Tomcat为例。
Tomcat(服务镜像比如mysql,nginx之类)
jdk(可复用)
rootfs(可复用)
bootfs(全部复用真机的bootfs内核,所以不能夸系统装docker,以为内核不能复用)
你下载服务镜像时,先看你的jdk有没有,没有就先下载jdk,下载jdk又依托于rootfs。
这三部分就可以叫Tomcat镜像。(什么服务就叫什么名字)也可以叫只读镜像。
为什么又叫只读镜像,是因为这三部分需要复用,所以不能改,只能读取。但是非想改,就根据镜像创建容器,在容器里改,等调教好了服务,就在创建新的镜像,发给别人直接跑。
这里除了第一个服务镜像,其他镜像全部复用,你装好一个,其它服务就不用装了,别的服务只装一个头部的服务镜像就ok,所以docker下载镜像,创建容器非常块(下载镜像不需要全下,就下个服务镜像;启动容器复用的真机运行中的内核,不用启动内核,自然快。)
操作说明开始,先来操作简单的压缩包传递镜像。(因为镜像不能直接传输)
1,根据容器制作新镜像。(通过-v同步进去的不在新镜像生效,但是启动容器在挂载回来是一样的)
docker commit 容器id 新镜像的名称和版本号(直接编一个就行)
2,镜像无法直接传输所以要把做好的镜像压缩才能传输
根据新镜像制造压缩包
docker save -o 压缩文件名称(随便起名)镜像名 版本号
3,恢复压缩包中的镜像
docker load -i 压缩包名字
开始dockerfile编辑,这个没发说,上网搜关键字翻译,让后根据需求叠加,我只能做个例子。
通过编写dockerfile来构建镜像,实现一个网页项目的容器运行
先把项目压缩包拿到,并传到docker—file目录下,因为file只能添加本目录内的压缩包
开始编辑file文件
1,FROM(就是指定基础镜像,后续的指令都是运行于此基准镜像所提供的运行环境,因为后面要用到Java—jar所以此实验需要基于Java镜像)jav
2,定义作者信息随便写,企业里找背锅侠用。
MAINTAINER 名字<邮箱>
3,将项目包添加到容器
ADD 项目包名字(要拖到dockerfile目录才行)容器内项目包新名字。
4CMD (定义容器启动执行的命令)
java—jar 容器内项目包名字。
写完了
通过docker bulid —f dockerfile文件路径(因为在dockerfile目录下有各种各样的自命名的file文件,需要再这里指出具体是哪个,如果就在dockerfile目录下可以直接./具体文件名来指出(./是绝对路径的意思)) —t 镜像名:版本。(直接编名字版本)