我是小白 入门Docker CENTOS7安装 Tomcat部署

近期K8S,云原生应用很火,Docker可以说是入门的技术了,公司目前没有业务或项目能使用到这些,手痒痒的,就从最简单的Tomcat开始吧,毕竟即使是部署一个简单的Tomcat,也要安装jdk,下载Tomcat的tar.gz包啥的也挺麻烦的

安装Docker

1.删除旧版本

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

2.安装仓库

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-test

3.安装Docker

安装最新版的
yum install docker-ce
安装指定版本
yum list docker-ce --showduplicates | sort -r

4.检查是不是安装好了

docker version

5.启动Docker

systemctl start docker

6.配置国内的镜像
很多教程里配置https://registry.docker-cn.com,还可以使用阿里云的镜像
这里写图片描述
这里写图片描述

不管用哪个,反正会有个URL

vi /etc/docker/daemon.json
{
  "registry-mirrors": ["your url"]
}

我目前使用到的Docker命令

1.下载镜像

docker image pull tomcat
可以在https://hub.docker.com找需要的镜像,比如我搜索了tomcat的官方镜像,是这样的结果:
这里写图片描述
说明镜像有这么多个版本标签,有latest的是默认的,说明直接下载tomcat镜像就是8.5.31版本的tomcat搭配jdk8,如果需要其他版本的镜像,需要这样docker image pull tomcat:9

2.列出已经下载的镜像

docker image ls
这里写图片描述

3.删除镜像

docker image rm tomcat

4.启动一个新的容器(如果镜像不存在会先自动下载镜像)

docker run tomcat
实际使用会加一些参数:

docker run -d -p 8081:8080 
--name jsartapi \
-v /data/tomcat/bin:/usr/local/tomcat/bin \
-v /data/tomcat/webapps/:/usr/local/tomcat/webapps/ \
-v /data/tomcat/logs/:/usr/local/tomcat/logs/ 
-v /data/tomcat/conf/:/usr/local/tomcat/conf/ 
tomcat

--name 指定容器的名称,后面可以根据名称停止,启动,删除容器的
-v 把本机的目录与容器内的目录关联起来,我这里把bin目录(方便修改启动文件),webapps目录(方便部署应用),logs目录(方便查看日志),conf目录(方便修改配置文件)都映射出来了
-d让容器在后台启动,如果不加这个参数,容器启动就跟你平时执行catalina.sh run的效果一样,ctrl+c的话tomcat也就停止了
-p 把容器里面监听的端口映射到本机的端口,我这里把8080映射到了本机的8081
还有一些这次没用到的但是常用的参数
-rm关闭容器后直接删除容器,我估计一般就做测试的时候用?容器删了里面的数据啊,配置啊都没啦,下次启动就是个光溜溜的东西了
-e 指定环境变量,比如我们看下mysql官方镜像
里面关于可配置环境变量的介绍,每个变量的含义啥的
这里写图片描述
--env-file 如果要用的环境变量太多了,用-e一个一个指定也很麻烦,就用这个直接指向一个或者多个文件好啦
--link 跟另一个容器连接起来,比如我启动了一个mysql容器叫mydb在监听3306端口呢(不用映射到本机),然后我的tomcat容器只需要连接到mysql容器就可以用3306端口了,怎么连接呢,就在启动的时候加上 --link mydb:mysql就行了,注意这里冒号后面的mysql表示mydb容器的别名,如果把mydb理解成一个主机,那mysql就是hostname,tomcat容器里用mysql:3306加上用户名密码就能访问数据库了
-m 设置容器使用内存最大值

5.查看容器列表

正在运行的
docker ps
或者
docker container ls

全部的
docker ps -a
或者
docker container ls --all

6.停止或启动已存在的容器

docker stop 容器短ID或者容器名称
docker start 容器短ID或者容器名称

7.删除容器(必须在容器停止状态)

docker rm 容器短ID或者容器名称

8.获得容器长ID

有些操作必须要用到容器的长ID,比如在容器与本机之间拷贝文件的docker cp命令,那我们必须先通过短ID获得长ID
docker inspect -f '{{.Id}}' 容器短ID或者容器名称

9.拷贝文件

把本地文件拷贝到容器中:
docker cp 本地路径 长ID:容器里的路径

把容器里的文件拷贝到本地:
docker cp 长ID:容器里的路径 本地路径

10.进入容器命令行

假如把容器当做一台独立服务器,而且启动的时候是加了-d参数在后台运行的,那我们怎么连接上去执行命令呢
docker exec -it 容器短ID或者容器名称 /bin/sh
退出
ctrl+q+p

11.查看日志

如果启动的时候是加了-d参数在后台运行的,但是现在想看下容器启动时的日志呢
docker logs 容器短ID或者容器名称

使用Docker部署Tomcat跑个应用

下载并启动tomcat

docker run -d --rm --name mytomcat tomcat

获得容器长ID

docker inspect -f '{{.Id}}' mytomcat

把容器里的bin,conf,webapps目录拷贝出来

容器里的tomcat目录是在/usr/local/tomcat
docker cp 长ID:/usr/local/tomcat/bin /data/tomcat
依次类推

停止容器

docker stop mytomcat

把我们的应用放到/data/tomcat/webapps中,并修改tomcat启动文件

vi /data/tomcat/bin/catalina.sh
在文件最上面备注区域的后面加上 export JAVA_OPTS="-server -Xms1400M -Xmx1400M"

docker run -d -p 8081:8080 --name mytomcat 
-v /data/tomcat/bin:/usr/local/tomcat/bin \
-v /data/tomcat/webapps/:/usr/local/tomcat/webapps/ \
-v /data/tomcat/logs/:/usr/local/tomcat/logs/ \
-v /data/tomcat/conf/:/usr/local/tomcat/conf/ 
tomcat

好了,应用跑起来了

目前对Docker的认识和使用还很浅薄,只是东拼西凑的使东西能用,如果有大神可以指出使用的不科学的地方将不胜感激。

推荐和参考的入门教程:http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html

猜你喜欢

转载自blog.csdn.net/u010588262/article/details/80432212