Docker(三)容器数据卷和Tomcat的安装


前言

        学习之前需要了解docker相关概念,移步 Docker官网 

        此处不再赘述虚拟化技术和docker VS 虚拟机 的一些内容,有条件的建议直接移步 度娘

        笔记全程操作在华为云务器,CentOS7系统。需要自行准备操作环境。


一. 容器数据卷

1.1 概述

卷就是目录或文件,存在与一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过“联合文件系统”提供一些用于持续存储或共享数据的特性;卷的设计目的就是数据的持久化,完全独立于容器的生命周期,因此docker不会再容器删除时删除其挂载的数据卷。

1.2 特点

  • 数据卷可在容器时间共享或重用数据;
  • 卷中的更改可以直接实时生效;
  • 数据卷中的更改不会包含再镜像的更新中;
  • 数据卷的生命周期一直持续到没有容器使用为止。

1.3 容器卷操作

1.3.1 格式及参数

// 运行一个带有容器卷存储功能的容器实例
    docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名

参数释义:

--privileged=true:挂载目录,放开权限,防止出现cannot open directory:Permission denied
    
-V:默认情况下,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便与宿主机联调

备注:

    查看容器的卷是否挂载成功可以使用命令:docker inspect  容器id

    如果写的宿主机路径不存在docker会自动创建目录
    宿主机和docker数据相互备份,即宿主机绝对路径目录下新建的文件也会备份到容器对应的目录下

1.3.2 容器卷的读写规则

# 默认可读可写 rw
    docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名
    
# 只读,主机可读可写,容器只读 ro => ro=read only
    docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名

1.3.3 卷的继承与共享

// 卷的继承与共享
    docker run -it --privileged=true -v --volumes-from  父类 容器名

二. docker安装tomcat

此处演示docker安装tomcat时的步骤以及问题处理

2.1 搜索镜像

docker pull tomcat

 2.2 拉取镜像

docker search tomcat

2.3 查看镜像

docker images tomcat

2.4 启动镜像

docker run -d -p 8080:8080 tomcat

此时启动tomcat报错 => 端口占用 

[root@local ~]# docker run -d -p 8080:8080 tomcat
3d3153a64fda4adc0107125b61ca4023c41cf3f1c77d780e3897afa99ff3b11c
docker: Error response from daemon: driver failed programming external connectivity on 
endpoint frosty_lehmann (98b60749020c623588fc008a22ade89432f4765f662bc1456dbba9797419ea7d):
 Bind for0.0.0.0:8080 failed: port is already allocated.
// 查看端口进程
    netstat -ntulp | grep 8080
// kill占用该端口的进程
    kill -9 port
//启动tomcat
    docker start tomcat
[root@local ~]# docker run -d -p 8080:8080 tomcat
ec9475f054cd3b10a4a48aa665f4b6de771fade0e5346ccad21d8aff5eb786d2

...
[root@local ~]# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED         STATUS         PORTS                                       NAMES
ec9475f054cd   tomcat    "catalina.sh run"   4 seconds ago   Up 3 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   dreamy_lichterman

 启动成功!

2.5 浏览器访问

IP+端口号直接访问,然后查看此处的问题

我们发现此处会出现404,这是因为tomcat10版本配置文件的问题,我们接下来解决访问报错的问题。

2.5.1 进入容器内部

// 首先以前台交互式进入 Tomcat 10.0 镜像的容器 tomcat 中
    docker exec -it ec9475f054cd /bin/bash

2.5.2 查看webapps目录

root@ec9475f054cd:/usr/local/tomcat# ls -l
total 160
-rw-r--r-- 1 root root 18994 Dec  2  2021 BUILDING.txt
-rw-r--r-- 1 root root  6210 Dec  2  2021 CONTRIBUTING.md
-rw-r--r-- 1 root root 60269 Dec  2  2021 LICENSE
-rw-r--r-- 1 root root  2333 Dec  2  2021 NOTICE
-rw-r--r-- 1 root root  3378 Dec  2  2021 README.md
-rw-r--r-- 1 root root  6905 Dec  2  2021 RELEASE-NOTES
-rw-r--r-- 1 root root 16517 Dec  2  2021 RUNNING.txt
drwxr-xr-x 2 root root  4096 Dec 22  2021 bin
drwxr-xr-x 1 root root  4096 Aug  8 08:29 conf
drwxr-xr-x 2 root root  4096 Dec 22  2021 lib
drwxrwxrwx 1 root root  4096 Aug  8 08:29 logs
drwxr-xr-x 2 root root  4096 Dec 22  2021 native-jni-lib
drwxrwxrwx 2 root root  4096 Dec 22  2021 temp
drwxr-xr-x 2 root root  4096 Dec 22  2021 webapps
drwxr-xr-x 7 root root  4096 Dec  2  2021 webapps.dist
drwxrwxrwx 2 root root  4096 Dec  2  2021 work
root@ec9475f054cd:/usr/local/tomcat# cd webapps
root@ec9475f054cd:/usr/local/tomcat/webapps# ls -l
total 0
root@ec9475f054cd:/usr/local/tomcat/webapps#

可以看到webapps是空的,这就解释404的原因。新版的 Tomcat 的猫首页放在了 webapps.dist 里,我们只需要把 webapps 目录删除,再把 webapps.dist 重命名为 webapps 即可。

2.5.3 修改文件

root@ec9475f054cd:/usr/local/tomcat/webapps# cd ..
root@ec9475f054cd:/usr/local/tomcat# rm -rf webapps
root@ec9475f054cd:/usr/local/tomcat# mv webapps.dist webapps

 重新访问成功!

 2.6 问题分析

可以看到最新的 Tomcat 10 在主页上的改动对新手是不太友好的。在企业中绝大部分 Tomcat 8已经满足开发需求了。因此避免每次都修改这个配饰文件,我们直接安装tomcat8的版本就好了。

三. docker安装tomcat8

此处安装一个带jdk8版本的tomcat8容器

[root@local ~]# docker pull billygoo/tomcat8-jdk8
Using default tag: latest
latest: Pulling from billygoo/tomcat8-jdk8
Digest: sha256:4e21f52d29e3a0baafc18979da2f9725449b54652db69d4cdaef9ba807097e11
Status: Image is up to date for billygoo/tomcat8-jdk8:latest
docker.io/billygoo/tomcat8-jdk8:latest
[root@local ~]# docker images billygoo/tomcat8-jdk8
REPOSITORY              TAG       IMAGE ID       CREATED       SIZE
billygoo/tomcat8-jdk8   latest    30ef4019761d   5 years ago   523MB

启动容器

[root@local ~]# docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8
5e78aff99f7d2ef6eb926c15f39d0acae4ea332b3d23d1b4596aa83860ab0b3f
[root@local ~]# docker ps
CONTAINER ID   IMAGE                   COMMAND             CREATED         STATUS         PORTS                                       NAMES
5e78aff99f7d   billygoo/tomcat8-jdk8   "catalina.sh run"   7 seconds ago   Up 6 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   mytomcat8

访问首页

至此,对tomcat的安装基本完成。


碎碎念:       

对于常用软件的安装,各种资源数不胜数,希望大家还是以官网为主,多去动手做,踩坑,排错,才能熟记于心。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码云说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值