Dockerfile构建tomcat9.0镜像并且推送到DockerHub仓库,阿里云仓库中,部署web应用到tomcat中


一、Dockerfile是什么?

基础知识

  1. 每个保留关键字(指令)都是必须大写字母
  2. 执行从上到下顺序执行
  3. #表示注释
  4. 每个指令都会创建提交一个新的镜像层。

DockerFile指令说明
在这里插入图片描述

FROM            # 基础镜像,一切从这里开始构建
MAINTAINER      # 镜像是谁写的, 姓名+邮箱
RUN             # 镜像构建的时候需要运行的命令
ADD             # 步骤, tomcat镜像, 这个tomcat压缩包!添加内容
WORKDIR         # 镜像的工作目录
VOLUME          # 挂载的目录
EXPOSE          # 保留端口配置
CMD             # 指定这个容器启动的时候要运行的命令,只有最后一个会生效可被替代
ENTRYPOINT      # 指定这个容器启动的时候要运行的命令, 可以追加命令
ONBUILD         # 当构建一个被继承DockerFile 这个时候就会运行 ONBUILD 的指令,触发指令
COPY            # 类似ADD, 将我们文件拷贝到镜像中
ENV             # 构建的时候设置环境变量

二、Dockerfile构建过程

  • Dockerfile制作tomcat镜像
    准备工作:
    编写Dockerfile文件,官方命名Dockerfile, build会自动寻找这个文件,就不需要-f指定了
    在这里插入图片描述
[root@node1 dockerfile]# vim Dockerfile

FROM centos

MAINTAINER anzj<2820524218@qq.com>

ADD jdk-8u181-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.1.tar.gz /usr/local/

#设置环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_181
#设置环境变量
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#设置环境变量
ENV  CATALINA_HOME /usr/local/apache-tomcat-9.0.1
#设置环境变量
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.1
#设置环境变量
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080


ENTRYPOINT ["/usr/local/apache-tomcat-9.0.1/bin/catalina.sh","run"]

构建tomcat镜像

[root@node1 dockerfile]# docker build -t diytomcat:v1 .
Sending build context to Docker daemon    195MB
Step 1/11 : FROM centos
 ---> 300e315adb2f
Step 2/11 : MAINTAINER anzj<2820524218@qq.com>
 ---> Running in 5bf0290aa049
Removing intermediate container 5bf0290aa049
 ---> e3199577d9e8
Step 3/11 : ADD jdk-8u181-linux-x64.tar.gz /usr/local/
 ---> 084375553de5
Step 4/11 : ADD apache-tomcat-9.0.1.tar.gz /usr/local/
 ---> ab42286a7da3
Step 5/11 : ENV JAVA_HOME /usr/local/jdk1.8.0_181
 ---> Running in 2db697d2b9e7
Removing intermediate container 2db697d2b9e7
 ---> 653fbce1feb0
Step 6/11 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 ---> Running in d6a792fc4bda
Removing intermediate container d6a792fc4bda
 ---> 28e00a12f9a0
Step 7/11 : ENV  CATALINA_HOME /usr/local/apache-tomcat-9.0.1
 ---> Running in 6c9fb21994ae
Removing intermediate container 6c9fb21994ae
 ---> 0f9d060023b8
Step 8/11 : ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.1
 ---> Running in 94a0a016f8c0
Removing intermediate container 94a0a016f8c0
 ---> ad155138d1b0
Step 9/11 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
 ---> Running in 2ce704d98fa9
Removing intermediate container 2ce704d98fa9
 ---> f5580da2fef8
Step 10/11 : EXPOSE 8080
 ---> Running in 847bd9549d11
Removing intermediate container 847bd9549d11
 ---> 8a3ac408faa0
Step 11/11 : ENTRYPOINT ["/usr/local/apache-tomcat-9.0.1/bin/catalina.sh","run"]
 ---> Running in ff0466f233e7
Removing intermediate container ff0466f233e7
 ---> 7e78ebfe09e4
