docker学习笔记(四)——Dockerfile创建自定义镜像
生活随笔
收集整理的這篇文章主要介紹了
docker学习笔记(四)——Dockerfile创建自定义镜像
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用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:$PATHRUN?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?TomcatRUN?wget?http://192.168.10.144:9098/tomcat.tar.gz?&&?\tar?-xvf?tomcat.tar.gz?-C?/data/?&&?\mv?/data/tomcat?/data/tomcat8RUN?chmod?+x?/data/tomcat8/bin/*shVOLUME?["/data/tomcat8/webapps/"]EXPOSE?8090????#對外暴露的端口,即對外提供服務的端口 EXPOSE?8009ENTRYPOINT?["/data/tomcat8/bin/catalina.sh",?"run"]??? #啟動tomcat,注意,?docker里面的進程要一直掛起,要不然會退出,我們用這種辦法啟動文件編輯完成后,我們來生成docker
注意命令后有個點,不要忘記,當前文件夾下面一定有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????????836MB2、端口映射
因為上面的端口已經暴露出來,只要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?#啟動firewall3、卷掛載,即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目錄。
轉載于:https://blog.51cto.com/xiangcun168/1958270
總結
以上是生活随笔為你收集整理的docker学习笔记(四)——Dockerfile创建自定义镜像的全部內容,希望文章能夠幫你解決所遇到的問題。