docker使用Dockerfile構建鏡像

    docker獲取鏡像,除了docker pull,docker load之外還可以通過自定義Dockerfile的方式通過命令docker build 來構建新鏡像。通過這種方式可以很自由的定義想要安裝的鏡像,想要安裝的軟件,配置環境變量,更改配置文件等一切人爲操作。先介紹Dockerfile中一些常見的語法:

  • FROM:來源,可以是本地已經安裝的鏡像,也可以是docker hub倉庫中的鏡像
  • MAINTAINER:維護者信息,一般輸入個人郵箱
  • COPY|ADD:拷貝/添加本地文件文件夾到操作系統鏡像容器中,這個很方便用戶配置安裝軟件,不過COPY只是拷貝,而ADD不僅是拷貝,如果是壓縮文件,它默認會解壓,所以無須人工進行tar或者unzip命令來解壓,強行解壓還會報錯,提示解壓原始文件不存在。
  • WORKDIR:切換工作空間,類似於linux/dos命令的cd
  • RUN:運行linux命令,後面緊跟的是linux命令
  • ENV:設置環境變量
  • CMD:容器啓動時執行的命令,有多個命令的話只會執行最後一個,該指令與ENTRYPOINT功能類似。

    通過Dockerfile構建的鏡像是一個二次鏡像,加工過的,在這個鏡像裏面,我們需要一個原始鏡像,也就是FROM指定的鏡像,在後面,我們可以進行拷貝文件,執行linux命令,暴露端口,最後還必須指定容器啓動之後運行的命令CMD或者ENTRYPOINT,否則,構建鏡像可能不會報錯,但是一通過docker run,我們的鏡像就是Exit狀態。

    簡單的示例:這個示例中,我們通過拷貝已經編譯好的redis安裝目錄到centos7-ansible原始鏡像中,構建一個redis的docker服務鏡像。

    1、準備Dockerfile文件

    

    2、在Dockfile文件所在的目錄,我們只需要存放Dockfile文件和redis.tar.gz壓縮文件即可。 

    3、最後構建鏡像的命令 docker build -t tagname:version . 。最後的一個點表示當前目錄,這個參數必須指定一個目錄,默認情況下就是當前目錄,docker命令運行後, 會默認找到當前文件夾下的Dockerfile,Dockerfile中配置的關於ADD命令都是相對於這個目錄。

    

    4、利用我們構建的鏡像來啓動一個docker服務。

      

    鏡像啓動正常,會顯示Up狀態,這時候,我們可以通過docker exec -it redis /bin/bash進入容器查看或者使用redis服務。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章