Successfully built 7e78ebfe09e4
Successfully tagged diytomcat:v1
[root@node1 dockerfile]# docker images
REPOSITORY                                           TAG                 IMAGE ID            CREATED             SIZE
diytomcat                                            v1                  7e78ebfe09e4        6 seconds ago       604MB
prom/node-exporter                                   latest              b8a614cef113        45 hours ago        21.2MB
quay.io/coreos/flannel                               v0.14.0             8522d622299c        2 months ago        67.9MB
centos                                               latest              300e315adb2f        7 months ago        209MB
kubernetesui/dashboard                               v2.0.1              85d666cddd04        14 months ago       223MB
registry.aliyuncs.com/google_containers/kube-proxy   v1.18.0             43940c34f24f        15 months ago       117MB
registry.aliyuncs.com/google_containers/pause        3.2                 80d28bedfe5d        17 months ago       683kB
tomcat                                               7-alpine            81cd9536b1e6        2 years ago         147MB
vmware/harbor-log                                    v1.2.0              c7887347f435        3 years ago         200MB
vmware/harbor-jobservice                             v1.2.0              1fb18427db11        3 years ago         164MB
vmware/harbor-ui                                     v1.2.0              b7069ac3bd4b        3 years ago         178MB
vmware/harbor-adminserver                            v1.2.0              a18331f0c1ae        3 years ago         142MB
vmware/harbor-db                                     v1.2.0              deb8033b1c86        3 years ago         329MB
vmware/registry                                      2.6.2-photon        5d9100e4350e        3 years ago         173MB
vmware/nginx-photon                                  1.11.13             285492ff20d6        4 years ago         147MB
grafana/grafana                                      4.2.0               8c4ef64b4ad1        4 years ago         278MB

启动镜像

#  docker run -d -p 9090:8080 --name mytomcat diytomcat:v1

访问测试
在这里插入图片描述

三、推送到DockerHub

[root@node1 dockerfile]# docker login -u anapp #DockerID 唯一的
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

3.打一个tag

docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname
[root@node1 dockerfile]# docker images
REPOSITORY                                           TAG                 IMAGE ID            CREATED             SIZE
diytomcat                                            v1                  7e78ebfe09e4        32 minutes ago      604MB
prom/node-exporter                                   latest              b8a614cef113        45 hours ago        21.2MB
quay.io/coreos/flannel                               v0.14.0             8522d622299c        2 months ago        67.9MB
centos                                               latest              300e315adb2f        7 months ago        209MB
kubernetesui/dashboard                               v2.0.1              85d666cddd04        14 months ago       223MB
registry.aliyuncs.com/google_containers/kube-proxy   v1.18.0             43940c34f24f        15 months ago       117MB
registry.aliyuncs.com/google_containers/pause        3.2                 80d28bedfe5d        17 months ago       683kB
tomcat                                               7-alpine            81cd9536b1e6        2 years ago         147MB
vmware/harbor-log                                    v1.2.0              c7887347f435        3 years ago         200MB
vmware/harbor-jobservice                             v1.2.0              1fb18427db11        3 years ago         164MB
vmware/harbor-ui                                     v1.2.0              b7069ac3bd4b        3 years ago         178MB
vmware/harbor-adminserver                            v1.2.0              a18331f0c1ae        3 years ago         142MB
vmware/harbor-db                                     v1.2.0              deb8033b1c86        3 years ago         329MB
vmware/registry                                      2.6.2-photon        5d9100e4350e        3 years ago         173MB
vmware/nginx-photon                                  1.11.13             285492ff20d6        4 years ago         147MB
grafana/grafana                                      4.2.0               8c4ef64b4ad1        4 years ago         278MB
[root@node1 dockerfile]# docker tag diytomcat:v1 anapp/tomcat:v1 # anapp一定是DockerID 否则提交不成功
[root@node1 dockerfile]# docker images
REPOSITORY                                           TAG                 IMAGE ID            CREATED             SIZE
anapp/tomcat                                           v1                  7e78ebfe09e4        32 minutes ago      604MB
diytomcat                                            v1                  7e78ebfe09e4        32 minutes ago      604MB
prom/node-exporter                                   latest              b8a614cef113        45 hours ago        21.2MB
quay.io/coreos/flannel                               v0.14.0             8522d622299c        2 months ago        67.9MB
centos                                               latest              300e315adb2f        7 months ago        209MB
kubernetesui/dashboard                               v2.0.1              85d666cddd04        14 months ago       223MB
registry.aliyuncs.com/google_containers/kube-proxy   v1.18.0             43940c34f24f        15 months ago       117MB
registry.aliyuncs.com/google_containers/pause        3.2                 80d28bedfe5d        17 months ago       683kB
tomcat                                               7-alpine            81cd9536b1e6        2 years ago         147MB
vmware/harbor-log                                    v1.2.0              c7887347f435        3 years ago         200MB
vmware/harbor-jobservice                             v1.2.0              1fb18427db11        3 years ago         164MB
vmware/harbor-ui                                     v1.2.0              b7069ac3bd4b        3 years ago         178MB
vmware/harbor-adminserver                            v1.2.0              a18331f0c1ae        3 years ago         142MB
vmware/harbor-db                                     v1.2.0              deb8033b1c86        3 years ago         329MB
vmware/registry                                      2.6.2-photon        5d9100e4350e        3 years ago         173MB
vmware/nginx-photon                                  1.11.13             285492ff20d6        4 years ago         147MB
grafana/grafana                                      4.2.0               8c4ef64b4ad1        4 
years ago         278MB

