Docker構建自定義映象

2022-08-23 06:24:14 字數 3715 閱讀 3167

利用dockerfile定製映象

from scratch #

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

from centos #

使用base image

from ubuntu:14.04 #

帶有tag的base image

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 hello / #

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

add test.tar.gz / #

新增到根目錄並解壓

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」]

構建乙個flask程式的映象

#

1.建立flask的py檔案

```內容如下```

from flask import

flask)'

/')def

hello():

return

"hello docker"if

__name__=="

__main__":

0.0.0.0

',port=9000)

#2.建立dockerfile檔案

vim dockerfile

```內容如下```

from centos

#from 使用centos的基礎映象

label maintainer=""#

label **注釋

run yum install python-setuptools -y #

run 指定命令

run easy_install flask #

run 指定命令

copy 將檔案載入到指定目錄

workdir /opt #

切換到指定目錄

expose 9000 #

指定容器執行服務的埠

cmd ["

python

",""] #

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

#3.構建映象

docker build -t flask-web .

#. 是當前目錄

#4.檢視本地所有映象

docker image ls

#5.後台啟動基於該映象的容器

docker run -d -p 9999:90005db

引數:

-d #

後台執行

-p #

宿主機的埠:容器的埠

#6.檢視容器執行狀態

docker container ls

docker ps

Docker 映象 自定義映象

1 自定義mycentos目的使我們自己的映象具備如下 登陸後的預設路徑 vim編輯器 檢視網路配置ifconfig支援 2 準備編寫dockerfile檔案 mkdir mydockerfile vim dockerfile file首字母要小寫,不然報錯dockerfile內容如下from ce...

docker 自定義映象

從阿里雲pull下來的centos映象沒有ifconfig,vim.為了有這些功能我們需要自定義映象.目的 1.支援vim 2.支援ifconfig 3.修改登入後的預設路徑 首先先在宿主機的根目錄下建立乙個資料夾mydocker,然後vim乙個dockerfile的dockerfile檔案 fro...

Docker 自定義映象

在已有的docker映象當中,新增一些自己需要的功能,封裝成自己映象。例 自定義乙個有yum源的centos的映象 docker run it docker.io centos latest 啟動乙個容器 yum y install vim net tools pstree iproute bash...