用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目錄。