当前位置: 首页>编程语言>正文

docker查看image版本号 查看docker安装的版本

目录

1、环境检查

2、查看可用的 Tomcat 版本

3、下载所需版本的Tomcat镜像

4、创建 tomcat 容器

4.1 非挂载卷方式创建 tomcat 容器

4.2 挂载本地目录方式创建 tomcat 容器

4.3 挂载数据卷方式创建 tomcat 容器

5、查看指定容器的log

6、常见问题

6.1 docker容器与宿主日志时间不一致

6.2 docker容器无法使用vim命令


1、环境检查

首先检查服务器是否安装了Docker服务,通过docker -v 或 docker info 命令查看docker版本等相关信息,若不识别docker命令表示未安装Docker服务。

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_tomcat9容器配置,第1张

2、查看可用的 Tomcat 版本

访问 Tomcat 镜像库地址:https://hub.docker.com/_/tomcat?tab=tags 。可以通过 Sort by 查看其他版本的 Tomcat,默认是最新版本 tomcat:latest 。

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_docker查看image版本号_02,第2张

通过Filter Tags搜索特定版本。

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_tomcat9容器挂载数据卷_03,第3张

还可通过docker search tomcat 查找Docker Hub或其他Docker仓库中的tomcat可用版本镜像。

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_tomcat9容器挂载数据卷_04,第4张

3、下载所需版本的Tomcat镜像

1)下载tomcat 9.0.54版本(jdk8)镜像

# 下载tomcat 9.0.54版本(jdk8)
docker pull tomcat:9.0.54-jdk8
 
# 不带版本号默认下载最新版本
docker pull tomcat

2)查看是否已下载tomcat 9.0.54版本镜像文件

docker images 查看系统中的镜像文件是否包含刚下载的tomcat镜像,可以看到tomcat 9.0.54版本已经下载到本地。

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_tomcat9容器挂载数据卷_05,第5张

4、创建 tomcat 容器

4.1 非挂载卷方式创建 tomcat 容器

此种方式创建容器,当容器被删除掉时,容器里的数据将会丢失。

1)创建容器

docker run -it -p 8080:8080 --name tomcat9jdk8 -d tomcat:9.0.54-jdk8
  • –name  指定容器的名称为tomcat9jdk8
  • -p  将容器内的8080端口与本地8080接口映射,前者是本地访问端口,后者是容器内部端口
  • -d  后台运行容器,并返回容器ID
  • 命令最后的tomcat:9.0.54   运行指定的镜像创建容器
  • –restart=always 设置随服务启动而启动容器
  • 对于已经运行但没设置随docker服务的启动而启动容器的可以执行命令 docker update –restart=always 容器名

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_tomcat9容器配置_06,第6张

2)查看容器是否创建成功

通过docker ps 或 docker ps -al 命令可以查看到tomcat:9.0.54-jdk8容器已启动成功。

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_docker安装tomcat9_07,第7张

3)进入tomcat容器

# tomcat9jdk8 是容器名称,也可以用容器id指定
docker exec -it tomcat9jdk8 /bin/bash

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_docker查看image版本号_08,第8张

4)更改webapps目录

# 将webapps 改为webapps2(随意名字) ,将webapps.dist  改为webapps

mv webapps webapps2
mv webapps.dist/ webapps

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_tomcat9容器挂载本地目录_09,第9张

5)重启tomcat容器

docker restart tomcat9jdk8

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_docker查看image版本号_10,第10张

6)测试

宿主机测试命令:curl http://localhost:8080

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_tomcat9容器配置_11,第11张

远程windows浏览器测试地址:http://ip:port

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_docker安装tomcat9_12,第12张

7)创建第二个容器

docker run -it -p 8081:8080 --name tomcat9jdk8-2 -d tomcat:9.0.54-jdk8

与第一个容器不同的地方有2点:

1是映射到本地的访问端口(8081)不同。
2是容器名称不同(tomcat9jdk8-2)。

