参考文献:
一、http://www.linuxidc.com/Linux/2014-12/110034.htm
二、http://www.sxt.cn/u/756/blog/5306
三、http://blog.csdn.net/world_ding/article/details/46602131
四、https://my.oschina.net/sunchp/blog/616526(安装tomcat)
五、http://blog.csdn.net/birdben/article/details/49879485(编写Dockerfile)
1、安装docker
yum install -y docker-io
2、启动docker,并且设置开机启动
service docker start
chkconfig docker on
or
systemctl start docker.service
systemctl enable docker.service
Docker 创建安装有tomcat的镜像,流程为:先下载镜像,用镜像启动容器,在容器中安装tomcat后保存安装了tomcat容器为新镜像。
3、下载官方centos到本地
docker pull centos
查看centos
docker images centos
4、运行docker
- [root@localhost ~]# docker run -i -t centos /bin/bash
- [root@dbf66395436d /]#
5、在容器里面安装jdk,tomcat
a、查看yum库中都有哪些jdk版本
yum search java|grep jdk
b、选择1.7版本进行安装
yum install java-1.7.0-openjdk
c、安装tomcat
(1)docker 退出容器 命令
ctrl+d 退出容器且关闭, docker ps 查看无
ctrl+p+q 退出容器但不关闭, docker ps 查看有
(2)如何把tomcat安装包传给容器
docker run -i -t -v /root/software/:/root/software38/ --privileged=true 67591570dd29 /bin/bash
-
-i:表示以“交互模式”运行容器
-
-t:表示容器启动后会进入其命令行
-
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
(3)Docker挂载主机目录,访问相应的文件出现Premission denied的权限访问问题
问题原因及解决办法
原因是CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题:
1.在运行容器的时候,给容器加特权,及加上 --privileged=true 参数:
docker run -i -t -v /root/software/:/root/software38/ --privileged=true 67591570dd29 /bin/bash
(4)tomcat安装完了之后,就要做tomcat镜像了
d、创建Tomcat镜像
(1)exit,退出之前的容器
(2)[root@promote ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
288a839be492 67591570dd29 "/bin/bash" 25 minutes ago Up 25 minutes berserk_mirzakhani
docker commit 67591570dd29 sso
[root@promote ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sso latest 08e0f0951fae 9 seconds ago 266.4 MB
docker.io/centos latest 67591570dd29 11 weeks ago 191.8 MB
e、启动Tomcat容器
正如上面所描述的那样,可以通过“镜像名”或“镜像 ID”来启动容器,与上次启动容器不同的是,
现在不再进入容器的命令行,而是直接启动容器内部的 Tomcat 服务。此时,需要使用以下命令:
docker run -p 58080:8080 -v /root/webapps/:/root/software38/sso/webapps/ --name sso_1 sso
遇到的问题
(1)进入容器之后,在容器中安装完软件(tomcat,jdk),再退出,创建新的镜像,然后再登录这个新的镜像做的容器,但是发现原来安装的软件(tomcat,jdk)都不见了?