可视化
这样我们就已经安装成功了。
我们一般选择本地的。
然后我们就可以看到这样的面板。
不过这个我们平时不会去使用,只是作为了解即可。
镜像分层的理解:
如何提交一个自己的镜像。
Commit镜像
实战测试
我们现在启动了tomcat。
我们进入了tomcat控制台。
这步操作上一次笔记已经讲解过了。
然后我们就要去使用它了。
我们就可以登录到我们的tomcat页面了。
4. 将我们操作过的容器通过commit提交为一个镜像,我们以后就使用我们修改过的镜像即可,这就是我们自己的一个修改的镜像
到了这里我们才算入门docker。
总结一句话:容器的持久化和同步操作!容器间也是可以数据共享的!
使用数据卷
方式一:直接使用命令来挂载 -v
我们会发现我们的环境中就多了测试这个文件夹。
我们看完了虚拟机本机中的以后,我们再来看看我们的容器的home文件夹下有什么:
我们会发现我们的容器的home文件夹下什么都没有:
我们现在要做的事情就是我们以后在容器home下做的操作也能同步到 虚拟机本机中的home下面。
测试文件的同步:
我们在容器里创建的文件会同步到本机对应的文件夹中去。
我们先关闭容器:
我们在本地去修改test.java文件里面的内容。
现在我们再重新打开我们的容器看里面有没有什么变化:
这就可以看出我们的文件是双向绑定的。
好处:我们以后修改只需要在本地修改即可,容器内会自动同步!
实战:安装MySql
思考:MySQL的数据持久化的问题
1.获取镜像:
2.运行容器,需要做数据挂载
启动我们的Mysql
注:
这样我们在本地也能进行连接打开了。
我们的本地就已经有mysql了。这就可以证明和我们的docker容器是同步的了。
然后我们再去在navicat中去创建一个数据库表test。
再去虚拟机中看一下:
那我们去把我们的mysql删除掉呢?
我们的数据依旧没有丢失,这就实现了一个数据的持久化。
查看所有的volume(卷)的名字:
这种-v只写了容器内的路径,没写容器外的路径,就是我们的匿名挂载。
具名挂载:
通过-v 卷名:容器内路径
查看一下卷:
所有的docker容器内的卷,没有指定目录的情况下都是在 /var/lib/docker/volumes/xxxx/_data
我们通过具名挂载可以方便的找到我们的一个卷,大多数情况下在使用具名挂载
如何确定我们的是匿名挂载,具名挂载还是我们指定路径挂载
-v 容器内路径 匿名挂载
-v 卷名:容器内路径 具名挂载
-v /宿主机路径::容器内路径 指定路径挂载
拓展:
初识Dockerfile
Dockerfile就是用来构建docker镜像的构建文件!命令脚本!先体验一下!
通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个个的命令,每个命令都是一层!
然后我们去来启动我们自己的数据卷:
查看卷的挂载路径:
测试一下刚才的文件是否同步出去了!
这种方式未来我们使用的非常多,因为我们通常会构建自己的镜像。
假设构建镜像时没有挂载卷,要手动镜像挂载 -v 卷名:容器内路径!
数据卷容器
多个mysql同步数据!
开启三个容器,用我们自己的数据卷去操作。
然后我们再去创建第二个容器:
我们就能看到数据的同步了。
我们再创建一个容器:
现在我们把容器1停止并删除:
但是我们的docker03还可以查看这个文件。