认识docker
docker是一个开源的应用容器引擎,docker利用Linux内核虚拟机化技术(LXC),提供轻量级的虚拟化隔离进程和资源。LXC不是硬件的虚拟化,它是Linux内核的级别的虚拟机化,相对于传统的虚拟机,节省了很多硬件资源。docker可以让开发者将应用方便的打包到一个可移植、轻量的容器中,简单快捷。容器之间采用沙箱机制,相互直接相对封闭,容器的性能开销很低。
优点:
1)docker简化了部署的流程,只要将应用打包到容器中,将容器运行在Linux中即可;
2)docker启动速度比虚拟机快的很多;
3)docker在资源利用率上比虚拟机高很多,同一台服务器上可以跑多个容器,但是很难跑多个虚拟机。
4)docker节省开支,开发者可以不用为了高效的性能而去购买多的硬件设备,docker的虚拟化可以在少量的服务器上实现分布式和集群。
docker安装
docker在可以支持Linux3.8的内核,但是好像并不是那么理想,在Linux3.10以及以上版本可以较好的兼容,对于centos,可以选择7.0以及以上版本。如果内核比较低可以先升级内核。
1、升级内核
1)查看内核
uname -r
2)更新yum
sudo yum update
3)通过yum升级内核
yum install -y kernel
4)重启系统
shutdown -r now
2、安装docker
yum install -y docker-io
启动docker
systemctl start docker
加入开启重启项
systemctl enable docker
查看docker版本
docker version
3、安装Tomcat
1)查找docker镜像
docker search tomcat
2)把镜像拖下来(一般选择第一个,也就是star数最多的,使用name进行pull)
docker pull docker.io/tomcat
3) 查看镜像
docker images
4) 启动Tomcat容器
docker run -d --name fist_tomcat --privileged=true -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime -p 8081:8080 docker.io/tomcat
参数说明
-d 表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。
-p 表示宿主机(8081)与容器的端口映射(8080,Tomcat容器固定的端口为8080,必须映射到8080)
–name 表示容器名称,用一个有意义的名称命名即可。
-v 表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
-e 运行上海时区格式
–privileged=true 开启特权,可以设置容器里的内核参数
-e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime
都是用来解决容器时区的问题
当然也可以进入容器修改时区
看到有一串字符串说明启动成功了
4) 查看容器
docker ps -s
5)进入容器(这里采用容器name)
docker exec -it 容器id\容器名称 bash
查看时区发现正确
如果时区不正确可以在容器内部修改时区
echo "Asia/Shanghai" > /etc/timezone
然后退出容器
exit
重启容器
查看时区
date
或者cat /etc/timezone
docker restart 容器id/容器名称
网上教程基本上采用下面这种,但是这种重启容器时间又变回来了
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
6)查看jdk(先要进入容器)
4、在Tomcat中运行项目
1)可以通过挂载的方式运行项目(这里暂且不演示)
2)可以将项目复制到容器中运行
先将项目 复制到/home/work中
复制项目到容器
docker cp /home/work/hello.war 容器id/容器名称:/usr/local/tomcat/webapps
启动容器
docker restart 容器id/容器名称