陈同学的Docker笔记
第一弹!!!
Docker是干嘛的?
Docker由啥组成?
Docker客户端
Docker服务器
Docker镜像
Docker容器
Docker容器数据卷
Docker仓库
Docker仓库注册服务器
Docker好在哪里?
Docker是干嘛的?
- 将执行
程序和其运行环境
一起打包 ,利用镜像和容器技术
实现"一次打包 到处运行", 免去运行环境依赖
方便部署 迁移扩展
通过Dockerfile等技术可以实现自动化
- 通过
仓库
机制,不用手动复制 而是直接从仓库拉取镜像
即可 方便部署 - 通过
tag技术
进行类似于git的版本控制
- 相比于虚拟机更加轻量化占用
更少资源
Docker由啥组成?
Docker客户端
- 即在终端
输入的命令行
,与docker服务器部分交互的接口
Docker服务器
- 即你输入命令行以后它在底层给你
执行工作的那部分
- 类似mysql的服务端部分,后台
监听着客户端的请求
,并且管理着
docker的镜像、容器、网络、磁盘等(图中只列出了镜像与容器) - 实现原理是通过
守护进程
来实现 - docker服务部分可以与客户端运行在
同一台机器
也可以是不同机器
(通过远程连接)
Docker镜像
- 镜像是一种软件包 ,这种软件包它包含了
运行某个软件所需要运行环境
,他是静态只读
的文件模板. - 比如web应用需要jdk环境、需要tomcat容器、需要linux操作系统 我们可以把这一切都进行打包成一个整体 ,这个整体就是一个镜像
- 打包后的镜像在某台机器上能运行,那它就能够在
任何装有docker的机器上运行
- 任何镜像的创建会
基于其他的父镜像
,也就是说镜像是一层套一层, - 比如一个tomcat镜像,需要运行在centos/ubuntu上,那我们的tomcat镜像就会基于centos/ubuntu镜像创建
- 可以直接到Docke仓库上
拉取一个做好的镜像直接使用
Docker容器
- 上一步我们构建的镜像只是一个静态的文件,容器是镜像
运行以后的一个实体
- 容器在里面可以运行
一个或者一组应用 镜像
- 我们可以控制容器的
启动、开始、停止、删除
。 - 比如上面打包好的web应用运行镜像下载后用docker运行此镜像 形成一个容器,在容器里面可以通过里面配好的环境进行其他应用的运行
- 容器之间是相互隔离的
Docker容器数据卷
- 存在问题
应用程序产生的数据(比如操作日志、异常日志、数据)也是在容器内的系统中存放的, 默认不会做持久化(不会永久保存的)
随着容器的关闭,容器内的数据也会丢失
, 重新开启的容器不会加载原来的数据
(简单说就是容器重新启动又是另外一个实例了)
- 解决方案
容器数据卷的设计目的就是做数据的持久化和容器间的数据共享
, 数据卷完全独立于容器的生命周期
, 也就是说就算容器关闭或者删除
,数据也不会丢失。简单点说就将宿主机的目录挂在到容器
,应用在容器内的数据可以同步到宿主机磁盘上, 这样容器内产生的数据就可以持久化
了。
Docker仓库
- 存放镜像的仓库 ,
- 可以到上面获取镜像 也可以自己
上传自己配置好的镜像
- 同一个镜像又会有多个版本 在docker中被
称为tag
Docker仓库注册服务器
- 我们有时候会把
Docker注册服务器
和Docker仓库不加区分,其实Docker注册服务器严格意义上可以理解为是仓库的仓库
- 它上面放着多个仓库,按照
功能不同
来划分可以分为比如Ubuntu仓库 Centos仓库等等 按照属性不同
划分可以分为公有仓库 私有仓库 - DockerHub是官方提供的
最大的公有仓库
你也可以在本地网络创建自己的私有仓库
Docker好在哪里?
- 如果上面两张图对比的还是比较抽象的话
- 这里引用一个大佬的比喻
- 来自https://www.cnblogs.com/peng104/p/10296717.html
下面将开始讲Docker的实际操作命令
感兴趣的小伙伴赶紧关注 - END -
我是陈同学
让技术 有温度
你的支持是我搬砖的动力