dockerfile 入門
- 前提已經知道常用的docker和linux命令
如容器的創建,運行, linux的文件命令,會上傳文件到linux等等
dockerfile簡介
之前我們所使用的鏡像都是別人構建好的,但是別人構建好的鏡像不一定能滿足我們的需求。為了滿足我們自己的某一些需求,此時我們就需要構建自己的鏡像,怎么構建?使用dockerfile。
dockerfile就是一個文本文件,在這個文本文件中可以使用docker所提供的一些指令來指定我們構建鏡像的細節,后面就可以使用這個dockerfile文件來構建自己的鏡像。
dockerfile文件內容一般分為4部分:
1、基礎鏡像信息(必選)
2、維護者信息(可選)
3、鏡像操作指令(可選)
4、容器啟動時執行的指令(可選)
常用命令
指令 | 用法 | 作用 |
---|---|---|
FROM | FROM image_name:tag | 指定一個構建鏡像的基礎源鏡像,如果本地沒有就會從公共庫中拉取,沒有指定鏡像的標簽會使用默認的latest標簽,可以出現多次,如果需要在一個dockerfile中構建多個鏡像。 |
MAINTAINER | MAINTAINER user_name | 描述鏡像的創建者,名稱和郵箱 |
RUN | RUN “command” “param1” “param2” | 用來執行一些命令,可以寫多條 |
ENV | ENV key value | 設置容器的環境變量,可以寫多條。 |
ADD | ADD source_dir/file | 將宿主機的文件復制到容器內,如果是壓縮文件,則復制后自動解壓 |
ENTRYPOINT | ENTRYPOINT “command” “param1” “param2” | 用來指定容器啟動時所執行的命令 |
入門案例
需求:使用dockerfile來構建一個包含Jdk17的centos7鏡像
分析:
1、基礎的鏡像的應該選擇centos:7 (FROM centos:7)
2、在自己所構建的鏡像中需要包含Jdk17,就需要把Jdk17添加到centos:7的基礎鏡像中
3、為了方便的去使用自己構建的鏡像中的Jdk17,就需要去配置環境變量
4、因為Jdk17僅僅是一個開發工具,并不是一個服務進程,因此在啟動容器的時候可以不指定任何的執行命令
實現步驟:
1、 準備環境
先下載好linux版本的jdk🔗官網
將Jdk17的安裝包上傳到linux服務器
我們是依賴 centos7鏡像創建, 要先拉取centos7的鏡像
docker pull centos:7
2、在Jdk17壓縮包所在目錄下創建一個dockerfile文件
內容為
FROM centos:7
RUN mkdir -p /usr/local/java
ADD jdk-17.0.12_linux-x64_bin.tar.gz /usr/local/java/
ENV JAVA_HOME=/usr/local/java/jdk-17.0.12
ENV PATH=$PATH:$JAVA_HOME/bin
3、使用docker build命令構建鏡像
docker build -t <鏡像名>:<標簽> .
如果你不寫標簽(如 :1.0),默認就是 :latest。
4、使用docker images查看鏡像構建情況
5、使用自己所構建的鏡像創建容器,測試Jdk17的安裝情況
直接交互式運行(-it)就可以, 進入用java命令看看生效不
docker run -it --name test01 mycentos-jdk17 /bin/bashjava -version