十 SpringCloud - Docker( 三 )

4.2.1.4 ADD(add)語法: ADD <src> <dest><src>相對被構建的源目錄的相對路徑,也可以是一個遠程的文件url;<dest> 是container中的絕對路徑含義:它的基本作用是從宿主機系統的文件系統上復制文件到目標容器的文件系統 。1)如果源是一個URL,那該URL的內容將被下載并復制到容器中 。2)如果如果文件是可識別的壓縮格式,則docker會幫忙解壓縮 。3)如果要ADD本地文件,則本地文件必須在 docker build <PATH>,指定的path目錄下,默認當前目錄 。4)ADD只有在build鏡像的時候運行一次,后面運行container的時候不會再重新加載了 。4.2.1.5 ENV (env)語法: ENV <key> <value>含義: 用于設置環境變量 , 在image中設置一個環境變量 。注意: 設置了后,后續的RUN命令都可以使用,container啟動后,可以通過docker inspect查看這個環境變量,也可以通過在docker run --env key=value時設置或修改環境變量 。4.2.1.6 RUN (run)語法: RUN <command>含義: 它接受命令作為參數并用于創建鏡像,并在鏡像構建的過程中執行 。注意: RUN可以運行任何被基礎image支持的命令,RUN指令創建的中間鏡像會被緩存,并會在下次構建中使用 。如果不想使用這些緩存鏡像,可以在構建時指定--no-cache參數,如:docker build --no-cache4.2.1.7 CMD (cmd)語法: CMD ["executable","param1","param2"]CMD command param1 param2含義:用于container啟動時指定的操作 。該操作可以是執行自定義腳本,也可以是執行系統命令 。該指令只能在文件中存在一次 , 如果有多個 , 則只執行最后一條 。區別:CMD用于指定在容器啟動時所要執行的命令,而RUN用于指定鏡像構建時所要執行的命令 。4.2.1.8 ENTRYPOINT (entrypoint)語法: ENTRYPOINT ["executable", "param1", "param2"]ENTRYPOINT command param1 param2 含義:這個命令和CMD功能一樣 。指定容器啟動時執行的命令 , 可以多次設置,但是只有最后一個有效 。指令的使用分為兩種情況: 獨自使用: 如果你還使用了CMD命令且CMD是一個完整的可執行的命令,那么CMD指令和ENTRYPOINT會互相覆蓋,只有最后一個CMD或者ENTRYPOINT有效 。# CMD指令將不會被執行,只有ENTRYPOINT指令被執行CMD echo “Hello, World!”ENTRYPOINT ls -l CMD指令配合使用: 和CMD指令配合使用來指定ENTRYPOINT的默認參數,這時CMD指令不是一個完整的可執行命令,僅僅是參數部分;ENTRYPOINT指令只能使用JSON方式指定執行命令,而不能指定參數 。FROM centosCMD ["-l"]ENTRYPOINT ["/usr/bin/ls"]4.2.1.9 USER (user)語法: USER <user>含義: 設置指令 , 設置啟動容器的用戶,默認是root用戶 。4.2.1.10 EXPOSE (expose)語法: EXPOSE <port> [<port>...]含義: 暴露容器內部端口,可以設置多個例如: EXPOSE 5000,暴露的是容器內部端口,不是主機端口,如果外部想使用這個端口需要在運行時映射 。docker run -d -p 127.0.0.1:8080:5000 hello-world4.2.2 Dockerfile構建jdk+tomcat鏡像4.2.2.1 資源添加創建一個目錄存放資源# mkdir Dockerfile-tomcat把jdk壓縮包和tomcat壓縮包放到 Dockerfile-tomcat 的目錄下面

十 SpringCloud - Docker

文章插圖
4.2.2.1 編輯Dockerfile# 新建一個空文件Dockerfile,編輯Dockerfile內容 。# vi DockerfileDockerfile內容:
# 基礎鏡像FROM centos:7.6.1810# 作者信息MAINTAINER kh9x <kh9x@qq.com># 容器工作目錄WORKDIR /usr/local/# 在宿主機/usr/local/docker路徑下,上傳壓縮包 , 并添加tomcat和jdk到鏡像中,ADD會自動解壓ADD jdk-8u192-linux-x64.tar.gz /usr/local/ADD apache-tomcat-8.5.73.tar.gz /usr/local/# 設置環境變量ENV JAVA_HOME /usr/local/jdk1.8.0_192/ENV PATH $JAVA_HOME/bin:$PATHENV CATALINA_HOME=/usr/local/apache-tomcat-8.5.73# 配置啟動文件的權限RUN chmod +x /usr/local/apache-tomcat-8.5.73/bin/*.sh# 指定于外界交互的端口EXPOSE 8080# 定義在容器啟動之后的運行程序 , 保持docker容器運行ENTRYPOINT /usr/local/apache-tomcat-8.5.73/bin/startup.sh && /bin/bash && tail -f /usr/local/apache-tomcat-8.5.73/logs/catalina.out4.2.2.3 執行構建命令構建(tomcat+jdk)服務鏡像執行命令# docker build -t 鏡像名:tag . 舉例# docker build -t tomcat:8.5.73-jdk8-kh96 .注意:-t為執行鏡像的名稱,千萬不要忽略結尾處的 .,它表示當前上下文目錄 。不是Dockerfile的默認目錄構建完成后查看鏡像# docker images

推薦閱讀