文章目录
- 自制思维导图
- 为什么用Docker?
- Docker理念
- 为什么Docker比虚拟机快?
- Docker组成
- 镜像原理
- 容器数据卷
- DockerFile
- 本地镜像发布到阿里云逻辑图
自制思维导图
为什么用Docker?
代码在不同的环境和配置下,可能出错。
开发人员和运维人员之间的矛盾。
以前提交代码,现在提交镜像
以前搬家,现在搬楼。
Docker理念
Docker是由Go语言实现的云开源项目。
docker理念,一次构建,处处运行。
虚拟机缺点
1.资源占用多
2.冗余步骤多
3.启动慢
docker可以理解为是一个精华版,缩减版,高速版的linux操作系统。
为什么Docker比虚拟机快?
Docker组成
主要组成:
镜像 容器 仓库
镜像就是模板,类比类class
容器就是镜像的实例,类比对象object
一个类可以有多个对象
一个镜像可以有多个容器,每次运行镜像,创建的是不同的容器实例。
仓库是存放镜像的地方
我们把应用程序(代码+环境+配置+数据等等)配置打包形成一个运行环境,就是image镜像文件,然后根据镜像文件生成不同的容器实例,容器实例对应不同的服务,如redis,mysql等。
镜像原理
镜像是什么?
镜像是轻量级的,可执行的软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码,运行时,库,环境变量和配置文件等。
bootfs和rootfs
bootfs主要包含bootloader和kernel内核。bootfs是镜像的最底层。
rootfs在bootfs之上,是各种不同的操作系统发行版,如Ubuntu,Centos等等。
为啥docker上的linux操作系统很小?
因为在docker上下载的linux操作系统共用docker的bootfs,需要下载的是rootfs部分。而且底层都是直接用宿主机的内核。
为什么tomcat在docker中很大?
因为它里面包含了能运行tomcat整个环境所需要的其他配置软件。如jdk8,centos,kernel等。这就是联合文件系统(花卷)
为什么docker要采用这种分层镜像?
为了共享资源。
容器数据卷
是什么?
就是把docker容器产生的数据持久化,保存下来。
也可以实现容器到主机和主机到容器之间的数据共享
容器内添加:
直接命令添加数据卷
v有新建文件夹的功能,这个命令,把宿主机的文件和容器内的文件构成连接,方便宿主机和docker内的容器进行数据共享。就像是电脑的硬盘和usb接口之间的连接。
通过docker inspect 容器ID查看宿主机和容器是否绑定
宿主机的文件夹abc和docker容器内的cba文件夹绑定了
允许读写操作
实现了宿主机和docker容器数据共享,而且容器停止退出后,主机修改后,容器下次开启时数据也同步。容器内的命令设置只读
宿主机可以读写,docker容器只能读,不能写。
容器数据卷的继承
DockerFile
DockerFile是什么?
DockerFile相当于是对images源码级的描述 。相似于.class对.java的关系。
DockerFile是镜像模板的描述文件。类似linux下的shell编程,只不过这里是docker编程。
DockerFile内容基础知识
Docker执行Dockerfile的大致流程
Dockerfile,Docker镜像,Docker容器之间的关系
DockerFile主要的保留字指令
add和copy差不多,但是add更强,在复制后能解压。
CMD和ENTRYPOINT差不多,使用CMD,后面的命令会把前面的命令覆盖。使用ENRTYPOINT,后面的命令不会覆盖前面的,而且追加。
自定义Dockerfile
1.在宿主机上完成代码
2.构建
docker build -f 宿主机路径 -t 目的镜像名:标签 .
注意最后面还有一个.
一步一步构建镜像,花卷包装,一步步执行。
成功
本地镜像发布到阿里云逻辑图
和git提交到github上类似