Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。
社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。
社区版按照stable和edge两种方式发布,每个季度更新stable版本,如17.06,17.09;每个月份更新edge版本,如17.09,17.10。
一、安装docker
1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本
$ uname -r
2、使用 root
权限登录 Centos。确保 yum 包更新到最新。
$ sudo yum update
3、卸载旧版本(如果安装过旧版本的话)
$ sudo yum remove docker docker-common docker-selinux docker-engine
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5、设置yum源
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6、可以查看所有仓库中所有docker版本,并选择特定版本安装
$ yum list docker-ce --showduplicates | sort -r
7、安装docker
$ sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
$ sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
8、启动并加入开机启动
$ sudo systemctl start docker
$ sudo systemctl enable docker
9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
$ docker version
二、docker下载tomcat镜像并运行
1、搜索tomcat镜像
docker search tomcat
2、启动tomcat
#方式1:解释一下,-d表示后台运行,-p端口映射,前面的8088是外围访问端口(也就是本机ip对外开放的端口),后面8080是docker容器内部的端口
docker run -d -p 8088:8080 tomcat
#方式2:加--name tomcat的意思,表示为此容器启一个别名叫tomcat,以后再也不用操作容器id进行关闭、进容器目录什么的,直接把容器ID换成tomcat别名
加上--restart=always 表示此容器开机启动,只要docker也设置了开机自启,docker不死
docker run -d -p 8088:8080 --name tomcat --restart=always tomcat
目前使用方式1,最简单的
tomcat启动成功图:
3、显示当前正在运行的容器
$ docker ps
4、显示所有状态的容器
$ docker ps -a
容器的状态共有 7 种:created|restarting|running|removing|paused|exited|dead。
5、启动和关闭容器
docker start 容器id;#eg:docker start 6dcf57ebf34c
docker stop 容器id;
三、docker实现war部署
1、 新建一个文件夹testJavaProject,用来专门放测试项目的war,jar包
2、查看 正在运行容器
docker ps
3、进出docker里面的tomcat容器
进入:docker exec -it 9fccf0236619 /bin/bash
退出:exit
4、查看文件列表ls(不知道为什么在tomcat容器里面不能用ll查看文件列表命令,只能用ls了,ls命令还是可以的)
5、把war复制到文件夹中testJavaProject
6、复制war包到tomcat容器中
7、退出容器后执行:重启容器
docker restart [container name]
但我发现,我没有重启的时候去浏览器打开页面,也可以打开,原因如下
原来tomcat在运行状态下是真的自动解压war,由于只是写了简单的静态页面,所以不用重启tomcat。注意:一般情况下还是要重启的,因为这只是个测试项目并没有写后端java代码,如果java代码有修改,tomcat是必须要重启的
四、使用Dockerfile制作镜像(未实际操作)
借鉴博客:https://www.imooc.com/article/44582
借鉴博客(此博客有连接数据库):https://segmentfault.com/a/1190000013096870
1、准备环境
【注意:搞这些东西的时候一定要关闭服务器的防火墙】
CentOS7服务器一台:192.168.26.233 (服务器上安装docker就不多说了)
springboot项目的demo一个:thymeleaf-master (以前用来测试thymeleaf技术的一个小demo项目,正好拿来用)
2、准备测试的springboot项目:thymeleaf-master
- thymeleaf-master项目的指定启动端口为:8082
- thymeleaf-master项目本地启动后的页面:
3、把此项目打成jar包,操作如下图:
4、docker把jar包构建成镜像
1)把上面打好的jar包,上传到CentOS服务器上,我在服务器上新建了目录/usr/local/dev/docker/testProject/,把jar包丢到testProject目录里,再建一个Dockerfile文件,此文件是来用构建镜像的配置,如下图:
2)Dockerfile配置文件的内容:
FROM java:8
VOLUME /tmp
ADD thymeleaf-master-1.0-SNAPSHOT.jar /thymeleaf-master.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/thymeleaf-master.jar"]
5、执行docker构建镜像命令
#thymeleaf-master表示生成镜像的名称,(注意后面有个点.)
docker build -t thymeleaf-master .
6、查看打成的镜像是否存在:(可以看到有两镜像,已经成功了。docker.io/java估计是docker自动打成的jar包运行环境jdk8镜像)
7、运行刚才构建成的镜像
#这里我项目用的8082端口,这里我也映射8082端口,加上--name xxx是为了给容器取别名,方便docker命令操作
docker run -d -p 8082:8082 --name thymeleaf-master thymeleaf-master
来源: