最低价网站建设,台州网站的优化,如何网络营销,青羊区区建设局网站目录 一、基于上次的nginx的Dockerfile做多级构建
二、基于上次的php的Dockerfile修改做多级构建
三、基于上次的mysql的Dockerfile修改做多级构建
基于以上三个镜像构建
四、镜像体积是不是越小越好#xff1f;为什么要缩减镜像体积#xff1f;
五、缩小镜像体积的方法…目录 一、基于上次的nginx的Dockerfile做多级构建
二、基于上次的php的Dockerfile修改做多级构建
三、基于上次的mysql的Dockerfile修改做多级构建
基于以上三个镜像构建
四、镜像体积是不是越小越好为什么要缩减镜像体积
五、缩小镜像体积的方法有哪些 一、基于上次的nginx的Dockerfile做多级构建
[rootlocalhost nginx]#cp Dockerfile{,.bak}
[rootlocalhost nginx]#ls
Dockerfile Dockerfile.bak html nginx-1.24.0.tar.gz nginx.conf
##修改dockerfile
[rootlocalhost nginx]#vim Dockerfile##多级构建nginx镜像
[rootlocalhost nginx]#docker build -t nginx:lnmp .[rootlocalhost nginx]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx lnmp 4dca9c42d983 5 seconds ago 208MB
nginx centos cd7bd0d67d77 6 hours ago 560MB
centos 7 eeb6ee3f44bd 2 years ago 204MB FROM centos:7 as build
#基于centos7镜像
MAINTAINER nginx on centos7 by lxy-20240125
#注释信息
ADD nginx-1.24.0.tar.gz /opt/
#将nginx安装包传输到镜像中
RUN yum -y install pcre-devel zlib-devel gcc gcc-c make \cd /opt/nginx-1.24.0 \./configure --prefix/usr/local/nginx --usernginx --groupnginx --with-http_stub_status_module \make make install
#下载编译安装nginx的依赖环境以及创建nginx用户进入nginx目录中完成配置--编译--安装
ENV PATH$PATH:/usr/local/nginx/sbin/
#创建镜像的环境变量
ADD nginx.conf /usr/local/nginx/conf/nginx.conf
#将配置文件传输的镜像中,覆盖原有的nginx.conf文件
RUN chmod 777 -R /usr/local/nginx/html/
#修改权限FROM centos:7
#再次基于centos7
COPY --frombuild /usr/local/nginx /usr/local/nginx
#把第一阶段的安装目录复制到第二阶段
RUN useradd -M -s /sbin/nologin nginx
#必须的有个nginx用户
EXPOSE 80
#暴露80端口
CMD [/usr/local/nginx/sbin/nginx, -g, daemon off;]
#设置启动命令 二、基于上次的php的Dockerfile修改做多级构建
[rootlocalhost php]#cp Dockerfile{,.bak}
[rootlocalhost php]#ls
Dockerfile Dockerfile.bak php-7.1.10.tar.bz2 php-fpm.conf php.ini www.conf[rootlocalhost php]#vim Dockerfile
[rootlocalhost php]#docker build -t php:lnmp .[rootlocalhost php]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php lnmp 0e64d9300be2 About a minute ago 520MB
php centos 6ae7f531fd8a 4 hours ago 965MB FROM centos:7
#基础镜像为centos7
MAINTAINER this is php image lxy:20240125
#注释信息
ADD php-7.1.10.tar.bz2 /opt/
#将文件传输到镜像中
RUN yum -y install gd libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel gcc gcc-c make pcre-develgcc gcc-c make pcre-devel \
yum clean all \
cd /opt/php-7.1.10 \./configure \
--prefix/usr/local/php \
--with-mysql-sock/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip make -j 2 make install \
useradd -M -s /sbin/nologin nginx
#通过RUN依次下载php的依赖环境清理yum缓存
#进入文件配置--编译--安装
#创建nginx用户
COPY php.ini /usr/local/php/lib/php.ini
COPY php-fpm.conf /usr/local/php/etc/php-fpm.conf
COPY www.conf /usr/local/php/etc/php-fpm.d/www.conf
#将三个配置文件传输到镜像中FROM centos:7
RUN yum -y install gd libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel gcc gcc-c make pcre-develgcc gcc-c make pcre-devel \
yum clean all \
useradd -M -s /sbin/nologin nginx
COPY --from0 /usr/local/php /usr/local/php
EXPOSE 9000
#暴露9000端口
CMD [ /usr/local/php/sbin/php-fpm, -F ]
#启动 三、基于上次的mysql的Dockerfile修改做多级构建
FROM centos:7
#基于centos7镜像
MAINTAINER this is mysql image lxy
#注释信息
ADD mysql-boost-5.7.44.tar.gz /opt/
#将安装包和配置文件传输到镜像中
RUN yum -y install make gcc gcc-c ncurses ncurses-devel bison cmake openssl-devel \yum clean all \cd /opt/mysql-5.7.44/ \cmake \
-DCMAKE_INSTALL_PREFIX/usr/local/mysql \
-DMYSQL_UNIX_ADDR/usr/local/mysql/mysql.sock \
-DSYSCONFDIR/etc \
-DSYSTEMD_PID_DIR/usr/local/mysql \
-DDEFAULT_CHARSETutf8 \
-DDEFAULT_COLLATIONutf8_general_ci \
-DWITH_EXTRA_CHARSETSall \
-DWITH_INNOBASE_STORAGE_ENGINE1 \
-DMYSQL_DATADIR/usr/local/mysql/data \
-DWITH_BOOSTboost \
-DWITH_SYSTEMD1 make -j 2 make install
#依次安装依赖环境注意新版本必须要openssl环境注意提示报错查看
#清理yum缓存
#进入mysql解压包中完成cmake--编译--安装
FROM centos:7
COPY --from0 /usr/local/mysql /usr/local/mysql
COPY my.cnf /etc/my.cnf
RUN useradd -M -s /sbin/nologin mysql \chown mysql:mysql /etc/my.cnf \chown -R mysql:mysql /usr/local/mysql/ \/usr/local/mysql/bin/mysqld \
--initialize-insecure \
--usermysql \
--basedir/usr/local/mysql \
--datadir/usr/local/mysql/data
#创建一个mysql用户
#修改配置文件的权限
#修改安装目录的权限
#直接用命令启动mysql
ENV PATH/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
#配置环境变量
EXPOSE 3306
#暴露端口
CMD [/usr/local/mysql/bin/mysqld]
#设置默认启动命令 基于以上三个镜像构建 四、镜像体积是不是越小越好为什么要缩减镜像体积
核心降本增效以及安全
容器是镜像运行起来的实例容器是宿主机的一个进程那么肯定是镜像越小越好
镜像越小说明占用宿主机的磁盘、内存资源越少节约资源镜像越小说明需要处理的文件越少构建越快提高效率镜像越小那么可以被攻击的面越小就越安全。
五、缩小镜像体积的方法有哪些
1尽量使用体积小的基础镜像比如alpine这是专门为容器创建的
2尽量减少dockerfile的指令因为每一条指令对应一层文件系统镜像是一层一层文件系统叠加的整体文件系统对外展现为一个整体
3RUN指令的最后可以清理一下yum缓存清理一下安装包等
4COPY尽量放在RUN后面docker可以更好使用缓存功能
5使用.dockerignore文件将不复制的文件定义在文件中
6容器镜像里一般只运行单个应用这样体积更小也更好管理
7使用多阶段构建 FROM 第一构建阶段的基础镜像 as 别名
....
FROM 第二构建阶段的基础镜像
COPY --from别名|阶段ID(第一阶段为0) 第一阶段构建的文件|目录 当前阶段的路径
....
CMD|ENTRYPOINT 指定启动命令 在mysql镜像构建过程中的报错 No space left on device 表示磁盘空间不足当前是虚拟机测试环境虚拟机只给了40G没想到报错也查看挂载点使用量确实是磁盘空间不够了。这个时候直接重新换一台主机太难受了然后通过逻辑卷扩容实现的