0%

Docker使用Dockerfile创建Centos(tomcat+jdk)镜像

Docker构建镜像的方法主要有两种:

(1)使用docker commit 命令;
(2)使用docker build命令和Dockerfile文件(更为强大、灵活和常用);

本文主要介绍第二种方式。

1.创建DockerFile存储目录

mkdir -p /usr/local/lwl/DockerFiles/centos_tomcat/
mkdir -p –parents 需要时创建上层目录,如目录早已存在则不当作错误

2.下载jdk、tomcat安装包

upload successful

3.解压压缩包,并创建Dockerfile文件
1
2
3
4
5
6
tar -zxvf apache-tomcat-8.5.35.tar.gz  #解压tomcat
tar -zxvf jdk-8u161-linux-x64.tar.gz #解压jdk
rm -rf apache-tomcat-8.5.31.tar.gz #删除安装包
rm -rf jdk-8u161-linux-x64.tar.gz #删除安装包
touch Dockerfile #创建文件

操作完成之后,centos_tomcat目录内容如下:

upload successful

4.编写Dockerfile文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#指定基础镜像
FROM centos
#维护者信息
MAINTAINER lwl
#执行命令:创建目录
RUN mkdir -p /home/java/
#将jdk添加到镜像ubuntu的 /home/java/目录下,并命名为jdk
ADD jdk1.8.0_161 /home/java/jdk
#将apache-tomcat-8.5.35添加到镜像ubuntu /home/java/目录下,并命名为tomcat
ADD apache-tomcat-8.5.35 /home/java/tomcat


#配置环境变量
ENV JAVA_HOME /home/java/jdk
ENV CLASSPATH=$JAVA_HOME/bin
ENV CATALINA_HOME /home/java/tomcat
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

#暴露8080端口
EXPOSE 8080


#启动时运行tomcat
CMD ["/home/java/tomcat/bin/catalina.sh","run"]

FROM : 指定基础镜像,并且必须是第一条指令

MAINTAINER : 指定作者

RUN : 运行指定的命令

ADD : 复制命令,把文件复制到镜像中。

ENV : 设置环境变量

EXPOSE : 功能为暴漏容器运行时的监听端口给外部

CMD : 指定容器启动时运行的命令

5.构建Docker镜像

docker build -t reebotoo/centos_tomcat:V1 .
-t 设置tag名称, 命名规则registry/image:tag(若不添加版本号,默认latest)
. 表示使用当前目录下的Dockerfile文件(注意语句后面有一个点)

6.启动镜像,访问

docker run -d -p 8080:8080 --name kpi reebotoo/centos_tomcat:V1
-d 后台运行

-p 端口映射 宿主机port : 容器port

–name 指定容器运行名称
docker ps #查看当前运行的docker容器

upload successful

7.Docker 常用命令

docker ps #查看镜像启动的容器

1
2
3
docker start containerID/containerName #启动一个已有的容器
docker stop containerID/containerName #停止一个容器
docker restart containerID/containerName #重启一个容器

其中containerID为容器ID,containerName为容器名称
docker cp file containerID:/usr/local/ #复制宿主机文件到指定容器/usr/local/目录
docker exec -it containerID bash #进入容器内部文件系统

参考博客 <a href=”https://blog.csdn.net/qq_37936542/article/details/80824389"target="_blank">https://blog.csdn.net/qq_37936542/article/details/80824389