宁海县建设局网站下属单位,人像摄影网站十大排名,wordpress运行速度,it外包公司怎么接项目dockerfile#xff1a;创建镜像的方式#xff0c;船舰自定义的镜像
包括配置文件#xff0c;挂载点#xff0c;对外暴露的端口#xff0c;设置环境变量
docker创建镜像的方式
1、基于已有镜像进行创建。
根据官方提供的镜像源#xff0c;创建镜像#xff0c;然后拉起…dockerfile创建镜像的方式船舰自定义的镜像
包括配置文件挂载点对外暴露的端口设置环境变量
docker创建镜像的方式
1、基于已有镜像进行创建。
根据官方提供的镜像源创建镜像然后拉起容器只能提供基础的功能扩展性的功能还是需要自定义进入容器进入操作
2、基于模板进行创建
3、dockerfile
联合文件系统UnionFSdocker镜像的基础
镜像通过分层进行继承特性一次同时可以加载多个文件系统但是从外面来看就是一个文件系统。
docker镜像实际上就是由一层一层的文件系统组成这种层级的文件系统就是UnionFS
每一层都是layers每一层都包含文件系统的一部分这些层次叠加在一起最终形成的就是rootfs
bootfs宿主机提供的内核和引导程序
rootfs即使容器的操作系统载dockerfile中我们可以自己指定
rootfs是多个基础镜像和应用镜像结合起来的只读层镜像实际上就是一个只读文件
容器基于镜像实例运行起来之后容器变成可读可写层 在dockerfile当中每创建一个指定都是一个镜像层
镜像层会被缓存和复层 一旦有一层镜像失败所有的镜像层都会失败镜像也不会创建。
一旦定义好了镜像层是不可变的你在某一层当中添加一个新的命令但是下一层删除了指令镜像中基于这个命令创建的文件依然存在但是在容器中看不到
1、touch 123
dockerfile的核心用户的个性化定制docker的镜像 dockerfile的结构
1、基础镜像信息
2、维护者信息
3、镜像的操作指令
4、容器启动时执行的命令
nginx定义好了容器执行的命令 /bin/bash,覆盖了容器内的标准输出 dockerfile的语法
FROM:就是指定基础镜像信息吗指定容器的操作系统。
MAINTAINER:指定维护者信息可有可无
RUN:在基础的镜像上执行的命令每个run就是一层分层越多镜像越大
ENRYPOINT:设置容器运行时的默认命令(理解为容器内部运行的主程序)
CMD指定容器运行时的默认命令(docker run 后面加了其他的命令cmd的指令将会被覆盖)
EXPOSE:暴露端口指定容器的运行端口
ENV设置环境变量环境变量可以被RUN命令使用声明容器运行需要的环境变量
ADD复制和解压解压不支持.zip和.tar 只能解压tar.gz tar.bz2可以支持url地址解压和复制
COPY复制文件不能解压而且只能复制本地文件文件要和dockerfile在一个目录官方推荐复制用copy
VOLUME:创建一个容器内的挂载点既可以为宿主机挂载也可以供容器挂载。
USER:设置运行镜像时使用的用户或者UID可以不加
WORKDIR:为后续指令设置的工作的目录
ONBUILD:这个镜像可以被其他镜像引用需要这个命令
ARG传参用于创建容器时传递参数。ENV用于容器运行时设置环境变量。
CMD和ENTRYPOINT的区别
都是可以为作为容器启动时的默认命令
区别
1、CMD可以把参数传给ENTRYPOINT
2、多个ENTRYPOINT和多个CMD只会运行最后一个一个dockerfile当中只会有一个ENTRYPOINT和cmd
3、ENTRYPOINT的指令不会被覆盖CMD的指令如果在docker run后面加上输出会被覆盖
4、ENTRYPOINT的指令在容器启动时执行都会成为容器的主进程主进程负责接收信号处理容器的声明周期主进程退出容器也讲终止运行 RUN命令的优化:
主要是减少镜像的层数把多个run命令写在一块。
符号
RUN yum -y install nginx make -j 4 make install
前一个命令执行成功才会执行下一个命令。
可以使用;符号:
RUN yum -y install nginx ; make -j 4 ; make install
不管前一个命令是否成功后面的命令都会执行
||符号
如果前一个命令执行失败才会执行下一个命令
反斜杠\:换行
RUN yum -y install nginx \ maker -j 4 \ make install
可读性更高 copy和add之间区别
copy和add都可以把本地文件复制到镜像中 但是官方推荐如果是复制使用copy
区别add可以解压如果是一个压缩问价add在复制后会自动解压(tar.gz和tar.bz2)可以支持URL下载源文件只能支持下载但是不能解压通过URL拷贝的文件无法自动解压
copy只能复制而且只能是本地文件不支持URL路径
centos7构建一个apache的dockerfile(编译安装): docker build -t nginx:wqb5 .
docker run -itd --name nginx8 -p 1212:80 nginx:wqb5
FROM centos:7 AS first
MAINTAINER this is my apache wqb
RUN yum -y install gcc gcc-gcc make pcre pcre-devel expat-devel perl
ADD apr-1.6.2.tar.gz /opt
ADD apr-util-1.6.0.tar.gz /opt
ADD httpd-2.4.29.tar.bz2 /opt
RUN mv /opt/apr-1.6.2 /opt/httpd-2.4.29/srclib/apr mv /opt/apr-util-1.6.0 /opt/httpd-2.4.29/srclib/apr-util \
cd /opt/httpd-2.4.29 \ ./configure --prefix/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi \
make -j 4 make install#二层构建FROM centos:7COPY --fromfirst /usr/local/httpd /usr/local/httpdRUN yum -y install pcre pcre-devel expat-devel perlEXPOSE 80
CMD [/usr/local/httpd/bin/apachectl,-D,FOREGROUND]