Dockerfile 文件可以讓你定制化你自己的鏡像。它可以用來描述生成鏡像所需要的軟件,它包含了一系列用來設(shè)定運(yùn)行環(huán)境以及運(yùn)行命令的指令。

創(chuàng)建一個 Dockerfile 文件
首先,讓我們從一個空目錄開始。在這個例子里,我使用的是my_new_docker_build目錄,但是你可以選擇任何你想要的名字,注意在 Windows 上,你可能需要將文件類型設(shè)置為“全部類型”,同時還需要將文件名用引號包起來,以避免系統(tǒng)自動添加后綴。然后,選擇你熟悉的文本編輯器(你可以用 Sublime,Notepad++,emacs,nano,甚至是 vi)。在我們的例子里,我們使用最基礎(chǔ)的 Python 3 鏡像最為起始點(diǎn)。將下面的文本加入到你的 Dockerfile 里:
FROM python:3
我們想要運(yùn)行一個簡單的 Python 腳本,叫做my_script.py。首先,我們需要將這個腳本文件條件到 Dockerfile 里。
ADD my_script.py
我們的腳本依賴于 pyStrich 庫( pyStrich 可以生成 1D 和 2D 的條形碼),因此我們確保在運(yùn)行my_script.py之前,這個庫已經(jīng)被安裝了。添加下面這一行到你的 Dockerfile 里來完成安裝:
RUN pip install pystrich
將下面這行文本添加到你的 Dockerfile 里來運(yùn)行腳本:
CMD [ "python", "./my_script.py"]
你的 Dockerfile 應(yīng)該如下所示:
FROM python:3
ADD my_script.py /
RUN pip install pystrich
CMD [ "python", "./my_script.py" ]
-
From告訴 Docker 你的鏡像是基于哪個鏡像來創(chuàng)建的(在這個例子里是 Python 3)。 -
Run告訴 Docker 需要運(yùn)行哪些額外的命令。 -
CMD告訴 Docker 當(dāng)鏡像加載完成之后需要運(yùn)行的命令。
我們的 Python 腳本my_script.py如下所示:
# Sample taken from pyStrich GitHub repository
# https://github.com/mmulqueen/pyStrich
from pystrich.datamatrix import DataMatrixEncoder
encoder = DataMatrixEncoder('This is a DataMatrix.')
encoder.save('./datamatrix_test.png')
print(encoder.get_ascii())
現(xiàn)在你可以通過這個 Dockerfile 來構(gòu)建一個鏡像了。運(yùn)行:
docker build -t python-barcode .
運(yùn)行你的鏡像
在成功構(gòu)建出你的 Docker 鏡像之后,你可以把它作為一個容器來運(yùn)行。在終端里,運(yùn)行docker image來查看你的所有鏡像。你應(yīng)該能夠在列表里看到python-barcode。通過在命令后里輸入下面的命令來運(yùn)行你的鏡像:
docker run python-barcode
你應(yīng)該能夠看到一個類似下圖的二維碼

其他方式
如果你只是需要運(yùn)行一個簡單的腳本(只包含一個文件)的話,可以不用創(chuàng)建一個 Dockerfile。在接下來的例子里,確保你將my_script.py文件存放在/usr/src/widget_app/目錄下,并且將容器命名為my-first-python-script。
Python 3
docker run -it --rm --name my-first-python-script -v "$PWD":/usr/src/widget_app python:3 python my_script.py
Python 2
docker run -it --rm --name my-first-python-script -v "$PWD":/usr/src/widget_app python:2 python my_script.py
我的博客即將同步至騰訊云開發(fā)者社區(qū),邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=wpd2w8xwycq1