Dockerfile基本介绍与使用
前言
—、Dockerfile介绍
二、使用Dockerfile 实现自建镜像
1.自建Nginx镜像
2.自建Tomcat镜像
前言
在日常工作中,大家应该都或多或少的使用过很多镜像,但是不知道大家在使用的时候,有没有想过我们使用的镜像,是如何生成的,以及镜像里面的环境信息等。其实啊,不管是在哪拉取的镜像,这些镜像都是由Dockerfle提前构建好的,并且镜像里面的一些环境信息都是由镜像作者自己配置的。所以说在有些情况下,我们自己使用Dockerfile 来构建的镜像,效果可能更好。
一、Dockerfile介绍
Dockerile 是由一组指令组成的文件,其中每条指令对应Linux中的一条命令,并且支持以舂开头的注释行;一般来说,Dockerfile结构大致分为四个部分:基础镜像、维护者信息、镜像操作指令和容器启动时的运行命令。Dockerfile 官方介绍
我们前面说的Docker是由一系列的层组成,这里的层,就是我们Dockerfle文件中运行的指令,每条指令相当于说都是一个层,并且会进行累加,也就是说,当我们运行的指令过多时,生成出来的镜像便会很大。
Dockerfile常见的操作指令:
二、使用Dockerfile 实现自建镜像
准备工作:
- 这里博主直接使用的是前面文章中的 Docker 环境:传送门
1.自建Nginx镜像
1)编写Dockerfile文件
[root@Docker ~]# mkdir nginx [root@Docker ~]# cd nginx/ [root@Docker nginx]# wget http://nginx.org/download/nginx-1.18.0.tar.gz [root@Docker nginx]# vim Dockerfile # 配置基础镜像 FROM dadoha/centos7.4.1708 # 配置作者信息 MAINTAINER [河北彭于晏] # 安装相关软件包 RUN yum clean all && yum -y install proc-devel net-tools gcc zlib zlib-devel make openssl-devel wget # 将 Nginx 软件包传到容器中 ADD nginx-1.18.0.tar.gz /usr/src/ # 配置工作目录 WORKDIR /usr/src/nginx-1.18.0/ # 进行编译安装 RUN ./configure --prefix=/usr/local/nginx && make && make install # 开启端口 EXPOSE 80 443 # 修改 Nginx 配置文件. 以非 Daemon(后台) 方式启动 RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf # 复制启动脚本 COPY run.sh / RUN chmod 755 /run.sh # 运行启动脚本 CMD ["/run.sh"]
2)配置启动脚本
[root@Docker nginx]# cat <<END > run.sh #!/bin/bash /usr/local/nginx/sbin/nginx END
3)生成镜像
[root@Docker nginx]# docker build -t nginx:1.18 .
4)启动容器并验证
[root@Docker nginx]# docker images | grep 1.18 [root@Docker nginx]# docker run -d --name Nginx -p 31888:80 nginx:1.18
2.自建Tomcat镜像
1)下载相关软件包
[root@Docker ~]# mkdir tomcat [root@Docker ~]# cd tomcat [root@Docker tomcat]# ls apache-tomcat-8.5.32.tar.gz jdk-8u181-linux-x64.tar.gz
2)编写Dockerfile文件
[root@Docker tomcat]# vim Dockerfile FROM dadoha/centos7.4.1708 MAINTAINER [河北彭于晏] ADD jdk-8u181-linux-x64.tar.gz /usr/local/ ENV JAVA_HOME /usr/local/jdk1.8.0_181 ENV PATH $PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin ENV CLASSPATH $JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar ADD apache-tomcat-8.5.32.tar.gz /usr/local/ EXPOSE 8080 ADD run.sh / RUN chmod 755 /run.sh CMD ["/run.sh"]
3)配置启动脚本
[root@Docker tomcat]# cat <<END > run.sh #!/bin/bash /usr/local/apache-tomcat-8.5.32/bin/startup.sh tailf /run END
4)生成镜像
[root@Docker tomcat]# docker build -t tomcat:8.5.32 .
5)启动容器并验证
[root@Docker tomcat]# docker run -d --name tomcat -p 8888:8080 tomcat:8.5.32