Docker构建Tomcat镜像+Nginx镜像

2022-07-19 16:46:38 浏览数 (1)

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.

测试:

注:把镜像保存到本地

[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

测试

注:把镜像保存到本地

[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

0 人点赞