docker系列(五) :使用Dockerfile创建镜像案例

本文详细介绍如何使用Dockerfile创建Tomcat和Nginx镜像,包括准备软件包、编写Dockerfile、构建镜像及运行容器的全过程。通过精简JDK和自定义Nginx配置,实现轻量化镜像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker系列(五) :使用Dockerfile创建镜像案例

一、制作Tomcat镜像

1.准备好tomcat和jdk的压缩包,放入/docker目录,解压后重命名:

[root@192 docker]# tar -zxvf apache-tomcat-8.0.47.tar.gz 
[root@192 docker]# tar -zxvf jdk-8u77-linux-x64.tar.gz 
[root@192 docker]# mv apache-tomcat-8.0.47 tomcat
[root@192 docker]# mv jdk1.8.0_77 jdk

2.删掉jdk文件夹下多余文件, 降低build的镜像大小

rm -rf /docker/jdk/*src.zip \
/docker/jdk/lib/missioncontrol \
/docker/jdk/lib/visualvm \
/docker/jdk/lib/*javafx* \
/docker/jdk/jre/lib/plugin.jar \
/docker/jdk/jre/lib/ext/jfxrt.jar \
/docker/jdk/jre/bin/javaws \
/docker/jdk/jre/lib/javaws.jar \
/docker/jdk/jre/lib/desktop \
/docker/jdk/jre/plugin \
/docker/jdk/jre/lib/deploy* \
/docker/jdk/jre/lib/*javafx* \
/docker/jdk/jre/lib/*jfx* \
/docker/jdk/jre/lib/amd64/libdecora_sse.so \
/docker/jdk/jre/lib/amd64/libprism_*.so \
/docker/jdk/jre/lib/amd64/libfxplugins.so \
/docker/jdk/jre/lib/amd64/libglass.so \
/docker/jdk/jre/lib/amd64/libgstreamer-lite.so \
/docker/jdk/jre/lib/amd64/libjavafx*.so \
/docker/jdk/jre/lib/amd64/libjfx*.so

3.进入/docker目录, 在当前目录下创建Dockerfile文件

#使用的基础镜像
FROM centos
#作者信息
MAINTAINER by wanglinyong (wanglinyong@163.com)

#创建目录
RUN mkdir -p /java/jdk1.8.0_77
#把当前目录下的jdk文件夹添加到镜像
ADD jdk /java/jdk1.8.0_77

#创建tomcat目录
RUN mkdir -p /java/apache-tomcat-8.0.47
#把当前目录下的tomcat文件夹添加到镜像
ADD tomcat /java/apache-tomcat-8.0.47

#添加环境变量
ENV JAVA_HOME /java/jdk1.8.0_77
ENV CATALINA_HOME /java/apache-tomcat-8.0.47
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

#暴露8080端口
EXPOSE 8080

#启动时运行tomcat
CMD ["/java/apache-tomcat-8.0.47/bin/catalina.sh","run"]

4.开始构建docker镜像文件

[root@192 docker]#docker build -t centos-tomcat8:0.0.1 .

-t 设置tag名称, 命名规则registry/image:tag

. 表示使用当前目录下的Dockerfile文件

出现Successfully built b2fb42f77ca7,说明镜像创建成功,镜像创建完成之后,查看当前宿主机镜像列表

[root@192 docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos-tomcat8      0.0.1               ba6111759e00        49 seconds ago      398 MB
docker.io/centos    latest              5182e96772bf        2 months ago        200 MB

5.根据centos-tomcat8镜像创建一个容器并启动(如果有需要可以创建数据卷)

docker run -d -p 8081:8080 --name test-tomcat centos-tomcat8:0.0.1

其中

-d 后台运行

-p 宿主机port:容器port (端口映射)

--name 容器名称

然后直接访问http://192.168.120.133:8081/即可出现tomcat首页,如下

enter image description here

如果访问不了的话, 可能开了防火墙,需要开放8081端口

二、制作Nginx镜像

1.创建/docker/nginx目录

[root@192 docker]# cd /docker
[root@192 docker]# mkdir nginx
[root@192 docker]# cd nginx/

2.将nginx镜像相关文件放入/docker/nginx目录下,在当前目录下创建Dockerfile:

#使用的基础镜像
FROM centos
#作者信息
MAINTAINER by wanglinyong (wanglinyong@163.com)

WORKDIR /usr/local/src
#安装wget
RUN yum install -y  wget
#下载并解压源码包
RUN wget http://nginx.org/download/nginx-1.8.0.tar.gz
RUN tar -zxvf nginx-1.8.0.tar.gz
WORKDIR nginx-1.8.0
#编译安装nginx
RUN yum install -y gcc make pcre-devel zlib-devel
RUN ./configure   --prefix=/usr/local/nginx   --with-pcre
RUN make
RUN make install

#修改Nginx配置文件,以非daemon方式启动
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf

#设置生成容器时需要执行的脚本
CMD ["/usr/local/nginx/sbin/nginx"]
#开放22、80、443端口
EXPOSE 22
EXPOSE 80
EXPOSE 443

需要注意的是:在Dockerfile文件中切换当前目录不可以用“cd”命令,而要改用“WORKDIR”

3.开始构建docker镜像文件

[root@192 docker]#docker build -t nginx:v1 .

出现Successfully built 993e39e8298f,说明镜像创建成功,镜像创建完成之后,查看当前宿主机镜像列表

[root@192 nginx]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               v1                  993e39e8298f        31 seconds ago      368 MB
centos-tomcat8      0.0.1               8ef49d4cc08c        33 minutes ago      398 MB
docker.io/centos    latest              5182e96772bf        2 months ago        200 MB

4.根据nginx镜像创建一个容器并启动(如果有需要可以创建数据卷)

[root@localhost nginx]#docker run -d -p 10022:22 -p 8001:80 -p 4443:443 nginx:v1

然后直接访问http://192.168.120.133:8001/即可出现Nginx的欢迎页面,如下

enter image description here

访问我的达人课

访问我的博客 Wang's Blog

关注我的微信公众号获取更多资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坏菠萝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值