自己做微网站,黄埔区建设局网站,平台规划方案怎么写,网站备案没有了创建镜像有三种方法#xff0c;分别为基于已有镜像创建、基于本地模板创建以及基于Dockerfile创建。
一、基于现有镜像创建
创建nginx镜像#xff1a;
1、首先启动一个容器#xff0c;在容器里做修改 2、然后将修改后的容器提交为新的镜像#xff0c;需要使用该容器的 I…创建镜像有三种方法分别为基于已有镜像创建、基于本地模板创建以及基于Dockerfile创建。
一、基于现有镜像创建
创建nginx镜像
1、首先启动一个容器在容器里做修改 2、然后将修改后的容器提交为新的镜像需要使用该容器的 ID 号创建新镜像 使用docker commit命令提交成新的镜像常用选项 -m 说明信息 -a 作者信息 -p 生成过程中停止容器的运行 二、基于本地模板创建 先获取模板文件将本地容器导出为模板文件 docker export 或从网上下载现成的模板文件 再将模板文件导入成镜像docker import 三、基于Dockerfile 创建
1、基础概念
联合文件系统UnionFS
UnionFS(联合文件系统Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统它支持对文件系统的修改作为一次提交来一层层的叠加同时可以将不同目录挂载到同一个虚拟文件系统下。AUFS、OverlayFS 及 Devicemapper 都是一种 UnionFS。
Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承基于基础镜像没有父镜像可以制作各种具体的应用镜像。
特性一次同时加载多个文件系统但从外面看起来只能看到一个文件系统联合加载会把各层文件系统叠加起来这样最终的文件系统会包含所有底层的文件和目录。
我们下载的时候看到的一层层的就是联合文件系统。
2、镜像加载原理
Docker的镜像实际上由一层一层的文件系统组成这种层级的文件系统就是UnionFS。
bootfs主要包含bootloader和kernelbootloader主要是引导加载kernelLinux刚启动时会加载bootfs文件系统。
在Docker镜像的最底层是bootfs这一层与我们典型的Linux/Unix系统是一样的包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了此时内存的使用权已由bootfs转交给内核此时系统也会卸载bootfs。
rootfs提供系统环境在bootfs之上。包含的就是典型Linux系统中的/dev,/proc,/bin,/etc等标准目录和文件。rootfs就是各种不同的操作系统发行版比如Ubuntu,Centos等等。 3、dockerfile概述
镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本用这个脚本来构建、定制镜像那么镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。
dockerfile是一个文本文件其内包含了一条条的指令(Instruction)每一条指令构建一层因此每一条指令的内容就是描述该层应当如何构建。有了Dockerfile当我们需要定制自己额外的需求时只需在Dockerfile上添加或者修改指令重新生成 image 即可 省去了敲命令的麻烦。 dockerfile特点 1Dockerfile 中的每个指令都会创建一个新的镜像层 2镜像层将被缓存和复用 3当Dockerfile 的指令修改了复制的文件变化了或者构建镜像时指定的变量不同了对应的镜像层缓存就会失效 4某一层的镜像缓存失效它之后的镜像层缓存都会失效 5镜像层是不可变的如果在某一层中添加一个文件然后在下一层中删除它则镜像中依然会包含该文件只是这个文件在 Docker 容器中不可见了。 4、dockerfile 操作常用的指令
FROM指定基础镜像是Dockerfile的第一行指令MAINTAINER指定镜像维护人信息可选RUN 指定linux命令尽量将多条linux命令合并在一个RUN指令里用 ; 或 或 EOF 串起来使用EXPOSE 指定容器要开启的应用的端口号ENV 指定容器的环境变量ADD|COPY复制本地文件|目录到镜像里VOLUME 指定容器的匿名数据卷USER指定容器的运行用户WORKDIR指定后续镜像层的工作目录ARG指定构建镜像时传入的参数变量CMD|ENTRYPOINT指定容器启动时执行的命令和参数 如何使用Dockerfile构建镜像 1编写Dockerfile文件在第一行用 FROM 指令指定基础镜像 2用 MAINTAINER 指令指定镜像维护人信息可选 3用 RUN EXPOSE ENV ADD COPY 等指令编写构建镜像的过程 4在Dockerfile结尾用 CMD 或 ENTRYPOINT 指令指定容器启动时执行的命令 5用 docker build -t 镜像名:标签 . 命令来构建镜像 ADD 和 COPY 的区别 共同点都可以将本地的文件|目录复制到镜像里 区别ADD还可以通过URL地址下载文件并复制到镜像里还能将本地的压缩包解压后再复制到镜像里URL下载和压缩包解压特性不能同时生效即通过URL下载的压缩包只能以压缩包的形式复制到镜像里 CMD 和 ENTRYPOINT 的区别 共同点都可以用来指定容器的启动命令 区别ENTRYPOINT指定的容器启动命令优先级更高如果CMD和ENTRYPOINT同时存在那么CMD指定的内容将作为ENTRYPOINT指定的容器启动命令的选项或参数使用 容器启动命令的优先级 docker run --entrypoint命令 镜像里的ENTRYPOINT指令指定的命令 docker run .... 镜像 命令 镜像里的CMD指令指定的命令 5、dockerfile编写案例
①使用yum安装nginx ②使用源码编译安装nginx
FROM centos:7
ADD nginx-1.24.0.tar.gz /opt/
RUN yum -y install pcre-devel zlib-devel gcc gcc-c make \useradd -M -s /sbin/nologin nginx \cd /opt/nginx-1.24.0 \./configure --prefix/usr/local/nginx --usernginx --groupnginx --with-http_stub_status_module \make make installENV PATH$PATH:/usr/local/nginx/sbin/
EXPOSE 80
CMD [/usr/local/nginx/sbin/nginx, -g, daemon off;]