用Dockerfile創建docker,注意下,建議在空文件夾下創建
本篇我們將完成:
1、用Dockerfile創建docker
2、端口映射
3、卷掛載,即docker目錄掛載到宿主機
1、用Dockerfile創建docker
在/opt/centos/目錄下,創建Dockerfile
# 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裏面的進程要一直掛起,要不然會退出,我們用這種辦法啓動
文件編輯完成後,我們來生成docker
注意命令後有個點,不要忘記,當前文件夾下面一定有Dockerfile #docker build -t test/test_app . 會打印一堆日誌,這不影響,如果有異常可以找出對應問題, 創建後,我們看下是不是已經成功了 # docker images REPOSITORY TAG IMAGE ID CREATED SIZE test/test_app latest 29175ec8a720 17 hours ago 836MB
2、端口映射
因爲上面的端口已經暴露出來,只要tomcat啓動了,端口就是通的,所以我們這裏要做的就是啓動docker並把端映射出來,這裏的8090是docker提供服務的端口
啓動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
3、卷掛載,即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目錄。