【Docker】使用Dockerfile构建镜像

目录

一.使用使用Dockerfile构建tomcat镜像

1.通过ARG传参构建不同版本的tomcat

二.缩小镜像的体积大小

1.使用较小体积的基础镜像

2.多级构建减少体积


一.使用使用Dockerfile构建tomcat镜像

cd /opt
mkdir tomcat
cd tomcat/
上传tomcat所需的依赖包
 
vim Dockerfile
FROM centos:7
LABEL function="tomcat image" author="tc" createtime="2024-07-16"
 
ADD jdk-8u391-linux-x64.tar.gz /opt/
ENV JAVA_HOME=/opt/jdk1.8.0_391
ENV CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
ENV PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
 
ADD apache-tomcat-9.0.16.tar.gz /opt/
EXPOSE 8080
CMD ["/opt/apache-tomcat-9.0.16/bin/catalina.sh", "run"]
 
 
docker build -t tomcat:9.0 .   #构建镜像
docker images   #查看镜像
docker run -d --name a1 -p 1314:8080 tomcat:9.0   #启动容器

浏览器访问验证:http://192.168.80.101:1314

1.通过ARG传参构建不同版本的tomcat

基于上文构建tomcat镜像为基础

cd /opt/tomcat
vim Dockerfile
 
FROM centos:7
LABEL function="tomcat image" author="tc" createtime="2024-07-16"
 
ADD jdk-8u391-linux-x64.tar.gz /opt/
ENV JAVA_HOME=/opt/jdk1.8.0_391
ENV CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
ENV PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
 
ARG VER
ADD $VER /opt/tomcat
EXPOSE 8080
CMD ["/opt/tomcat/bin/catalina.sh", "run"]
 
 
docker build --build-arg VER=apache-tomcat-8.5.16 -t tomcat:8.5 . #构建8.5版本tomcat镜像
docker build --build-arg VER=apache-tomcat-9.0.16 -t tomcat:9.0 . #构建9.0版本tomcat镜像

docker run -d --name a1 -p 1314:8080 tomcat:8.5

docker run -d --name b1 -p 1315:8080 tomcat:9.0

浏览器验证

http://192.168.80.101:1314

http://192.168.80.101:1315

二.缩小镜像的体积大小

1.使用较小体积的基础镜像

以上文实验为基础

cd /opt/tomcat
mv Dockerfile Dockerfile.bak
 
vim Dockerfile
FROM openjdk:8-jdk-alpine
ARG VER
COPY $VER /opt/tomcat/
CMD ["/opt/tomcat/bin/catalina.sh", "run"]
 
 
docker build --build-arg VER=apache-tomcat-9.0.16 -t tomcat:9 .  #构建镜像
docker run -d --name a2 -p 1313:8080 tomcat:9

浏览器访问测试http://192.168.80.101:1313

2.多级构建减少体积

由于正常安装nginx体积很大

通过多级构建减少镜像体积

vim Dockerfile
FROM centos:7 as first   #为第一级构建镜像设置别名
 
ADD nginx-1.24.0.tar.gz /opt/
ADD CentOS-Base.repo /etc/yum.repos.d/
 
RUN yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make && \
    useradd -M -s /sbin/nologin nginx && \
    cd /opt/nginx-1.24.0/ && \
    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && \
    make && \
    make install
 
FROM centos:7      #开启第二级构建
COPY --from=first /usr/local/nginx/ /usr/local/nginx/     #copy --from 从其他构建阶级中复制源文件
RUN useradd -M -s /sbin/nologin nginx   #运行用户必要命令
 
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]
 
 
 
docker build -t nginx:v2 .
docker images
docker run -d --name c1 -p 80:80 nginx:v2
docker ps -a

浏览器访问验证:http://192.168.80.101:80

  • 17
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值