4.2 挂载本地目录方式创建 tomcat 容器

1)创建tomcat目录用于存储tomcat数据

使用命令:mkdir /usr/local/docker/tomcat/tomcat9 创建目录。在该目录下接着创建3个目录:webapps、conf、logs,命令:mkdir webapps conf logs。

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_docker安装tomcat9_13,第13张

2)从未挂载数据卷的tomcat容器中拷贝webapps和conf配置文件

上一步直接在宿主机上创建webapps目录没有内容,如果直接访问肯定是报错的。所以从之前未挂载数据卷的tomcat容器中(或tomcat的tar解压包中),拷贝一份webapps 和 conf 配置文件,用于创建容器的数据挂载。

# 拷贝tomcat9jdk8容器下的webapps到宿主机目录
docker cp tomcat9jdk8:/usr/local/tomcat/webapps /usr/local/docker/tomcat/tomcat9/

# 拷贝tomcat9jdk8容器下的conf到宿主机目录
docker cp tomcat9jdk8:/usr/local/tomcat/conf /usr/local/docker/tomcat/tomcat9/

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_docker查看image版本号_14,第14张

3)创建容器

docker run -it -p 8081:8080  \
--name tomcat9jdk8-2 \
--privileged=true \
--restart=always \
-v /usr/local/docker/tomcat/tomcat9/webapps:/usr/local/tomcat/webapps \
-v /usr/local/docker/tomcat/tomcat9/conf:/usr/local/tomcat/conf \
-v /usr/local/docker/tomcat/tomcat9/logs:/usr/local/tomcat/logs \
-v /etc/localtime:/etc/localtime \
-e TZ="Asia/Shanghai" \
-d tomcat:9.0.54-jdk8
  • --name  指定容器的名称为tomcat9jdk8-2
  • --privileged=true  挂载文件权限设置,使容器内root拥有真正的root权限
  • --restart=always 设置随服务启动而启动容器
  • -p  将容器内的8081端口与本地8080接口映射,前者是本地访问端口,后者是容器内部端口
  • -v 挂载宿主目录到容器目录,格式为:主机(宿主)目录:容器目录
  • -v /usr/local/docker/tomcat/tomcat9/webapps:/usr/local/tomcat/webapps \  挂载webapps
  • -v /usr/local/docker/tomcat/tomcat9/conf:/usr/local/tomcat/conf  \   挂载配置文件
  • -v /usr/local/docker/tomcat/tomcat9/logs:/usr/local/tomcat/logs \   挂载日志
  • -v /etc/localtime:/etc/localtime    容器时间与宿主机同步
  • -e  添加了一个环境变量TZ,指定容器时区,不指定的话mysql的时间函数执行结果会不正确
  • -d  后台运行容器,并返回容器ID
  • 命令最后的tomcat:9.0.54-jdk8,运行指定的镜像创建容器
  • 对于已经运行但没设置随docker服务的启动而启动容器的可以执行命令 docker update –restart=always 容器名

 --restart=always参数能够使我们在重启docker时,自动启动相关容器。Docker容器的重启策略如下:

  • no,默认策略,在容器退出时不重启容器
  • on-failure,在容器非正常退出时(退出状态非0),才会重启容器
  • on-failure:3,在容器非正常退出时重启容器,最多重启3次
  • always,在容器退出时总是重启容器
  • unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_tomcat9容器配置_15,第15张

4)测试

宿主机测试命令:curl http://localhost:8081

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_tomcat9容器配置_16,第16张

远程windows浏览器测试地址:http://ip:port

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_tomcat9容器挂载数据卷_17,第17张

4.3 挂载数据卷方式创建 tomcat 容器

1)创建3个数据卷并查看数据卷信息

# 创建3个数据卷:
docker volume create tomcat9-webapps
docker volume create tomcat9-conf
docker volume create tomcat9-logs
 
