Dockerfile編寫記錄

2021-09-29 12:44:31 字數 1615 閱讀 5823

# dockerfile 

近期幫朋友製作了docker映象以方便使用,在製作的過程中經歷了相容問題,映象size臃腫,映象內多服務問題,下面開始碼例項。

from euleros

workdir /opt

add opencv-4.1.0.tar.gz /opt

run rpm --rpmbuilddb && \

yum install openssh-server make cmake nginx vlc -y && \

mkdir -p /opt/opencv-4.1.0/build && \

cd /opt/opencv-4.1.0/build && \

cmake .. && \

make && make install && \

yum clean all && \

rm -rf /var/cache/yum/*

copy run.sh /opt/

expose 22 80 8080

extrypoint ["/opt/run.sh"]

上述檔案講解:

因為dockerfile中每乙個指令都會在docker映象中新增一層,它就像乙個儲存檔案一樣,這樣看起來比較易於擴充套件,把每一層添上乙個功能,最大到127層。

from euleros   # 該指令位於dokcerfile檔案的首行, 是告訴我們是基於哪個映象的基礎上做的擴充套件。

workdir /opt  # 該指令定義當前使用者登入使用的工作目錄位置,後續所有操作都在這個目錄

add opencv-4.1.0.tar.gz /opt   #複製檔案進入容器有2種copy和add,copy比較清晰就是複製,add命令相對功能就多一些可以對壓縮包進行解壓縮的操作

run rpm --rpmbuilddb && \

yum install openssh-server make cmake nginx vlc -y && \

mkdir -p /opt/opencv-4.1.0/build && \

cd /opt/opencv-4.1.0/build && \

cmake .. && \

make && make install && \

yum clean all && \

rm -rf /var/cache/yum/* 

# run 命令 ,每條操作命令都用"&&「與符號進行間隔,這樣所有操作的都被封裝到一層裡頭,這樣我們的儲存空間就相對會小一點

expose 22 80 8080 # 該命令,提示暴露給外部鏈結訪問使用的埠,用以提示在配置的時候如果操作。

entrypoint ["/opt/run.sh"]  # 該命令,是容器啟動執行的核心命令,指出了當前容器中執行的入口,當然它還有另乙個命令cmd,但是推薦entrypoint,它可以通過docker run 命令在最後面加上相關引數,讓容器內可以接收到。

# 關於run.sh指令碼,裡頭編輯了nginx和ssh的啟動命令.

#!/bin/bash

/usr/sbin/nginx

/usr/sbin/sshd -d

#注意,上述檔案中最後乙個指定需要不能執行中斷,是乙個不能結束的命令。

Dockerfile編寫語法

docker映象本質上就是乙個個基礎映象的堆疊,為了做出我們想要的映象,我們需要考慮最終映象所需的所有基礎環境,然後一層層堆疊.也就是不斷以基礎映象搭建上層映象.先看例子 version 1.0.0 create time 2015 12 25 11 04 author description 基於...

Dockerfile編寫教程

本文大部分內容來自於 建立乙個目錄並進入到該目錄下建立dockerfile檔案 vim root test dockerfile 需要安裝的映象檔案 這裡安裝了最新版的centos和python3.7.4以及安裝過程中所需要的依賴,開放埠為8000埠 from centos latest maint...

Dockerfile簡單編寫

1.簡單的dockerfilke 1 from alpine 2maintainer aze 3 workdir go src 4copy 5 expose 8777 6 entrypoint test2 test2 workdir 是工作目錄copy 是將當前目錄中的內容複製到工作目錄中 expo...