アプリケーションの構築、依存関係とサービスのインストール、自動展開など、すべてがDockerFileから始まります。 Dockerfileの構文を、基本から複雑さまで、Docker画像を構築するときにいくつかのベストプラクティスを確認しましょう。
このガイドは、Dockerをガイドして、配信するアプリケーションの最小化Linux(ベースイメージ)を選択するDockerFileを書き込み、選択したツールセットと特定の構成が付属して独自のLinux Distributionを構築します。 アプリケーションの実行に適しています。
dockerを使用すると、「どこにいても、あらゆるアプリケーションを構築、配信、実行する」ことができます。つまり、アプリケーションを実行するために必要なすべてのバイナリおよびランタイムライブラリ、バックエンドツール、オペレーティングシステムのチューニング、さらには特定のサービスをパッケージ化し、自動的に配信および展開できるようにすることができます。
docker実装ソフトウェアコンテナテクノロジーがこれを可能にします。ここでは詳細については説明しませんが、Docker、ソフトウェアコンテナとは何か、Docker、コンテナ、より安全なソフトウェア配信の理解にどのように機能するかについて詳しく読むことができます。
dockerのインストール
幸いなことに、Dockerの最新バージョン(この執筆時点でのバージョン1.12)により、インストールプロセスが非常にスムーズになり、Windows、MacOS、Linux用のシンプルで理解しやすいガイドを入手できます。
dockerで画像を構築するには、最初にこのビルドの指令とコンテキストをDockerfileというプレーンテキストファイルに設定する必要があります(詳細については後で詳しく説明します)。このファイルには、Apache構成ファイルと同様の構文があります。1行あたりの1つの命令と対応するパラメーターには、すべての命令が順番に処理されます。コメントは#文字とスペースから始まります。最後に、DockerFileを手に入れると、コマンドDockerビルドが画像を構築します。これについては、後で詳しく説明します。
dockerfileの書き込みを開始する前に、ワークスペースをセットアップします。ホームディレクトリにmy_imageというディレクトリを作成し、ワーキングディレクトリとして使用し、Dockerfileをその中に配置します。
mkdir ~/my_build cd ~/my_build touch Dockerfile
基本的なミラーを選択
Note
from dockerfileを書くときに使用する最初の命令でなければなりません。画像名の最後にappending:およびversion_nameを使用して、ベース画像の特定のバージョンを使用することもできます。たとえば、
# 设置基础镜像 FROM debian
上記のコードでは、「sid」debian(不安定な分布)を使用しています。これは、RubyまたはPythonインタープリター、MySQLバージョンなどの特定のバージョンが必要な場合にも重要です。これらのツールの公式基本画像を使用する場合には重要です。現在、このガイドでは、デフォルトの(安定した)Debian画像に固執します。
# 设置基础镜像 FROM debian:sid
メンテナーが誰であるかを指定することを選択できます。ルセロデルアルバを、あなたの名前、または建設の責任者またはチームに置き換えます:
これは必須ではありませんが、ラベルディレクティブを使用してメタデータを追加することもできます。これは、Docker Inspectコマンドを使用して画像をチェックするときに後で使用できます。
この機能の詳細については、Dockerオブジェクトタグを参照してください。# 作者 MAINTAINER Lucero del Alba
独自の分布を作成します
# 额外的元数据 LABEL version="1.0" LABEL description="First image with Dockerfile."
いくつかのコンテナ(postgreSQLデータベースを実行しているコンテナなど)は、バックグラウンドで実行するように設計されています。ただし、コンテナで特定の操作を実行するコンソールが必要な場合が多いため、基礎となる画像には最小GNUツールのみがバンドルするため、いくつかの追加のツールが必要になる場合があります。
画像に追加のパッケージをインストールしようとすると、ほぼ確実にキャッシュの問題が発生します。これは、基礎となる画像がメタデータをキャッシュし、データを抽出するリアルタイムリポジトリが頻繁に変更されているためです。
Debianベースの配布では、これを処理する新しいパッケージをインストールする前に、次のコマンドを追加できます。
mkdir ~/my_build cd ~/my_build touch Dockerfile
1行ごとに1つをインストールします:
このすべてを1行にインストールできますが、後でパッケージを追加または削除する場合は、プロセス全体を再実行する必要があります。したがって、ここでのベストプラクティスは、Dockerのキャッシュの恩恵を受けることができるように、1行ごとに1つのパッケージをインストールすることです。
# 设置基础镜像 FROM debian
アプリケーションのランタイムライブラリをインストールします
また、この画像にアプリケーションを配信します。特定のバージョンのPHP、Ruby、またはPython、およびいくつかのモジュールが必要ですか?今こそ、アプリケーションを配信するために必要なすべてのプログラムとランタイムを提供する時です。
このコンテナはアプリケーションのみを実行するように設計されているため、好きなように指定できます。コンパイルアンドダウンロードパッケージ
分布は、必要な特定のモジュールまたはプログラムのパッケージがない場合があります。ただし、実行中のコンテナに手動でインストールする必要はありません!代わりに、Runディレクティブ(1行ごと)を使用して、アプリケーションに必要なライブラリをダウンロード、コンパイル、セットアップすることができます。 このファイルを別のファイルにスクリプト化し、このファイルをビルドに追加して実行することもできます。
# 设置基础镜像 FROM debian:sid
鏡をきれいにし、できるだけ小さくするには、インストールシーケンスの最後にクリーンアップするのが最善です
また、Debianを選択したためApt-Getを使用していることに注意してください。ただし、ベース画像の配布には対応するコマンドを使用してください。
独自のアプリケーションを配信してください
ただし、ファイルを追加する前に、適切なコンテキストに配置する必要があります。操作を簡素化するために、DockerFile自体とともに、前述のmy_buildディレクトリにすべてを配置します。
アプリと画像に入れたいものすべてを使用していると仮定すると、〜/my_build(app.pyとlib.pyがサブディレクトリアプリ/)に次のファイルがあります:
mkdir ~/my_build cd ~/my_build touch Dockerfile
コンテナ内の / rootディレクトリに.bashrcおよび.profileスクリプトを追加して、コンテナのシェルを起動し、コンテナ内の / app / directoryのコンテンツをコピーします。
次のコマンドを追加します:
# 设置基础镜像 FROM debian
最後に、システムレベルとアプリケーションレベルの両方で必要な環境変数を設定します。
多くの人はデフォルトのDebian文字セットを使用してそれを行うために使用しますが、国際的な視聴者をターゲットにしているので、UTF-8端末を持っている方法を見てみましょう。以前にロケールパッケージをインストールしたため、キャラクターセットを生成して適切なLinux環境をセットアップするだけです。
# 设置基础镜像 FROM debian:sid
# 作者 MAINTAINER Lucero del Alba
フルdockerfile
これは完全なファイルです:
# 额外的元数据 LABEL version="1.0" LABEL description="First image with Dockerfile."
これにより、各「ステップ」がdockerfileの指令である長い出力が生成されます。ここに切り捨てられた出力があります:
# 更新源列表 RUN apt-get clean RUN apt-get update
ミラーをリスト
# 每行安装一个基本应用程序,以获得更好的缓存 RUN apt-get install -qy git RUN apt-get install -qy locales RUN apt-get install -qy nano RUN apt-get install -qy tmux RUN apt-get install -qy wget
これにより、新しく作成されたmy_imageやダウンロードしたその他の基本画像が出力されます。
# 安装应用程序运行时和模块 RUN apt-get install -qy python3 RUN apt-get install -qy python3-psycopg2 RUN apt-get install -qy python3-pystache RUN apt-get install -qy python3-yaml
コンテナを起動します
# 清理 RUN apt-get -qy autoremove
最後に、新しく作成されたインタラクティブ端末を開始するために、Docker Runコマンドを使用します。
dockerfileのすべての可能性を紹介しませんでした。特に、ポートを実行する方法を確認し、ホストからデータを保存して回復するためのボリュームを指定する方法を確認するために、コンテナ間のコンテナをリンクすることもできませんでした。その他の便利な機能。
<code>.bashrc .profile app/app.py app/lib.py Dockerfile</code>
dockerfileリファレンス
DockerFileを作成するためのベストプラクティス
SitePointから:
dockerfileを使用してビルドプロセスを最適化する方法は?
dockerfilesを書くためのベストプラクティスは何ですか?
dockerfileをデバッグする方法は?
dockerfileで環境変数を使用できますか?
ホストからDocker画像にファイルをコピーする方法は?
ドッカー画像にポートを公開する方法は?
Docker画像で作業ディレクトリを設定する方法は?
docker画像でコマンドを実行する方法は?
CMDディレクティブを使用して、実行するコンテナにデフォルト値を提供できます。これらには、実行可能ファイルまたは実行可能ファイルを省略できます。その場合、エントリポイントディレクティブを指定する必要があります。
この改訂された出力は、元の画像のフォーマットを維持し、記事の意味の大幅な変更を回避しながら、独創性を忘れないでください
以上がDockerfileで画像を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。