后台专栏(五)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命令而已,也没有那么令人生畏。