4.下载镜像

docker push anapp/tomcat:tagname

四、推送到阿里云仓库

  • 登录阿里云控制台

在这里插入图片描述
在这里插入图片描述

  • 创建命名空间在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 点击刚刚创建的仓库
    在这里插入图片描述

  • 按照命令下面的命令执行即可
    在这里插入图片描述

root@node1 src]# docker tag 7e78ebfe09e4 registry.cn-hangzhou.aliyuncs.com/anzhijie/anapp:v2
[root@node1 src]# docker images
REPOSITORY                                                                TAG                 IMAGE ID            CREATED             SIZE
anapp/tomcat                                                              v1                  7e78ebfe09e4        19 hours ago        604MB
registry.cn-hangzhou.aliyuncs.com/anzhijie/anapp                          v2                  7e78ebfe09e4        19 hours ago        604MB

[root@node1 src]#  docker push registry.cn-hangzhou.aliyuncs.com/anzhijie/anapp:v2 
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/anzhijie/anapp]
73ead83820ce: Pushed 
f54b866f0424: Pushed 
2653d992f4ef: Pushed 
v2: digest: sha256:a728fd02694be39a0669897ed060dc386db06a4d235205e45739cd47001896f1 size: 953
[root@node1 src]# docker images
REPOSITORY                                                                TAG                 IMAGE ID            CREATED             SIZE
registry.cn-hangzhou.aliyuncs.com/anzhijie/anapp                          v2                  7e78ebfe09e4        19 hours ago        604MB                                                    
# 拉取镜像
 docker pull registry.cn-hangzhou.aliyuncs.com/anzhijie/anapp:[镜像版本号]

五、部署tomcat和web应用

1、k8s部署tomcat

  • 目录结构:
    在这里插入图片描述
[root@ecs-431f-0001 tomcat]## vim tomcat-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-deployment
  labels:
    app: tomcat
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tomcat
  template:
    metadata:
      labels:
        app: tomcat
    spec:
      containers:
      - name: tomcat
        image: registry.cn-hangzhou.aliyuncs.com/anzhijie/anapp:v2 #阿里云下载到本地的镜像
        ports:
        - containerPort: 8080
[root@ecs-431f-0001 tomcat]# kubectl -creat -f tomcat-deployment.yaml
[root@ecs-431f-0001 tomcat]# vim tomcat-service.yaml
kind: Service
apiVersion: v1
metadata:
  name: tomcat-service
spec:
  type: NodePort
  selector:
    app: tomcat
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
[root@ecs-431f-0001 tomcat]# kubectl create -f tomcat-service.yaml
[root@ecs-431f-0001 tomcat]# kubectl get pod,svc
NAME                                    READY   STATUS    RESTARTS   AGE
pod/tomcat-deployment-66cf7565b-z6cqj   1/1     Running   0          69m

NAME                     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/kubernetes       ClusterIP   10.96.0.1        <none>        443/TCP        12d
service/tomcat-service   NodePort    10.103.110.188   <none>        80:31707/TCP   68m

2、k8s向tomcat容器中部署应用

[root@ecs-431f-0001 tomcat]# kubectl cp commonAnnotation.war tomcat-deployment-66cf7565b-z6cqj:/usr/local/apache-tomcat-9.0.1/webapps # 将war包复制到容器内部
[root@ecs-431f-0001 tomcat]# kubectl exec tomcat-deployment-66cf7565b-z6cqj -it -- /bin/bash
[root@tomcat-deployment-66cf7565b-z6cqj /]# 进入容器
[root@tomcat-deployment-66cf7565b-z6cqj /]# cd /usr/local/apache-tomcat-9.0.1/webapps/
[root@tomcat-deployment-66cf7565b-z6cqj webapps]# ls -l # 成功部署
total 32
drwxr-x---  3 root root 4096 Sep 27  2017 ROOT
drwxr-x---  4 root root 4096 Jul 19 02:31 commonAnnotation
-rw-r--r--  1 root root 6527 Jul 19 02:31 commonAnnotation.war
drwxr-x--- 14 root root 4096 Sep 27  2017 docs
drwxr-x---  6 root root 4096 Sep 27  2017 examples
drwxr-x---  5 root root 4096 Sep 27  2017 host-manager
drwxr-x---  5 root root 4096 Sep 27  2017 manager
  • 访问部署的项目
    在这里插入图片描述
    访问成功
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值