vlambda博客
学习文章列表

后台专栏(五)docker制作自己tomcat镜像

一、简介

本文记录如何用docker拉取centos镜像,并使用Dockerfiler制作自己的tomcat镜像,最后把制作的镜像推送到阿里云上。

二、拉取centos镜像

2.1 配置本地docker的仓库镜像

vi /etc/docker/daemon.json

# 在daemon.json里面加入下面这行
"registry-mirrors": ["https://***.mirror.aliyuncs.com"]

# 默认docker会从hub.docker.com这个国外的中央仓库拉镜像,国内访问会很慢
# 所以一般都会配置docker的仓库镜像,一般可以配的有中科大镜像,网易镜像(一样的地址),阿里云镜像(每个人一个地址)
# 阿里云的镜像,需要登录到阿里云上面,然后选镜像加速,每个人的加速链接都是不一样的,这也是上面我用***代替的原因,申请完换成你自己的地址

拉取镜像很简单,一行docker pull就可以了

docker pull centos

默认会拉取最新版本的,也即 centos:laster ,你也可以指定版本,比如 docker pull centos:centos7.4.1708

docker images可以看到拉下来的镜像

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              0d120b6ccaa8        2 months ago        215MB

三、Dockerfile制作自己的tomcat镜像

新建任意一个目录,作为Dockerfile的构建目录

mkdir -p /root/docker/my_tomcat

然后把安装tomcat需要的依赖包全部搞到这个目录,包括jdk,还有apache的tomcat包

[root@localhost my_tomcat]# pwd
/root/docker/my_tomcat
[root@localhost my_tomcat]# ll
total 196020
-rw-r--r--. 1 root root   9818695 Nov  7 21:22 apache-tomcat-9.0.8.tar.gz
-rw-r--r--. 1 root root        27 Nov  7 21:19 c.txt
-rw-r--r--. 1 root root       603 Nov  7 21:34 Dockerfile
-rw-r--r--. 1 root root 190890122 Nov  7 21:19 jdk-8u171-linux-x64.tar.gz

(这两个tar.gz从官网下载或者在网上搜一下下载)

两个tar.gz,一个是jdk的安装包,一个是tomcat的安装包,c.txt是随便弄的一个文本,只是为了学一下COPY 命令

重要的,看下Dockerfile内容

[root@localhost my_tomcat]# cat Dockerfile 
FROM centos # 这里是镜像的父镜像,就是说我们是在centos镜像基础上构建tomcat镜像,所以 FROM centos
MAINTAINER layu<[email protected]>  # 这里是作者,就是镜像的维护者的意思

COPY c.txt /usr/local/cincontainer.txt  # COPY命令,可以把当前目录下面文件复制到docker里面指定路径

ADD jdk-8u171-linux-x64.tar.gz /usr/local# ADD = COPY + 解压
ADD apache-tomcat-9.0.8.tar.gz /usr/local# ADD命令不仅复制进docker了,还包解压的

RUN yum -y install vim  # 安装vim,RUN 命令,可以执行linux命令,比如RUN echo hello

ENV MYPATH /usr/local # 设置环境变量

WORKDIR $MYPATH  # 指定登陆的落脚点,使用了上面定义的环境变量

ENV JAVA_HOME /usr/local/jdk1.8.0_171  # java需要的一些环境变量配置
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.8 # tomcat需要的一些环境变量的配置
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.8
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin # 都添加到path下


EXPOSE 8080 #暴露8080端口

CMD ["/usr/local/apache-tomcat-9.0.8/bin/catalina.sh","run"#最后执行命令,运行tomcat命令

然后编译也很简单,当前目录docker build搞定

docker build -t my_tomcat:v0.1 .

build完之后就可以看到images了

root@localhost my_tomcat]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
my_tomcat           v0.1                33c8e1318c19        27 seconds ago      674MB
centos              latest              0d120b6ccaa8        2 months ago        215MB

试一下本地运行

docker run -p 8080:8080 my_tomcat:v0.1

浏览器打开8080,就可以看到那只猫了


四、推送到阿里云上面

制作镜像之后,我们推送到阿里云镜像上面,这样去其他电脑,只要安装个docker,再docker pull下来,就可以用这个镜像的功能了

# 如果是第一次推送,需要先登录,然后输入密码
docker login --username=your_name registry.cn-shenzhen.aliyuncs.com
# tag 一下第三步build出来的镜像Id
docker tag [Your_Local_ImageId] registry.cn-shenzhen.aliyuncs.com/layu/my_tomcat:v0.1
# push 送上去
docker push registry.cn-shenzhen.aliyuncs.com/layu/my_tomcat:v0.1

五、心得体会

docker真是个好东西,没了解之前对FROM、ADD那些命令有一点恐惧,但是学习了解之后,发现就好多了,docker hub就对比github来理解,镜像也可以pull push,挺方便的。然后其实Dockerfile的那些命令就是linux命令而已,也没有那么令人生畏。