从基础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 强制删除一个运行中的容器

相关推荐