dockerfile定製docker的指令碼檔案

2022-05-15 14:52:49 字數 2896 閱讀 4163

dockerfile檔案詳解

#

指定作業系統

from scratch #

製作base image 基礎映象,盡量使用官方的image作為base image

from centos #

使用base image

from ubuntu:14.04 #

帶有tag的base image

#定義dockerfile一些引數資訊的指令

label version=「1.0」 #

容器元資訊,幫助資訊,metadata,類似於**注釋

label maintainer=「[email protected]"

#對於複雜的run命令,避免無用的分層,多條命令用反斜線換行,合成一條命令!

run yum update && yum install -y vim \

python-dev #

反斜線換行

run /bin/bash -c "

source $home/.bashrc;echo $home」

#指定進入容器後的預設路徑

workdir /root #

相當於linux的cd命令,改變目錄,盡量使用絕對路徑!!!不要用run cd

workdir /test #

如果沒有就自動建立

workdir demo #

再進入demo資料夾

run pwd #

列印結果應該是/test/demo

add

andcopy

add 本地的資料 容器內的存放路徑

#add除了有新增的作用,還有解壓縮的作用

add hello.txt / #

把本地檔案新增到映象中,吧本地的hello可執行檔案拷貝到映象的/目錄

add test.tar.gz / #

新增到根目錄並解壓,自動的解壓test.tar.gz 解壓為test

workdir /root

add hello test/ #

進入/root/ 新增hello可執行命令到test目錄下,也就是/root/test/hello 乙個絕對路徑

copy hello test/ #

等同於上述add效果

add與copy

-優先使用copy命令

-add除了copy功能還有解壓功能

新增遠端檔案/目錄使用curl或wget

env

#環境變數,盡可能使用env增加可維護性

env mysql_version 5.6 #

設定乙個mysql常量

run yum install -y mysql-server=「$」

------這裡需要稍微理解一下了-------中級知識---先不講

volume

andexpose

儲存和網路

run

and cmd and

entrypoint

run:執行命令並建立新的image layer

cmd:設定容器啟動後預設執行的命令和引數

entrypoint:設定容器啟動時執行的命令

shell格式和exec格式

run yum install -y vim

cmd echo 」hello docker」

entrypoint echo 「hello docker」

exec格式

run [「apt-get」,」install」,」-y」,」vim」]

cmd [「/bin/echo」,」hello docker」]

entrypoint [「/bin/echo」,」hello docker」]

通過shell格式去執行命令,會讀取$name指令,而exec格式是僅僅的執行乙個命令,而不是shell指令

cat dockerfile

from centos

env name docker

entrypoint [「/bin/echo」,」hello $name」]#

這個僅僅是執行echo命令,讀取不了shell變數

entrypoint [「/bin/bash」,」-c」,」echo hello $name"

]cmd

容器啟動時預設執行的命令

如果docker run指定了其他命令(docker run -it [image] /bin/bash ),cmd命令被忽略

如果定義多個cmd,只有最後乙個執行

entrypoint

讓容器以應用程式或服務形式執行

不會被忽略,一定會執行

最佳實踐:寫乙個shell指令碼作為entrypoint

copy docker-entrypoint.sh /usr/local/bin

entrypoint [「docker-entrypoint.sh]

expose 27017cmd [「mongod」]

[root@master home]

#more dockerfile

from centos

env name docker

#cmd ["/bin/bash","-c","echo hello $name"]

entrypoint ["

/bin/bash

","-c

","echo hello $name」]

dockerfile檔案詳解

dockerfile定製python flask-web程式例項

Dockerfile 定製映象

docker 是乙個文字檔案,包含一條條指令 以構建nginx映象為例,這次我們用docker去構建定製映象 建立目錄並建立dockerfile mkdir mynginx cd mynginx touch dockerfile其內容有 from nginx run echo usr share n...

Dockerfile定製映象

映象定製實質就是定製每一層所新增的配置 檔案。dockerfile就是乙個指令碼來構建和定製映象,把每一層的修改 安裝 構建 操作都寫入指令碼。以此來解決體積 映象構建透明等問題。dockerfile是乙個文字檔案,包含一條條指令 instruction 每一條指令構建一層,每一條指令的內容,就是描...

用Dockerfile定製映象

從剛才的 docker commit 的學習中,我們可以了解到,映象的定製實際上就是定製每一層所新增的配置 檔案。如果我們可以把每一層修改 安裝 構建 操作的命令都寫入乙個指令碼,用這個指令碼來構建 定製映象,那麼之前提及的無法重複的問題 映象構建透明性的問題 體積的問題就都會解決。這個指令碼就是 ...