本文阐述如何创建一个docker实例,以及安装tomcat8和 jdk1.8
① 原材料准备
准备一台centos的linux操作系统一枚
配置要求:
必须是64位操作系统,建议内核在3.8以上,查看内核命令:uname -r
② 使用yum安装docker
# yum install docker
# docker version
# systemctl start docker.service
以上三步是安装docker,查看docker版本(是否安装成功),启动docker服务

③ 获取centos镜像
docker下载centos镜像
docker pull centos:7.2.1511
查看本地镜像信息
docker images

REPOSITORY :仓库名称
TAG : 镜像标签 (后面可用于发布到个人dockerhub上)
IMAGE ID : 镜像ID
CREATED : 创建时间
SIZE : 大小
下载的centos镜像ID为:======4cbf48630b46======
② 创建容器
容器是基于镜像创建的,执行镜像生成容器,方可进入容器
启动容器命令: docker run <相关参数> <镜像 ID> <初始命令>
启动容器
docker run -i -t -v /root/software/:/mnt/software/ 4cbf48630b46 /bin/bash
参数解析
-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入其命令行
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
/bin/bash:一旦容器启动,需要执行的命令,当前使用 "/bin/bash", 表示启动后直接进bash shell
tips:这里挂载的意思就是 4cbf48630b46创建的容器访问 /mnt/software/ 目录下的文件就相当于访问 宿主机的 /root/software/下的文件,且两者文件夹里内容相同
==执行完上面命令后,自动会进入容器内部。==

退出当前容器命令:ctrl+d 或者 直接输入 exit

进入容器命令
docker ps : 查看当前运行的容器信息(刚才那种退出方式就会默认关闭容器)
docker ps -a : 查看关闭的容器

docker start [容器ID]:启动容器
docker exec -it [容器ID] /bin/bash : 进入容器

进入容器的方式有好多种,还有docker attach [容器ID],但是在下用这个命令经常卡死
常用进入容器传送门:
https://blog.csdn.net/skh2015java/article/details/80229930
③在容器内部安装tomcat8+jdk1.8 【版本一样安装
下载 tomcat和jdk的 tar包,通过ftp工具上传到宿主服务器的/root/software/文件下,因为前面做了挂载,所以待会进入docker容器里的/mnt/software/文件夹下也是可以看到的

进入到容器内部,进入/mnt/software/ 你会发现这里已经有了两个tar包
cd /mnt/software/

好了,接下在安装tomcat 和 jdk 和 平时在linux安装差不多
解压,然后丢到 /opt/ 文件目录下
tar -zxvf apache-tomcat-8.0.53.tar.gz
tar -zxvf jdk-8u141-linux-x64.tar.gz
mv apache-tomcat-8.0.53 /opt/tomcat
mv jdk1.8.0_141/ /opt/jdk
设置java 环境变量
vi /etc/profile
在文件末尾加上
JAVA_HOME=/opt/jdk/
JAVA_BIN=/opt/jdk/bin
JRE_HOME=/opt/jdk/jre
CLASSPATH=/opt/jdk/jre/lib:/opt/jdk/lib:/opt/jdk/jre/lib/charsets.jar
export JAVA_HOME JAVA_BIN JRE_HOME PATH CLASSPATH
使得配置立马有效
source /etc/profile
vi ~/.bashrc
在文件末尾加上
export JAVA_HOME=/opt/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
使得配置立马有效
source ~/.bashrc
看了网上好多设置一个就可以了,但是在下总是不成功,很生气所以两个都设置了。(实践得出 设置 bashrc 这个就可以了)
看看成功没
java -version

OK !!!
这个容器的初衷是用来当web服务器,所以可以把这个容器理解为 启动容器,则启动tomcat,所以这里要写个启动脚本
vi /root/run.sh
在里面加入,用于启动tomcat
#!/bin/bash
source ~/.bashrc
sh /opt/tomcat/bin/catalina.sh run
设置run.sh 权限
chmod u+x /root/run.sh
这个时候都安装完毕,输入eixt退出容器
回顾一下,我们是用了centos镜像,运行,生成了一个容器,然后再容器里面安装了 jdk 和tomcat ,这个时候我们可以创建一个tomcat镜像
④ 创建tomcat镜像
根据之前安装好环境的容器ID 创建一个镜像
docker commit [容器ID] mytomcat:1.0
docker ps -a
docker commit 8acb7b3d6782 mytomcat:1.0
docker images

好了,tomcat镜像已经完毕
⑤ 启动tomcat容器
首先再宿主服务器创建一个webapps文件夹,用来存放项目,映射容器中的 tomcat 的webapps,这里就写个index.html 得了,存放在 宿主机的 /root/webapps/test
备注:不要把index.html 直接丢到webapps下,否则访问会 404,创建一个文件夹放index.html ,这里是test文件夹。
mkdir /root/webapps/test
cd /root/webapps/test
vi index.html
在index.html 写个hello

==启动tomcat==
docker run -d -p 58080:8080 -v /root/webapps/:/opt/tomcat/webapps/ --name mytomcat_1 mytomcat:1.0 /root/run.sh
参数解释:
-d:以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。
-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 58080 端口,这样就向外界暴露了 58080 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 58080 端口,这样就向外界暴露了 58080 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
--name:表示容器名称,用一个有意义的名称命名即可。
查看是否启动成功
docker ps

好了浏览器访问: ip:58080/test/index.html

OK 大功告成,下篇写如何把自己的镜像丢到dockerhub 上面,然后随时随地可以拉取下来以供使用。
网友评论