阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Docker构建Tomcat镜像+Nginx镜像

198次阅读
没有评论

共计 3778 个字符,预计需要花费 10 分钟才能阅读完成。

Dockerfile 介绍

Dockerfile 是由一组指令组成的文件,每条指令对应 linux 中一条命令,Docker 程序将读取 Dockerfile 中的指令生成指定镜像。
Dockerfile 大致结构:基础镜像信息、维护者信息、镜像操作指令、容器启动时执行指令。每行支持一条指令,每条指令可以携带多个参数,支持以 # 开头的注释。
Dockerfile 操作指令:

FROM 镜像:指定新的镜像所基于的镜像
MAINTAINER 名字:说明新镜像的维护人
RUN 命令:在所基于的镜像上执行命令,并提交到新的镜像中
CMD [“ 要运行的程序 ”,” 参数 1 ″,” 参数 2 ”] : 指定启动容器时要运行的命令或脚本
EXPOSE 端口号:指定新镜像加载到 Docker 时要开启的端口
ENV 环境变量 变量值:设置一个环境变量的值,会背后面的 RUN 用到
ADD 源文件 / 目录 目标文件 / 目录:将源文件复制到目标文件,源文件和 Dockerfile 位于同一目录
COPY 源文件 / 目录 目标文件 / 目录:将本地主机的源文件复制到目标目录,源文件和 Dockerfile 位于同一目录
VOLUME[“ 目录 ”]:在容器中创建一个挂载点
USER 用户名 /UID:指定运行容器时的用户
WORKDIR 路径:为后续的 RUN、CMD、ENTRYPOINT 指定工作目录
ONBUILD 命令:指定所生成的镜像作为一个基础镜像时所要运行的命令。

构建 Tomcat 镜像
创建工作目录以及下载解压安装包

[root@test3 ~]# docker pull CentOS  基础镜像
[root@test3 ~]# mkdir  tomcat
[root@test3 ~]# mv apache-tomcat-8.5.34.tar.gz tomcat/
[root@test3 ~]# mv jdk-8u181-linux-x64.tar.gz tomcat/
[root@test3 ~]# cd tomcat/
[root@test3 tomcat]# tar xvf apache-tomcat-8.5.34.tar.gz
[root@test3 tomcat]# tar xvf jdk-8u181-linux-x64.tar.gz

创建 Dockerfile 文件

# vim Dockerfile  // 编写 Dockerfile

# 设置基础镜像
FROM centos
# 维护该镜像的用户
MAINTAINER this is tomcat image <sz>
# 安装 JDK 环境,设置其环境变量
ADD jdk1.8.0_181 /usr/local/Java
ENV JAVA_HOME /usr/local/java
ENV JAVA_BIN /usr/local/java/bin
ENV JRE_HOME /usr/local/java/jre
ENV PATH $PATH:/usr/local/java/bin:/usr/local/java/jre/bin
ENV CLASSPATH /usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar
ADD apache-tomcat-8.5.34  /usr/local/tomcat
# 开启端口
EXPOSE 8080

生成镜像:

[root@test3 tomcat]#  docker build -t tomcat:centos .
······
Removing intermediate container fe9e7d2565aa
Step 10/10 : EXPOSE 8080
 —> Running in 24dcbc4d1afc
 —> 214b8cfca21c
Removing intermediate container 24dcbc4d1afc
Successfully built 214b8cfca21c

运行并进入容器:

[root@test3 tomcat]# docker run –name tomcat01 -p 80:8080 -d -it  tomcat:centos /bin/bash

启动 Tomcat:

[root@test3 tomcat]# docker exec -it 8c5ce8dd /bin/bash
[root@8c5ce8dd9282 /]# /usr/local/tomcat/bin/startup.sh
······
Using CATALINA_BASE:  /usr/local/tomcat
Using CATALINA_HOME:  /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:      /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

测试:

Docker 构建 Tomcat 镜像 +Nginx 镜像

注:把镜像保存到本地

[root@test3 tomcat]# docker save -o centos_tomcat.tar  tomcat:centos

centos_tomcat.tar 为保存到本地后的包名
tomcat:centos 为被打包的对象镜像

如果在一台新机器还原 docker 镜像

[root@test2 ~]# docker load –input centos_tomcat.tar
······
Loaded image: tomcat:centos

构建 Nginx 镜像

1. 创建工作目录

[root@test3 ~]# docker pull centos    // 下载基础镜像
[root@test3 ~]# mkdir nginx
[root@test3 ~]# cd nginx/

创建 Dockerfile 文件

[root@test3 ningx]#  vim Dockerfile
# 设置基础镜像
FROM centos
# 维护该镜像的用户
MAINTAINER this is nginx image <sz>
# 安装环境 下载软件包 并解压
RUN yum install -y wget proc-devel net-tools gcc zlib zlib-devel make openssl-devel
RUN wget https://nginx.org/download/nginx-1.14.0.tar.gz
RUN tar xvf nginx-1.14.0.tar.gz
# 工作目录 编译安装
WORKDIR nginx-1.14.0
RUN ./configure –prefix=/usr/local/nginx && make && make install
# 开启 80 和 443 端口
EXPOSE 80
EXPOSE 443
# 修改配置文件,以非 deamon 方式启动
RUN echo “daemon off;”>>/usr/local/nginx/conf/nginx.conf
# 复制服务脚本并设置权限
WORKDIR /root/nginx
ADD run.sh /run.sh
RUN chmod 755 /run.sh
# 启动容器时执行脚本
CMD [“/run.sh”]

执行脚本

[root@test3 ningx]# vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx

生成镜像

[root@test3 ningx]# docker build -t nginx:new .
······
Step 13/14 : RUN chmod 755 /run.sh
 —> Running in ad6e4604aede

 —> 979f95edc03b
Removing intermediate container ad6e4604aede
Step 14/14 : CMD /run.sh
 —> Running in 8f1209324969
 —> a0bdb7bb13ad
Removing intermediate container 8f1209324969[root@test3 ningx]# docker run -d -P nginx:new
f2855c4f4732435cfa3a8c9e17af8540c874577228f8276013260b2d9474e50b[root@test3 ningx]#  docker ps -a
CONTAINER ID        IMAGE              COMMAND            CREATED            STATUS              PORTS                                          NAMES
f2855c4f4732        nginx:new          “/run.sh”          6 seconds ago      Up 4 seconds        0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp  clever_gates

测试

Docker 构建 Tomcat 镜像 +Nginx 镜像

注:把镜像保存到本地

[root@test3 ~]# docker save -o centos_nginx.tar  nginx:new

centos_nginx.tar 为保存到本地后的包名
nginx:new 为被打包的对象镜像

如果在一台新机器还原 docker 镜像

[root@test2 ~]# docker load –input centos_nginx.tar
······
Loaded image: nginx:new

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计3778字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中