从基础centos镜像构建一个jdk7+tomcat7的镜像文件
容器是OS级别的,轻量级的虚拟化技术,采用的是Linux的LXC技术,故只能运行在linux下的环境。
1、在centor7下安装docker
说明:docker采用的是cs架构
2、准备centor基础镜像
docker pull centor
说明:默认会拉取同名的不同版本的所有镜像
3、在宿主机上准备容器镜像需要的内容
- 创建工作目录, mkdir -p /z/docker
- 下载jdk7的tar.gz包http://download.oracle.com/otn/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz
- 解压到目录/z/docker下, 并重命名为jdk
- 下载tomcat7的tar.gz包http://mirrors.cnnic.cn/apache/tomcat/tomcat-7/v7.0.75/bin/apache-tomcat-7.0.75.tar.gz
- 解压到目录/z/docker下, 并重命名为tomcat
说明:容器本身是一个进程,所以不会存储文件,但是又需要实际的静态程序文件,所以需要一个挂载的过程。这个和实际的linux目录挂载到物理磁盘有些类似
4、构建docker file
cd /z/docker
vi Dockerfile
#插入以下内容
#使用的基础镜像
FROM registry.cn-hangzhou.aliyuncs.com/repos_zyl/centos:0.0.1
#作者信息
MAINTAINER first"[email protected]"
#创建目录
RUN mkdir -p /z/java/jdk1.7.0_79
#把当前目录下的jdk文件夹添加到镜像
ADD jdk /z/java/jdk1.7.0_79
#创建tomcat目录
RUN mkdir -p /z/java/apache-tomcat-7.0.70
#把当前目录下的tomcat文件夹添加到镜像
ADD tomcat /z/java/apache-tomcat-7.0.70
#添加环境变量
ENV JAVA_HOME /z/java/jdk1.7.0_79
ENV CATALINA_HOME /z/java/apache-tomcat-7.0.70
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
#暴露8080端口
EXPOSE 8080
#启动时运行tomcat
CMD ["/z/java/apache-tomcat-7.0.70/bin/catalina.sh","run"]
5、开始构建镜像文件
docker build -t repos_local/centos-jdk7-tomcat7:0.0.1 .
说明:-t设置tag名称,规则如:registry/image:tag, 后面的点表示使用当前目录下的dockerfile文件
6、通过查询命令验证
docker images
7、通过启动后访问验证
docker run -d -p 8081:8080 --name test-tomcat repos_local/centos-jdk-tomcat7:0.0.1
说明:-d表示后台运行,-p 宿主机端口:容器端口映射
--name 给运行的容器起个别名,容易识记和进行后续操作
8、防火墙禁用
如果系统没禁用防火墙,需要单独开发宿主机的8081端口。操作和说明如下:
#直接执行命令, 开放端口号(重启后可能失效)
iptables -A INPUT -ptcp --dport 8081 -j ACCEPT
##或者
#直接修改iptables, 重启后不会失效
vi /etc/sysconfig/iptables
#插入以下内容
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT
重启iptables服务
service iptables restart
对于centos7可以直接使用firewall-cmd来开放端口:
#开放8081端口,permanent为永久开放
firewall-cmd --zone=public --add-port=8081/tcp --permanent
#重新读取配置
firewall-cmd --reload
#查看已经开放的端口
firewall-cmd --list-all
如果提示FirewallID is not running,
需要通过sodo start firewalld.service,启动firewalld服务
9、在地址栏输入ip+8081的访问地址,查看和验证
10、其他命令
docker ps -a 查看容器的运行状态,如果status列是Up,表示的是运行中
docker stop test-tomcat 停止运行的容器
docker start test-tomcat 启动一个停止的容器
docker rm 删除一个exited状态的容器
docker rm -f 强制删除一个运行中的容器