在学习Docker镜像和容器之前,先给大家介绍下Docker的概念,在理解概念的基础上可以举一反三!

1、Docker的核心为镜像和容器,有JAVA基础的小伙伴们可以理解为镜像就是JAVA中的类,容器为相关类的对象。一个镜像可以创建多个容器。有过电脑装系统经验的应该知道系统都是ISO镜像文件,当系统安装完成之后,我们看到的界面就相当于一个容器。

2、Docker镜像主要将我们开发中使用到的每一个运行环境打包成每一个小的镜像(如:Tomcat镜像,MySQL镜像,Nginx镜像,ElasticSearch镜像),我们需要什么运行环境安装对应的镜像,不需要配置任何的系统参数,开箱即用。其实它最大的优点在于可以跨平台移植,我们知道Java是依靠JVM跨平台,不管在什么机器上编的码,移植到不同的机器上还可以正常运行。Docker镜像也一样,如果在测试环境下配置好一套镜像,可以打包这个镜像并移植到另外的机器上,只需要启动之前的配置就可以生效使用了!

3、在上一篇中我们已经将Docker安装完成,这篇在其基础上进行扩展,还没有安装Docker请参考:

https://blog.csdn.net/weixin_39835887/article/details/84139929

本篇主要讲解Tomcat镜像的使用,Tomcat应该是JAVA Web最常用的应用容器了,如果这篇文章讲到的知识明白了,那么其他环境安装都是一样的,可以灵活运用,就说明你已经掌握了Docker!

一、 在安装镜像之前我们先来搜索一下Docker仓库中有哪些Tomcat镜像,安装最适合我们的!(非必需项目,根据自己习惯)

搜索镜像命令:docker search 镜像名称

[root@iZx4xwfjh1zsdsZ /]# docker search tomcat
NAME                                  DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
tomcat                                Apache Tomcat is an open source implementati…   2175                [OK]                
tomee                                 Apache TomEE is an all-Apache Java EE certif…   58                  [OK]                
dordoka/tomcat                        Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base…   50                                      [OK]
davidcaste/alpine-tomcat              Apache Tomcat 7/8 using Oracle Java 7/8 with…   31                                      [OK]
bitnami/tomcat                        Bitnami Tomcat Docker Image                     26                                      [OK]
consol/tomcat-7.0                     Tomcat 7.0.57, 8080, "admin/admin"              16                                      [OK]
cloudesire/tomcat                     Tomcat server, 6/7/8                            15                                      [OK]
tutum/tomcat                          Base docker image to run a Tomcat applicatio…   11                                      
meirwa/spring-boot-tomcat-mysql-app   a sample spring-boot app using tomcat and My…   10                                      [OK]
jeanblanchard/tomcat                  Minimal Docker image with Apache Tomcat         8                                       
aallam/tomcat-mysql                   Debian, Oracle JDK, Tomcat & MySQL              8                                       [OK]
arm32v7/tomcat                        Apache Tomcat is an open source implementati…   5                                       
maluuba/tomcat7-java8                 Tomcat7 with java8.                             3                                       
rightctrl/tomcat                      CentOS , Oracle Java, tomcat application ssl…   3                                       [OK]
amd64/tomcat                          Apache Tomcat is an open source implementati…   2                                       
arm64v8/tomcat                        Apache Tomcat is an open source implementati…   2                                       
fabric8/tomcat-8                      Fabric8 Tomcat 8 Image                          1                                       [OK]
99taxis/tomcat7                       Tomcat7                                         1                                       [OK]
primetoninc/tomcat                    Apache tomcat 8.5, 8.0, 7.0                     1                                       [OK]
oobsri/tomcat8                        Testing CI Jobs with different names.           0                                       
swisstopo/service-print-tomcat        backend tomcat for service-print the true, …   0                                       
picoded/tomcat7                       tomcat7 with jre8 and MANAGER_USER / MANAGER…   0                                       [OK]
cfje/tomcat-resource                  Tomcat Concourse Resource                       0                                       
jelastic/tomcat                       An image of the Tomcat Java application serv…   0                                       
s390x/tomcat                          Apache Tomcat is an open source implementati…   0                                       
[root@iZx4xwfjh1zsdsZ /]# 

参数解释:

NAME为镜像名称

DESCRIPTION为镜像描述

STARS为社区关注度(与GitHub开源社区的STARS同理)

OFFICIAL表示是否为官方发布(一般适合我们开发使用)

AUTOMATED表示是否自动化操作

二、这里我们下载官方发布的Tomcat 8.0镜像

