当一个系统开发完成,需要将系统打包为一个镜像文件,让docker能够运行该镜像,成为一个可以被访问的容器。
上述操作可以通过自定义镜像的方式来实现,本文章基于VMware虚拟机中安装的Centos7操作系统来完成。前面的操作步骤,可以参考之前的文章:
VMware下Centos7安装步骤-CSDN博客
Linux安装Docker-CSDN博客
Docker快速安装Tomcat-CSDN博客
1.Dockerfile是什么
Dockerfile是image镜像的描述文件,文件中的内容是基于docker的一些操作命令,作用是为了完成一个新镜像的制作。文件内容参考如下:
这个文件有点像linux中的sh脚本,像Windows系统的bat文件。
2.准备网站
创建文件夹docker-web,里面有一个html文件,html文件中写了一行代码。
html文件内容:
假设index.html就是已经开发好的网站。
3.编写Dockerfile文件
创建名为Dockerfile的文件,不要有扩展名。
Dockerfile文件里面写入如下内容:
#利用FROM命令设置基准镜像
FROM tomcat:latest
#cd /usr/local/tomcat/webapps
WORKDIR /usr/local/tomcat/webapps
#ADD用于复制本地文件到镜像中
ADD docker-web ./docker-web
内容解读:
1.新的镜像一般是基于已有镜像进行扩展,得到新的镜像文件。所以当前要创建的新镜像,是基于docker中已有的Tomcat镜像扩展而来。FROM tomcat意思是来自tomcat镜像,后面的 :latest,是tomcat镜像的版本号,这些信息通过docker images命令可以查询到。
2.查看tomcat镜像的目录结构,用于存放docker-web网站文件。
docker ps命令,查看可用容器:
可以查到tomcat容器是可用的,容器编号为:34ce86016c65
通过命令来创建可以与容器内部交互的ssh终端(简单说就是进入到容器的目录中)。
docker exec -it 容器编号 /bin/bash
进入容器内部,可以看到webapps目录,这个目录就是用来存放网站的目录,只有把网站文件放到这个目录下,才能够被访问。所以要把提前准备的网站放到该目录中。
所以就有了第二行的命令 WORKDIR /usr/local/tomcat/webapps,WORKDIR意思就是工作目录,像cd命令。将当前的工作目录跳转到/usr/local/tomcat/webapps中。
3.ADD命令是将文件复制到镜像中。
先把需要的文件放到/usr/local目录中,然后通过ADD命令复制到镜像中。
4.构建镜像
如果当前目录是在镜像里面,使用exit命令,退出镜像目录,然后将路径切换到Dockerfile所在的目录中,执行创建镜像的命令:
docker buildx build -t mywebapp:v1.0 .
mywebapp 是镜像的名称,v1.0是自定义的镜像版本,后面是Dockerfile所在目录(点代表当前目录)。
通过执行过程可以看到,做了三步操作:设置基准镜像、设置工作目录、复制文件。
通过docker images查看已经存在的镜像。
5.运行镜像
通过命令运行镜像,创建容器。
docker run -d -p 8001:8080 5c8c8b36e966
8001:8080,代表用8001端口映射容器内部的8080端口。5c8c8b36e966是镜像的ID。
查看运行中的镜像:
docker ps
6.访问网站
浏览器地址栏输入ip:端口/网站名称/页面名称
到此为止,自定义了一个新的镜像(mywebapp),并运行了镜像,利用镜像创建容器。