网站设计代做,网络科技公司 网站建设,网推赚钱项目,wordpress客户端连接数据库为什么一个centos镜像只有两百多兆#xff0c;而tomcat镜像五百多兆1.先说说操作系统操作系统组成部分#xff1a;进程调度子系统进程通信子系统内存管理子系统设备管理子系统文件管理子系统网络通信子系统作业控制子系统Linux文件系统由bootfs和rootfs两部分组成bootfs…为什么一个centos镜像只有两百多兆而tomcat镜像五百多兆1.先说说操作系统操作系统组成部分进程调度子系统进程通信子系统内存管理子系统设备管理子系统文件管理子系统网络通信子系统作业控制子系统Linux文件系统由bootfs和rootfs两部分组成bootfs包含bootloader(引导加载程序)和 kernel(内核)rootfs root文件系统包含的就是典型 Linux 系统中的/dev/proc/bin/etc等标准目录和文件不同的linux发行版bootfs基本一样而rootfs不同如ubuntucentos等2.而Docker镜像是由特殊的文件系统叠加而成最底端是 bootfs并使用宿主机的bootfs-复用第二层是 root文件系统rootfs,称为base image然后再往上可以叠加其他的镜像文件统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统为这些层提供了一个统一的视角隐藏多层的存在我们看来只是存在一个文件系统。所以当我们安装的tomcat镜像大小是五百多兆 是因为里面还包含了jdk和centos的镜像而centos镜像复用了宿主机的bootfs 下载的只有rootfs 所以小很多一个镜像可以放在另一个镜像的上面。位于下面的镜像称为父镜像最底部的镜像成为基础镜像。所以tomcat-》jdk(父镜像)-》centos(基础镜像) 所以整个向外暴露就是五百多兆镜像只读 当从一个镜像启动容器时 所以docker会在镜像上面加载一个可读可写的文件系统作为容器docker镜像本质就是一个分层系统3.镜像制作 注意容器转镜像 容器里面文件不会消失 但是容器挂载的镜像卷会消失容器转为镜像 docker commit 容器id 镜像名称:版本号镜像压缩(镜像不能传输 所以做好的镜像) docker save -o 压缩文件名称 镜像名称:版本号镜像压缩文件解压成镜像 docker load -i 压缩文件名称3.dockerfiledocker就是一个文本文件 包含了一条条的指令每一条指令构建一层基于基础镜像最终构建出一个新的镜像为开发、测试。运维提供完全一致的开发环境 只需要通过一个dockerfile文件构建出相同的镜像4.dockerfile关键字FROM 指定父镜像 基于哪个镜像image构建RUN 容器创建的时候执行一段命令CMD 容器启动的时候执行的命令COPY 创建容器是复制文件到镜像ADD 添加文件到镜像还会自动解压 还可以添加远程的ENV 设置环境变量 启动容器时 -e参数可以覆盖ENV设置的环境变量VOIUME 启动容器时挂载目录到容器里面EXPOSE 暴露端口WORKDIR 设置进入容器时的路径案例需求 自定义一个centos7镜像 默认登录路径为/usr 并且可以使用vim定义父镜像FROM centos:7定义作者信息MAINTAINER itheima 执行安装vim命令 RUN yum install -y vim定义默认的工作目录WORKDIR /usr定义容器启动执行的命令CMD /bin/bash通过dockerfile构建镜像docker bulid –f dockerfile文件路径 –t 镜像名称:版本docker build -f ./centos_docker(dockerfile文件) -t mycentos:1.1(镜像名称和版本号) .(寻址路径)案例java程序做成一个镜像1.先package 打包成jar包 hello.jar2.创建一个hello_dockerfile 写入下面数据定义父镜像FROM java:8定义作者信息MAINTAINER itheima 将jar包添加到容器 ADD hello.jar app.jar定义容器启动执行的命令CMD java –jar app.jar通过dockerfile构建镜像docker bulid –f dockerfile文件路径 –t 镜像名称:版本