# 查看所有数据卷
docker volume ls
 
# 查看指定 数据卷 的信息
docker volume inspect tomcat9-webapps
 
# 删除数据卷
docker volume rm 卷名1 卷名2 … 删除一个或者多个数据卷
docker volume prune 删除所有未被使用的数据卷

# 如果不再使用自定义数据卷了,那么可以手动清理掉:
docker stop tomcat9 // 暂停容器实例
docker rm tomcat9 // 移除容器实例
docker volume rm tomcat9-webapps tomcat9-conf tomcat9-logs // 删除自定义数据卷

2)数据卷的挂载

我们在创建容器的时候要想好容器的哪些目录需要挂载数据卷!在创建容器时使用 --volume/-v或--mount 选项就可以挂载数据卷了。

方式一:使用-v创建自volume名称的容器: 若volume没有则自动创建

docker run -it -p 8082:8080  \
--name tomcat9jdk8-3 \
--privileged=true \
--restart=always \
-v tomcat9-webapps:/usr/local/tomcat/webapps \
-v tomcat9-conf:/usr/local/tomcat/conf \
-v tomcat9-logs:/usr/local/tomcat/logs \
-v /etc/localtime:/etc/localtime \
-e TZ="Asia/Shanghai" \
-d tomcat:9.0.54-jdk8

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_tomcat9容器配置_18,第18张

测试:

使用curl http://localhost:8082 测试返回404,这是因为webapps和conf数据卷下面是空的。

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_tomcat9容器挂载数据卷_19,第19张

复制文件到数据卷

# 查看数据卷信息
root@xnzysq20210118001:/opt/tomcat/apache-tomcat-9.0.54# docker volume inspect tomcat9-webapps
[
    {
        "CreatedAt": "2021-10-16T02:51:31Z",
        "Driver": "local",
        "Labels": null,
# 数据卷的实际存储目录
        "Mountpoint": "/var/lib/docker/volumes/tomcat9-webapps/_data",
        "Name": "tomcat9-webapps",
        "Options": null,
        "Scope": "local"
    }
]

# 查看实际存储目录
root@xnzysq20210118001:/opt/tomcat/apache-tomcat-9.0.54# ls /var/lib/docker/volumes/tomcat9-webapps/_data

# 拷贝宿主机目录/opt/tomcat/apache-tomcat-9.0.54/webapps下的所有文件到数据卷tomcat9-webapps的实际存储目录
root@xnzysq20210118001:~# cp -r /opt/tomcat/apache-tomcat-9.0.54/webapps/ /var/lib/docker/volumes/tomcat9-webapps/_data

# 查看tomcat9-webapps的实际存储目录
root@xnzysq20210118001:~# ls /var/lib/docker/volumes/tomcat9-webapps/_data
ROOT  docs  examples  host-manager  manager

# 拷贝宿主机目录/opt/tomcat/apache-tomcat-9.0.54/conf下的所有文件到数据卷tomcat9-conf的实际存储目录
root@xnzysq20210118001:~# cp -r /opt/tomcat/apache-tomcat-9.0.54/conf/ /var/lib/docker/volumes/tomcat9-conf/_data

# 查看tomcat9-conf的实际存储目录
root@xnzysq20210118001:~# ls /var/lib/docker/volumes/tomcat9-conf/_data
Catalina         catalina.properties  context.xml           jaspic-providers.xsd  server.xml        tomcat-users.xsd
catalina.policy  conf                 jaspic-providers.xml  logging.properties    tomcat-users.xml  web.xml

# 重启tomcat9jdk8-3容器
root@xnzysq20210118001:~# docker restart tomcat9jdk8-3
tomcat9jdk8-3
# 测试8082服务
root@xnzysq20210118001:~# curl http://localhost:8082