下载命令:docker pull 镜像名称(对应上步操作结果中的NAME值):版本号

[root@iZx4xwfjh1zsdsZ /]# docker pull tomcat:8.0
Using default tag: latest
latest: Pulling from library/tomcat
54f7e8ac135a: Pull complete 
d6341e30912f: Pull complete 
087a57faf949: Pull complete 
95065f220961: Pull complete 
0887630ce576: Pull complete 
c375d1959fab: Pull complete 
e00a5e6055cc: Pull complete 
8319f5fb56cf: Pull complete 
258c74eb25ab: Pull complete 
6eb86d11d371: Pull complete 
adb5a4a6adf5: Pull complete 
4685b434f297: Pull complete 
Digest: sha256:e394c2f94eee344300e68d7183f3f19d272316f9691b280ac0e3911ea610e590
Status: Downloaded newer image for tomcat:latest
[root@iZx4xwfjh1zsdsZ /]# 

complete!Tomcat镜像仓库下载完成!

三、查看机器上Docker中的所有镜像

查看本机器的Docker镜像命令:docker images

[root@iZx4xwfjh1zsdsZ /]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              8.0                 ef6a7c98d192        2 months ago        356MB
[root@iZx4xwfjh1zsdsZ /]# 

可以看到除表头以外只有一个我们刚安装的tomcat镜像!

参数解释:

REPOSITORY表示镜像名称

TAG表示镜像版本(如果在下载时没有明确指定版本,它会优先下载最新版本latest)

IMAGE ID表示这个镜像的ID号唯一标识,在后面创建容器会用到

CREATED表示最近更新时间,SIZE表示大小

四、启动(创建)Tomcat容器(根据下载的Tomcat镜像创建对应的容器)

容器启动命令:docker run --name 参数1 -p 参数2 -v 宿主机与容器交互的目录文件 -d 

[root@iZx4xwfjh1zsdsZ /]# docker run --name tomcat -p 8080:8080 -v /usr/test:/usr/local/tomcat/webapps/test -d tomcat
32640f3a4becce5a67497109984f7617313adea64d0c57867459e37aaebc750c

启动成功!

参数解释:

--name tomcat 表示上一步安装的镜像名称

-p 8080:8080 表示将容器的8080port映射到本机的8080port端口

-v /usr/test:/usr/local/tomcat/webapps/test 表示将本机下的usr目录下的test文件夹映射到容器tomcat的webapps文件夹下

-d tomcat 表示在后台守护进程的方式启动(不进入后台启动),指定上一步安装的镜像名称

五、远程访问Tomcat首页

successful!

大家都知道安装Tomcat之前一定要安装JDK,但是我的服务器是新买的,只安装了Docker。因为Tomcat镜像已经把Tomcat的所有依赖项都打包到这个镜像中,所以我们只需要下载镜像就OK了,其他镜像也是一样的!

注:这步有的人可能会访问不到,如果之前的安装步骤都正确无误,就检查以下两点:

(1)服务器是否打开了这个端口,或者可以直接关闭防火墙(生产环境不建议)   

         关闭默认防火墙命令:systemctl stop firewalld.service

(2)官方服务器购买站(阿里云、腾讯)是否对当前服务器开放了这个端口(如:安全组规则是否打开了这个端口)

六、到此为止,Docker的Tomcat镜像开发篇就已经接近尾声了!

最后再给大家推荐几个我在工作中常用的Docker命令:

docker ps -a : 查看已经在运行的所有容器

docker port 容器ID : 查看容器的内外端口映射

docker logs 容器ID : 查看容器的日志

docker stop 容器ID : 关闭容器(未删除)

docker start 容器ID : 开启容器

docker rm 容器ID : 删除对应的容器(注:删除之前必须要stop,否则删不掉的)

docker images : 查看机器上所有的镜像

docker rmi 镜像ID : 删除对应的镜像(注:删除之前必须停止或删除它创建的所有容器)

docker save 镜像ID -o 文件 : 将指定的镜像打包(例:docker save ef6a7c98d192 -o /home/wuyongfei/springboot-demo.tar)

docker load -i 文件夹名称(自定义)  将指定的镜像移植到另外一台机器上在Docker中进行加载,再按照上面的步骤三查看镜像,启动容器就实现了Docker镜像的移植(例:docker load -i springboot-demo.tar)

六、经验之谈

希望大家先对Docker的概念进行理解,自己再安装MySQL,Nginx以及其他的开发环境,与上面的流程大同小异!在安装其他环境有问题的或者对Docker概念还是不太明白的,欢迎加博主QQ:1402218191 !

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