1:前提条件

默认要求是内核版本高于3.8

CentOS7系统,内核版本3.10

可以使用 uname -r  命令来看输出的内核信息

 

2:安装Docker

yum install docker

 

docker version

若输出了 Docker 的版本号,则说明安装成功。

 

 

 

3:启动Docker

安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动:

[root@localhost ~]# systemctl start  docker.service

[root@localhost ~]# chkconfig docker on

chkconfig docker on                            # 加入开机启动

重启docker

systemctl restart docker

停止docker

service docker stop或者systemctl stop  docker.service

 

看docker状态

systemctl status docker.service

 

4:下载官方的 CentOS 镜像到本地

[root@localhost ~]# docker pull centos

 

5:确认 CentOS 镜像已经被获取:

[root@localhost ~]# docker images centos

 

 

6:运行一个 Docker 容器

7:退出容器

输入 exit就好了。

 

1:开始查看镜像

二:在容器中搭建javaweb运行环境

1:使用以下命令即可启动容器

docker run -i -t --privileged=true -v /root/software/:/mnt/software/ 67591570dd29 /bin/bash

 

这个67591570dd29是当时的centos的id

 

所有安装程序都放在了宿主机的/root/software/目录下,现在需要将其挂载到容器的/mnt/software/目录下。

 

2:安装jdk和tomcat环境

cd /mnt/software


tar -xvf jdk-7u67-linux-x64.tar.gz (这里是你自己的JDK版本)
tar -xvf apache-tomcat-7.0.72.tar.gz  (这里是你的Tomcat版本)


cd ../..
mv /mnt/software/jdk1.8.0_111 /opt/jdk/

mv /mnt/software/apache-tomcat-8.5.9 /opt/tomcat/

 

3:编写运行脚本

在容器里面

cd /root

编写运行脚本,当启动容器的时候,启动tomcat .

touch run.sh (run.sh是在root目录下)
vi /root/run.sh

 

脚本内容:

#!/bin/bash
export JAVA_HOME=/opt/jdk/
export PATH=$JAVA_HOME/bin:$PATH
sh /opt/tomcat/bin/catalina.sh run

脚本编写完后,添加运行权限

chmod u+x /root/run.sh

4、退出容器
执行exit 退出容器 。 查看当前所有容器

docker ps -a

5:创建tomcat 镜像
根据上面的容器 id 创建tomcat 镜像 。

docker commit 6e56de1e8ccd xulei/javaweb:0.1

该容器的 ID 是“57c312bbaad1”,所创建的镜像名是“xulei/javaweb:0.1”,随后可使用镜像来启动 Java Web 容器

6:在宿主机webapps里面放入war包

或者是在:新建 /root/webapps/ROOT/index.html

<html>

<body>

<h2>Hello World!</h2>

</body>

</html>

6:启动javaweb容器

docker run -d -p 58080:8080 -v /root/webapps:/opt/tomcat/webapps --privileged=true --name javaweb xulei/javaweb:0.1 /root/run.sh

7:访问测试
 
http://192.168.10.11:58080/JSon

 

8:进入容器

Docker exec –I t javaweb/bin/sh

 

常见错误:

1:没有权限  挂载目录无法读取

这个是原因是CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题:
   1.在运行容器的时候,给容器加特权,及加上 --privileged=true 参数:
   docker run -i -t -v /soft:/soft --privileged=true 686672a1d0cc /bin/bash
   2.临时关闭selinux:
   setenforce 0
   3.添加selinux规则,改变要挂载的目录的安全性文本
/etc/sysconfig/selinux
 
 

2:过段时间后打开58080页面没反应

可以重启docker

systemctl restart docker

 

Logo

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

更多推荐