<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Apache Tomcat/9.0.54</title>
        <link href="favicon.ico" rel="icon" type="image/x-icon" />
        <link href="tomcat.css" rel="stylesheet" type="text/css" />
    </head>

    <body>
        <div id="wrapper">
            <div id="navigation" class="curved">
                <span id="nav-home"><a href="https://tomcat.apache.org/">Home</a></span>
                <span id="nav-hosts"><a href="/docs/">Documentation</a></span>
                <span id="nav-config"><a href="/docs/config/">Configuration</a></span>
                <span id="nav-examples"><a href="/examples/">Examples</a></span>
                <span id="nav-wiki"><a href="https://wiki.apache.org/tomcat/FrontPage">Wiki</a></span>
                <span id="nav-lists"><a href="https://tomcat.apache.org/lists.html">Mailing Lists</a></span>
                <span id="nav-help"><a href="https://tomcat.apache.org/findhelp.html">Find Help</a></span>
                <br class="separator" />
            </div>
......

方式二:使用--mount创建自volume名称的容器: :若volume没有创建失败

参数--mount默认情况下用来挂载volume,但也可以用来创建bind mount和tmpfs。如果不指定type选项,则默认为挂载volume,volume是一种更为灵活的数据管理方式,volume可以通过docker volume命令集被管理。

docker run -it -p 8083:8080  \
--name tomcat9jdk8-4 \
--privileged=true \
--restart=always \
--mount source=tomcat9-webapps, destination=/usr/local/tomcat/webapps,readonly \
--mount source=tomcat9-conf, destination=/usr/local/tomcat/conf,readonly \
--mount source=tomcat9-logs, destination=/usr/local/tomcat/logs \
-v /etc/localtime:/etc/localtime \
-e TZ="Asia/Shanghai" \
-d tomcat:9.0.54-jdk8
  • 挂载volume命令格式:[type=volume,]source=my-volume,destination=/path/in/container[,...]
  • 创建bind mount命令格式:type=bind,source=/path/on/host,destination=/path/in/container[,...]
  • 如果创建bind mount并指定source,则必须是绝对路径,且路径必须已经存在
  • 示例中readonly表示只读

5、查看指定容器的log

# 查看指定容器的日志:docker logs -f 容器id或容器名称
docker logs -f tomcat9jdk8

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_docker安装tomcat9_20,第20张

6、常见问题

6.1 docker容器与宿主日志时间不一致

部署web项目后也许会出现docker容器与宿主、docker 容器与tomcat 应用打印日志时间和我们当前时间相差8个小时,可以添加如下配置:

①启动容器时,将系统时间挂载到容器内,可以解决docker容器与宿主时间不一致问题,添加参数:

-v /etc/localtime:/etc/localtime:ro

完整命令如下示例:

sudo docker run -d --name button-api -p 8080:8080 -v /etc/localtime:/etc/localtime:ro button-api:v1

②docker 容器与tomcat 应用打印日志时间不一致

启动tomcat容器后进入tomcat的"bin"目录,修改catalina.sh文件,在注释结束的第一行添加如下内容:

JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8  -Duser.timezone=GMT+08"

如下图所示:

docker查看image版本号 查看docker安装的版本,docker查看image版本号 查看docker安装的版本_docker查看image版本号_21,第21张

修改保存后重启docker容器就可以了。

6.2 docker容器无法使用vim命令

进入docker容器后,想对某些参数进行修改时,一般需要安装文本编辑器,以vim为例:

使用命令 apt-get update 同步更新索引,等更新完毕以后再敲命令:apt-get install vim命令即可。

  • apt-get update命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。
  • apt-get install vim 是安装vim包。

由于下载地址是海外地址,下载速度非常慢而且可能出现中断,如果感觉太慢可以更改如下配置:

# 备份/etc/apt/sources.list文件
mv /etc/apt/sources.list /etc/apt/sources.list.bak

# 创建新的/etc/apt/sources.list文件并输入以下内容
echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list
echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list
echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list

https://www.xamrdz.com/lan/5qu1960752.html

相关文章: