使用Docker搭建Java Web运行环境
2016-08-01 00:00
766 查看
1、启动容器
容器是在镜像的基础上来运行的,一旦容器启动了,我们就可以登录到容器中,安装自己所需的软件或应用程序。既然镜像已经下载到本地,那么如何才能启动容器呢?只需使用以下命令即可启动容器:
docker run -i -t -v /var/ftp/pub/:/mnt/software/ 25c5298b1a36 /bin/bash
这条命令比较长,我们稍微分解一下,其实包含以下三个部分:
docker run <相关参数> <镜像 ID> <初始命令>
其中,相关参数包括:
i:表示以“交互模式”运行容器
t:表示容器启动后会进入其命令行
v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
假设我们的所有安装程序都放在了宿主机的/var/ftp/pub/目录下,现在需要将其挂载到容器的/mnt/software/目录下。
需要说明的是,不一定要使用“镜像 ID”,也可以使用“仓库名:标签名”,例如:centos:latest。
初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。
2、登陆容器
登陆容器之前,首先看看当前有哪些容器在运行,执行命令sudo docker ps。[dddd@v069208183.sqa.zmf /home/dddd] $sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bed98ed5934a centos "/bin/bash" 15 hours ago Up 14 hours ecstatic_noyce
看见当前运行的容器为bed98ed5934a,接下来进入容器,通过执行命令sudo docker exec -it bed98ed5934a /bin/bash。
[dddd@v069208183.sqa.zmf /home/dddd] $sudo docker exec -it bed98ed5934a /bin/bash [root@bed98ed5934a /]# ps aux|grep java root 30 0.0 0.0 9040 672 ? S+ 06:44 0:00 grep --color=auto java [root@bed98ed5934a /]# ifconfig
这样你就进到这个container 里面了,这个bash退出也不会影响之前 docker run 启动的 bash。
3、安装相关软件
3.1、安装JDK
我习惯直接从其他服务器中直接拷贝文件,所以我用scp拷贝文件,由于是原生的centos没有配置scp服务,所以先安装scp服务。scp服务的安装包名字并不是scp,完整的名字为openssh-clients-5.3p1-70.1.alios6.x86_64:
[dddd@e011239162048.et15sqa /opt/java] $which scp /usr/bin/scp [dddd@e011239162048.et15sqa /opt/java] $rpm -qf /usr/bin/scp openssh-clients-5.3p1-70.1.alios6.x86_64
所以,在当前的容器中执行yum命令安装此服务:
[root@bed98ed5934a java]# yum -y install openssh-clients
scp服务安装结束后,开始拷贝远程服务器jdk-8u45-linux-x64.tar.gz
[root@bed98ed5934a java]# scp dddd@112.239.162.68:/opt/java/jdk-8u45-linux-x64.tar.gz ./
解压安装包
[root@bed98ed5934a java]# tar -zxvf jdk-8u45-linux-x64.tar.gz
配置环节变量,在/etc/profile文件末尾添加下述内容保存,并source /etc/profile使变更生效。
# JAVA export JAVA_HOME=/opt/java/jdk1.8.0_45/ export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
验证java配置OK,至此jdk安装完毕。
[root@bed98ed5934a java]# java -version java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) [root@bed98ed5934a java]# javac -version javac 1.8.0_45 [root@bed98ed5934a java]#
3.2、安装tomcat
拷贝tomcat文件到容器中,解压运行。4、编写服务启动脚本
容器关闭时,里面的服务也会随之停掉,所以为了方便和易操作,我们编写一个服务启动脚本,类似于Linux的启动服务。以启动 Tomcat为例,具体过程如下:
首先,创建运行脚本:
vi /root/run.sh
然后,编辑脚本内容如下:
#!/bin/bash source /etc/profile sh /opt/tomcat/apache-tomcat-7.0.57/bin/ catalina.sh run
注意:这里必须先加载环境变量,然后使用 Tomcat 的运行脚本来启动 Tomcat 服务。
最后,为运行脚本添加执行权限:
chmod u+x /root/run.sh
5、创建 Java Web镜像
使用以下命令,根据某个“容器 ID”来创建一个新的“镜像”:$sudo docker commit bed98ed5934a loongshawn/javaweb:0.1
指定容器的 ID 是“bed98ed5934a”,所创建的镜像名是“loongshawn/javaweb:0.1”,随后可使用镜像来启动 Java Web 容器。
6、启动Java Web容器
已经知道,需要运行的镜像为loongshawn/javaweb:0.1,通常情况下,可以通过“镜像名”或“镜像 ID”来启动容器,但这次不同,我们现在不再进入容器的命令行,而是直接启动容器内部的 Tomcat 服务。此时,需要使用以下命令:docker run -d -p 58080:8080 --name javaweb loongshawn/javaweb:0.1 /root/run.sh
启动后产生异常,指定端口创建容器启动失败:
Couldn't run auplink before unmount: exec: \"auplink\": executable file not found in $PATH
具体异常:
time="2016-06-26T23:36:32.192176586+08:00" level=info msg="POST /v1.19/containers/create?name=javaweb" time="2016-06-26T23:36:32.218425441+08:00" level=error msg="Couldn't run auplink before unmount: exec: \"auplink\": executable file not found in $PATH" time="2016-06-26T23:36:32.232759795+08:00" level=error msg="Couldn't run auplink before unmount: exec: \"auplink\": executable file not found in $PATH" time="2016-06-26T23:36:32.241180421+08:00" level=info msg="POST /v1.19/containers/56bc4a1a53ef3ef59c1590d7ffeff9dac9d6f48c792ccc635f7ad175653c88d2/start" time="2016-06-26T23:36:32.458249610+08:00" level=error msg="Couldn't run auplink before unmount: exec: \"auplink\": executable file not found in $PATH"
Github大牛答复:
You have installed a kernel which seems to be AUFS enabled on CentOS 6. CentOS isn't a Linux distribution on which AUFS is in any way supported. The aufs-tools package isn't available there and using AUFS on that Linux distribution isn't recommended, nor supported. That auplink problem isn't fixable without aufs-tools. Please upgrade to CentOS 7 if you wish to use a recent kernel in a supported setup.
https://github.com/docker/docker/issues/1300
https://github.com/docker/docker/pull/816
相关文章推荐
- 详解使用Docker搭建Java Web运行环境
- 详解使用Docker搭建Java Web运行环境
- 使用Docker搭建Java Web运行环境
- 使用 Docker 搭建 Java Web 运行环境
- 使用 Docker 搭建 Java Web 运行环境
- 使用 Docker 搭建 Java Web 运行环境
- Docker搭建Java Web运行环境
- 使用 Docker 搭建 Java Web 运行环境
- 使用 Docker 搭建 Java Web 运行环境
- 使用 Docker 搭建 Java Web 运行环境
- 使用 Docker 搭建 Java Web 运行环境
- 使用 Docker 搭建 Java Web 运行环境
- 使用 Docker 搭建 Java Web 运行环境
- 使用 Docker 搭建 Java Web 运行环境
- 使用docker快速搭建运行环境
- OSChina 技术周刊第二十期 —— 使用 Docker 搭建 Java Web 运行环境
- 使用 Docker 搭建 Java Web 运行环境
- 使用 Docker 搭建 Tomcat 运行环境
- 使用 Docker 搭建 Java Web 运行环境
- 使用 Docker 搭建 Java Web 运行环境