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首页,如下
如果访问不了的话, 可能开了防火墙,需要开放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的欢迎页面,如下