linux安装Docker并运行web项目
一、 在centos7.1下安装Docker
首先安装wget工具
# yum install -y wget
安装docker
# yum -y install docker-io
启动docker
# service docker start
加入开机启动
#chkconfig docker on
查看Docker安装是否成功,如下图所示即为成功
# docker version
二、 下载镜像,启动容器
1、 下载镜像
查看已下载的镜像
#docker images
从docker.io中下载ubuntu:14.04镜像到本地 /var/lib/docker/graph
#docker pull ubuntu:14.04
查看镜像是否下载成功:
# docker images
启动容器:
(下面启动命令是加载了宿主机的download文件夹到容器里的software文件夹中)
# docker run -i -t -v /download/:/mnt/software/ 7c09e61e9035 /bin/bash
这条命令比较长,我们稍微分解一下,其实包含以下三个部分:
docker run <相关参数> <镜像 ID> <初始命令>
也可以使用# docker run -i -t 7c09e61e9035 /bin/bash 来启动
· 其中,相关参数包括:
· -i:表示以“交互模式”运行容器
· -t:表示容器启动后会进入其命令行
· -v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
假设我们的所有安装程序都放在了宿主机的/download/目录下,现在需要将其挂载到容器的/mnt/software/目录下。
需要说明的是,不一定要使用“镜像 ID”,也可以使用“仓库名:标签名”,例如:oursuer/ubuntu:14.04。
初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。
退出容器使用Ctrl+d或输入exit
如果退出容器后,可以再次使用命令(注意,得先运行docker run之后然后被stop掉的容器才可以使用如下命令)
# docker start 容器ID 来启动容器
其中容器ID。使用命令docker ps -a来看,如下:
# docker ps -a
然后再次启动已启动过但现在是关闭的容器
# docker start 容器ID或容器名
这个命令只会启动容器,不会进入容器。要进入容器得用命令
# docker attach 容器ID或容器名
三、 安装tomcat和jdk1.7
首先先将JDK和tomcat的安装包.gz文件放在宿主机的/download文件夹下(在根目录新建download文件夹 然后可以选择从网上下载或者本地上传tomcat和jdk到centos7.1 的download文件之下)
启动容器并加载文件夹内容(下面启动命令是加载了宿主机的download文件夹到容器里的software文件夹中)
# docker run -i -t -v /download/:/mnt/software/ 7c09e61e9035 /bin/bash
或者使用下面这种方式,先启动容器再进入容器内部
1、JDK安装(本教程jdk版本为jdk-7u79-linux-x64.tar.gz)
# cd /usr
# mkdir java
# cd java
# mkdir jdk
# cd /mnt/software/
# tar zxvf jdk-7u79-linux-x64.tar.gz -C /usr/java/jdk
这里直接接文件解压到/usr/java/jdk目录。
配置环境变量:
# vi /etc/profile
添加如下内容:
#set java environment
export JAVA_HOME=/usr/java/jdk/jdk1.8.0_65
export JRE_HOME=/usr/java/jdk/jdk1.8.0_65/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
保存后执行。
# source /etc/profile
验证安装:出现java版本则安装成功
# java -version
2、Tomcat安装(版本 apache-tomcat-7.0.75.tar.gz)
解压安装包:
cd /usr/java
mkdir tomcat
cd /mnt/software/
tar zxvf apache-tomcat-7.0.75.tar.gz -C /usr/java/tomcat
配置环境
进入到上面的tomcat的bin文件夹下:
# vi setclasspath.sh
在配置文件中部添加如下代码:
export JAVA_HOME=/usr/java/jdk/jdk1.8.0_65
export JRE_HOME=/usr/java/jdk/jdk1.8.0_65/jre
保存退出后,在bin目录下执行
# https://blog.csdn.net/chicha2708/article/details/startup.sh
如果能看到tomcat启动成功则代表安装成功
四、 配置容器启动环境变量
这里是设置容器启动时加载的环境变量
1、 设置环境变量
首先,编辑.bashrc文件
# vi ~/.bashrc
然后,在该文件末尾添加如下配置:
export JAVA_HOME=/usr/java/jdk/jdk1.8.0_65
export JRE_HOME=/usr/java/jdk/jdk1.8.0_65/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
最后,需要使用source命令,让环境变量生效:
source ~/.bashrc
2、编写运行脚本
我们需要编写一个运行脚本,当启动容器时,运行该脚本,启动 Tomcat,具体过程如下:
首先,创建运行脚本:
vi /root/run.sh
然后,编辑脚本内容如下:
#!/bin/bash
source ~/.bashrc
sh /usr/java/tomcat/apache-tomcat-7.0.68/bin/catalina.sh run
为运行脚本添加执行权限:
# chmod u+x /root/run.sh
五、 退出容器
当以上步骤全部完成后,可使用exit或ctrl+d命令,退出容器。
随后,可使用如下命令查看正在运行的容器:
docker ps
此时,您应该看不到任何正在运行的程序,因为刚才已经使用exit命令退出的容器,此时容器处于停止状态,可使用如下命令查看所有容器:
# docker ps –a
记住以上Container ID(容器 ID),随后我们将通过该容器,创建一个可运行 Java Web 的镜像。
六、 创建java web镜像
使用以下命令,根据某个“容器 ID”来创建一个新的“镜像”:
# docker commit 89a47b5b749e lin_javaweb:0.1
上面的命令# docker commit 容器ID lin_javaweb:0.1 (命名)
查看镜像:
七、 启动 java web 容器
可见,此时已经看到了最新创建的镜像“lin_javaweb:0.1”,其镜像 ID 是“4487bd38df06”。正如上面所描述的那样,我们可以通过“镜像名”或“镜像 ID”来启动容器,与上次启动容器不同的是,我们现在不再进入容器的命令行,而是直接启动容器内部的 Tomcat 服务。此时,需要使用以下命令:
# docker run -d -p 58080:8080 --name javaweb lin_javaweb:0.1 /root/run.sh
解释:
-d:表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。
-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 58080 端口,这样就向外界暴露了 58080 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
--name:表示容器名称,用一个有意义的名称命名即可。
关于 Docker 网桥的内容,需要补充说明一下。实际上 Docker 在宿主机与容器之间,搭建了一座网络通信的桥梁,我们可通过宿主机 IP 地址与端口号来映射容器内部的 IP 地址与端口号,
在一系列参数后面的是“镜像名”或“镜像 ID”,怎么方便就怎么来。最后是“初始命令”,它是上面编写的运行脚本,里面封装了加载环境变量并启动 Tomcat 服务的命令。
当运行以上命令后,会立即输出一长串“容器 ID”,我们可通过docker ps命令来查看当前正在运行的容器。
在浏览器中,输入以下地址,即可访问 Tomcat 首页:
http://127.0.0.1:58080/
八、 在tomcat上部署我们的应用
接下来我们要部署我们的应用上去,思路是进入到容器里面去,此时可以把容器想象为一个新的机器,我们只需要到tomcat的webapp丢war,然后重启就行了.
1. 进入容器内部
# 89a47b5b749e
2. 查看tomcat的路径
/tomcat/webapps
3. 将war包传到宿主机上的download文件夹里面,然后通过webapps文件夹加载download文件来实现自动部署。
# docker run -i -t -v /download/:/usr/java/tomcat/tomcat7/webapps 89a47b5b749e /bin/bash
4.重启容器
# docker start 容器ID或容器名
5.在宿主机上打开58080端口,在外部也可以用访问web应用