用Dockerfile建立docker,注意下,建议在空文件夹下建立html
本篇咱们将完成:linux
一、用Dockerfile建立dockernginx
二、端口映射web
三、卷挂载,即docker目录挂载到宿主机docker
一、用Dockerfile建立dockershell
在/opt/centos/目录下,建立Dockerfileapache
# Centos based container with Java and Tomcat FROM 127.0.0.1:5000/centos:v2 #镜像源,这里为私有 MAINTAINER jack.zhang #做者 ENV REFRESHED_AT 2017-8-28 #日期 # Prepare environment #声明建立变量 ENV JAVA_HOME /opt/jdk1.8.0_131 ENV JRE_HOME /opt/jdk1.8.0_131/jre ENV CLASSPATH .:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH ENV PATH $JAVA_HOME/bin:$JRE_HOME/bin:$PATH RUN mkdir /data RUN yum install -y wget #建议搭建本地软件源,取包比较快,当时直接yum安装也能够,前提宿主机能够上网 RUN wget http://192.168.10.144:9098/jdk-8u131-linux-x64.tar.gz && \ #下载10.144安装包 tar -xvf jdk-8u131-linux-x64.tar.gz -C /opt/ # Install Tomcat RUN wget http://192.168.10.144:9098/tomcat.tar.gz && \ tar -xvf tomcat.tar.gz -C /data/ && \ mv /data/tomcat /data/tomcat8 RUN chmod +x /data/tomcat8/bin/*sh VOLUME ["/data/tomcat8/webapps/"] EXPOSE 8090 #对外暴露的端口,即对外提供服务的端口 EXPOSE 8009 ENTRYPOINT ["/data/tomcat8/bin/catalina.sh", "run"] #启动tomcat,注意, docker里面的进程要一直挂起,要否则会退出,咱们用这种办法启动
文件编辑完成后,咱们来生成dockercentos
注意命令后有个点,不要忘记,当前文件夹下面必定有Dockerfile #docker build -t test/test_app . 会打印一堆日志,这不影响,若是有异常能够找出对应问题, 建立后,咱们看下是否是已经成功了 # docker p_w_picpaths REPOSITORY TAG IMAGE ID CREATED SIZE test/test_app latest 29175ec8a720 17 hours ago 836MB
二、端口映射tomcat
由于上面的端口已经暴露出来,只要tomcat启动了,端口就是通的,因此咱们这里要作的就是启动docker并把端映射出来,这里的8090是docker提供服务的端口bash
启动docker并映射端口 注意,-p 就是端口映射 #docker run -d -p 8090:8090 --restart=always --name tomcat test/test_app 看下进程是否启动成功 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 923bc1dda78f test/test_app "/data/tomcat8/bin..." 29 minutes ago Up 29 minutes 8009/tcp, 0.0.0.0:8090->8090/tcp tomcat
用宿主机访问IP:端口,访问是否是能够访问到了?
须要说明的是,端口映射其它是基于iptables的,因此若是docker启动没问题,进程也存在,确认宿主机的iptables 是否启动
centos iptables
#systemctl start firewalld.service #启动firewall
三、卷挂载,即docker目录挂载到宿主机
其它挂载目录到宿主机,没什么特别的,有些文档介绍的好像有多么深奥,其实没啥
只是启动命令加下参数罢了,
先关闭运行中的docker
#docker stop 923bc1dda78f 923bc1dda78f 是docker的进程号,经过docker ps 能够看获得
好了,挂载目录启动
-v 命令, 注意 前面的是宿主机的目录,后面提docker目录 即把宿主机的/usr/share/nginx/html 挂载到docker的/data/tomcat8/webapps/ROOT/下 # docker run -d -v /usr/share/nginx/html:/data/tomcat8/webapps/ROOT -p 8090:8090 --restart=always --name tomcatapp test/test_app 查看下进程 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 923bc1dda78f test/test_app "/data/tomcat8/bin..." 29 minutes ago Up 29 minutes 8009/tcp, 0.0.0.0:8090->8090/tcp tomcat 咱们进入到docker shell 看下是否是成功挂载 # docker exec -it 923bc1dda78f /bin/bash #923bc1dda78f 为进程号 [root@923bc1dda78f /]# cd /data/tomcat8/webapps/ROOT/ [root@923bc1dda78f ROOT]# ls 404.html 50x.html apache-tomcat-8.5.15-src.tar.gz index.html jdk-8u131-linux-x64.tar.gz nginx-logo.png poweredby.png 能够看到已经功能挂载
直接访问宿主机:端口,是否是首页不同的~~
这样是否是很方便了,咱们直接维护宿主机的目录就至关于维护docker目录。