最近看了一些Docker相關(guān)的知識(shí),對(duì)制作dockerfile的流程有一些不明白的地方。
假如要制作一個(gè)基于Ubuntu的包含Nginx、MySQL、PHP等服務(wù)的dockerfile,我現(xiàn)在的流程是:
docker run一個(gè)基本的Ubuntu鏡像
更新系統(tǒng)依賴包,如:apt-get update,在文本文檔記錄執(zhí)行的命令
安裝Nginx,在文本文檔記錄安裝Nginx執(zhí)行的步驟
....
等于說(shuō)是先把流程跑一遍,記錄下所有執(zhí)行的命令,然后再把這些步驟復(fù)制到dockerfile里。
個(gè)人感覺(jué)這樣做是不對(duì)的,請(qǐng)問(wèn)大家都是怎么做的??
閉關(guān)修行中......
そうです。すべてのプロセスに精通していれば、自然に Dockerfile を直接書(shū)くことができます。ただし、この種のことは絶対に保証できません。特に、Docker の基本システム イメージのほとんどは非常に合理化されており、一部のソフトウェア依存パッケージはダウンロードしてインストールする必要があります。そのため、コンテナーを自分で構(gòu)築するプロセスは少し面倒です。時(shí)間はかかりますが、Dockerfile を作成することを夢(mèng)見(jiàn)ているよりも、むしろ短時(shí)間で済みます。
通常、Dockerfile の作成は次のようなプロセスです:
コンテナを通じてインストールプロセスをプレビューし、ビルドコマンドを記録します
インストールコマンドを要約して最適化し、Dockerfileを作成します
Dockerfile を使用してイメージをビルドし、問(wèn)題がないか確認(rèn)してみてください
ビルドされたイメージを使用してコンテナを作成し、その中のプログラムが正しく使用できることを確認(rèn)します
docker Hub 上にある既製の dockerfile を參照し、必要に応じて変更すると、上記の兄弟のように dockerfile を作成するだけでより効率的になります。レコーダー」方式です。