docker
FROM
指定基礎映象,比如FROM centos:7
FROM centos:7
RUN
在映象內部執行一些命令,比如安裝軟體,配置環境等等,執行可以使用“”
RUN groupadd -r mysql && useradd -r -g mysql mysql
ENV
設定變數的值,ENV MYQL_MAJOR 5。7,可以透過docker run ——e key=value修改,後面可以直接使用${YSQL_MAJOR}
ENV MYSQL_MAJOR 5。7
LABEL
設定映象標籤
LABEL email =“timor@163。com”LABEL name = “timor”
VOLUME
指定資料的掛載目錄
VOLUME /var/lib/mysql
COPY
將主機的檔案複製到映象內,如果目錄不存在,會自動建立所需要的目錄,注意只是複製,不會提取和解壓
COPY springboot。jar /opt/springboot/
ADD
將主機的檔案複製到映象內,和COPY類似,只是ADD會對壓縮檔案提取和解壓
ADD application。yml /etc/
WORKDIR
指定映象的工作目錄,之後的命令都是基於此目錄工作,若不存在則建立
WORKDIR /usr/localWORKDIR tomcatRUN touch demo。txt
會在/usr/local/tomcat下建立demo。txt
WORKDIR /rootADD app。yml test/
會在/root/test下多出一個app。yml檔案
CMD
容器啟動的時候預設會執行的命令,若有多個CMD命令,則最後一個生效
CMD [“mysql”]或CMD mysql
ENTRYPOINT
和CMD的使用類似
ENTRYPOINT [“docker-entrypoint。sh”]
和CMD的不同 docker run 執行時,會覆蓋CMD的命令,而ENTRYPOINT不會。
EXPOSE
指定映象要暴露的埠,啟動映象時,可以使用-p 將該埠對映給宿主機
EXPOSE 3306
Dockerfile實戰Springboot專案
1。在docke環境中新建一個目錄 “springboot”
mkdir springboot
上傳“springboot。jar”到該目錄下,並且在此目錄建立Dockerfile檔案
建立Dockerfile檔案,編寫內容
FROM openjdk:8 MAINTAINER timor LABEL name=“springboot” version=“1。0” author=“timor” COPY springboot-demo。jar springboot。jar CMD [“java”,“-jar”,“springboot。jar”]
基於Dockerfile構建映象
docker build -t spring-boot-image 。
基於image建立container
docker run -d ——name springboot -p 8081:8080 spring-boot-image
檢視啟動日誌
docker logs springboot ——tail=100 -f -t
在宿主機上訪問
curl localhost:8081/dockerfile
再次啟動一次
docker run -d ——name springboot2 -p 8082:8080 spring-boot-image