一.使用docker是为了解决什么问题?
解决依赖的兼容问题:如mysql在ubuntu(属于一种应用程序,对linux的指令进一步进行封装)和centos上的函数库和依赖肯定不同,尽管两者的内核都是linux。
解决的方法:将用户程序和所需要调用的系统(如ubuntu)函数库一起打包
图像描述如下:
二.docker的原理?
2.0: docker 的常用概念
镜像:Dcoker将应用程序以及所需的依赖,函数库,环境,配置文件打包在一起,称为镜像。
容器:镜像运行后形成的进程就是容器,Docker会利用linux的手段给容器做隔离,类似于沙箱。
DockerHub:Docker镜像的托管平台,也称为Registry。
数据卷:是一个虚拟目录,指向宿主机文件系统中的某个目录,为了解决容器于数据耦合的问题,具体问题如下:
数据卷、主机、容器之间的关系如下图:
2.1:dockers的架构的图文描述
三.docker的安装和配置
......
四.docker的使用以及命令?
*docker help查看所有命令
镜像的相关命令:涉及构建,加载,拉取,推送,查看
容器的相关操作:运行(注意点:1.端口映射),暂停,停止,查看(包括:容器的运行日志;所有运行的容器的状态)
数据卷相关命令:如增删改查
docker volumn inspect html:查看html数据卷的详细信息,其中重要的是该数据卷在centos中的实际位置。
***数据卷的挂载,具体如下
***宿主机目录(文件)直接挂载到容器的目录(文件),特点:可以自己设置细节,而不让数据卷自己管理
五.自定义镜像
mysql的镜像结构(分层是为了能够复用,除了上下两层可以确定,中间的设计不确定了)如图所示:
Dockerfile实现自定义镜像
六.docker的实战?
eg1:进入Nginx容器,修改HTML文件内
两种方法:1.直接进入容器内进行修改;2.先进行数据的挂载,在数据卷中进行修改
若是想找到nigx对应的真实目录,只有编写该nginx镜像的作者知道,需要查看说明文档
eg2:操作mysql容器,将宿主机目录直接挂载到容器,详细操作如下图
mysql中需要修改操作的两个目录:data目录和conf目录,只需要挂载这两个即可,详细命令如下图:
注:在centos中mysql的配置文件是分散的,因为mysql的配置文件比较复杂,有时我们只挂载一部分配置文件到宿主机中,剩下的继续使用sql容器中的配置。conf.d一般用来防止扩展的配置,需只要该目录下的配置文件是以.d结尾,就可以被mysql扫描到。
以上内容是对黑马对应课程和资料的个人总结,仅为个人笔记,可能存在部分偏差!