1.docker容器
docker就好比传统的货运集装箱
每个虚拟机都有独立的操作系统,互不干扰,在这个虚拟机里可以跑任何东西 如应用 文件系统随便装,通过Guest OS 做了一个完全隔离,所以安全性很好,互不影响
容器 没有虚拟化层,直接共享操作系统内核,不同的容器共享是同一个宿主机内核
容器如何工作?
cs 架构 客户端通过docker这个客户端命令 发送指令,由docker引擎进行响应,去本地查询下有没有这个镜像,如果有镜像,直接创建容器。如果没有镜像,从远程Registy仓库中,默认官方直接下载镜像到本地运行容器
2.创建第一个docker
安装docker-ce
启动服务
激活内核选项+重启服务
启动容器
显示激活的容器
访问
02 docker 镜像
每个镜都有很多的层 每个层都是独立的 这些层在本地保留一份就行。如果有多个镜像共享一个层,只要保存一份,这样避免了冗余,避免了占用磁盘空间,避免了占用带宽。如果要下载一个镜像,镜像里有很多层,这个层已经有了,就不需要下载,这样,节省了网络带宽
镜像在上传仓库的时候,如果仓库端也有相同的镜像层的时候,只需上传他没有的层就可以了
分层结构的最大好处:共享资源
镜像层是只读的,修改的东西只保存在容器层,当保存的时候,容器层就会保存成新的镜像层,一个镜像最多127 层,
docker 从上往下会依次查找文件,这样修改的内容就会被优先读取到
镜像的构建
docker commint 构建镜像三部曲:运行容器 修改容器 将容器保存为新的镜像
缺点:效率低,可重复性弱 容易出错
使用者无法对镜像进行审计,存在安全隐患
所有的镜像文件都在这个目录里 不能随意删除
这种方式不利于安全审计
构建镜像
推荐使用Dockerfile这种方式
Dockerfile详解
构建镜像
自动删除所有已经被停止的容器
查看容器详情
数据卷挂载
自动分配的IP
访问容器
这个地址不能从外面浏览器访问的,因为没有做端口映射,这是一个私有网段,不能从windows访问
03 镜像的优化
缩减镜像层
首先缩减镜像层数 绕后清理中间产物
多阶段构建
使用最精简的基础镜像
导入基础镜像
如果有错误 查看日志