docker學習筆記(四)——Dockerfile建立自定義鏡像

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

相關文章
相關標籤/搜索