Docker--镜像(三)

 

Docker 镜像是什么?

镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包含代码、运行时、库、环境变量和配置文件。

UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统(Unite several directories into a  single virtual filesystem)Union 文件系统是Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

特性:一次同时加载多个文件系统,但从外面看只能看到一个文件系统,联合加载会把各层文件系统加起来,最终的文件会包含所有底层的文件和目录。

Docker镜像加载原理:

Docker的镜像实际上有一层一层的文件系统组成,这种层级文件系统UnionFS。

bootfs(boot File System)主要包含bootloader和Kernel,bootloader主要是引导加载kernl,Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含Boot加载和内核,当boot加载完成之后整个 内核都在内存中了,此时的内存使用权已有bootfs转交给内核,此时系统也会卸载bootfs。

rootfs(root file system),在bootfs之上。包含的典型Linux系统中,的 /dev,/proc,/bin,/etc 等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,CentOS,SUSE等。

pull 在下载的过程可以看到docker的镜像像是在一层一层的在下载。

分层镜像原因。

最大的好处是资源共享-

很多镜像都是从相同的Base镜像构建而来,那么宿主主机只需要在磁盘上保存一份base镜像

同时内存也只需要加载一份base镜像,就可以为所有容器服务了。而且镜像每一层都可以被共享。

Commit  操作

docker commit  提交容器副本使之成为一个新的镜像

docker commit -m =“提交的描述信息” -a = “作者” 容器ID 要创建的目标镜像名:【标签名】

在hub 上下载tomcat 镜像到本地并成功运行 docker run -it  -p 8888:8080 8888 tomcat 是docker 的端口 8080 是tomcat的口

  • —p 主机端口:docker 容器端口
  • —P 随机分配端口
  • i 交互
  • t 中断

其中 我的CentOS是 6.8  kernel 版本也旧 

kernel 升完级 并没有什么卵用 

所以就不能直接使用最新版的Tomcat 于是删掉 tomcat 镜像 重新 pull 

 docker pull tomcat:8.5.38

运行是 建议采用【镜像ID】运行 不然 运行tomcat 它就给你升级为最新版本的

 

手机和电脑端都可以访问到(手机和电脑要在同一个局域网内才行) 

-P 随机分配端口

[root@localhost ~]# docker run -it -P 9a33fda94265


 

提交以自己的模版 

删除带有docs的 tomcat 之后进行commit  实例是一个没有文档的容器

以它为模版commit一个没有 doc的tomcat新景象  lyp/tomcat1.0

  docker commit -a="lyp" -m= "tomcat without docs" 【镜像ID】 lyp/mytomcat:1.0

当前的tomcat 运行是

lyp/tomcat02   lyp 是一个命名空间

 docker commit 提交容器副本使之成为一个新的镜像(生成自己想搞镜像副本)

[root@localhost ~]# docker commit -a="lyp" -m="tomcat without docs" 068938a66749 lyp/mytomcat:1.0

把docker正在运行的所有进程都给关掉

 [root@localhost ~]# docker rm -f $(docker ps -q)

 

生成自己的模板


docker commit -a="lyp" -m="tomcat without docs" 068938a66749 lyp/mytomcat:1.0

删除docker 运行的所有进行

docker -rm -f $(docker ps -q)

 以后台的方式进行启动一个tomcat

[root@localhost ~]# docker run -d -p 8888:8080 91c213798147

以前台的方式运行

docker run -it -p 9999:8080 9a33fda94265

猜你喜欢

转载自blog.csdn.net/qq_35361859/article/details/108690424