利用dockerfile定製映象
from scratch #構建乙個flask程式的映象製作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」]
#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...