Dockerはチュートリアル関連のシリーズカタログを使用します
目次
Dockerイメージがすべて正式に定義されていることを以前に学びましたが、自分でイメージを作成できますか?
dockerfileとは何ですか
- Dockerfileはドキュメントと同等であり、顧客はdockerfileに基づいて新しいコンテナーを生成できます。
- Dockerfileは、イメージの作成に使用されるソースファイルであり、コンテナーを構築するプロセスの命令です。
- Dockerは、dockerfileの仕様を読み取って、コンテナーを自動的に構築し、dockerfileに基づいてイメージを作成できます。
- 各命令はミラーレイヤーを作成します。つまり、ミラーイメージは複数のレイヤーに重ね合わされます。したがって、レイヤーが多いほど効率が低くなり、ミラーを作成するレイヤーが少ないほど優れています。したがって、1つの命令で実行できるアクションは、可能な限り1つの命令で定義されます。
Vernacular:Dockerfileという名前のファイルで、Dockerfileの必要なポイントが含まれており、ビルド後にミラーになります。
Dockerイメージ生成の作業ロジック
- まず、ミラーリング用のディレクトリが必要で、そのディレクトリにファイルがあります
- 名前はDockerfileである必要があり、Dockerfileの形式は指定されています
- これはdockerの規則です。C言語のmakefileを使用したことがある場合は、それを知っておく必要があります。これらはすべてプログラミング言語の規則です。Dockerプログラムコードで記述された固定名。
- 自分で名前を付ける場合:docker build -t test -fdockerfile。
- #記号はコメントで始まります。コマンドとパラメーターを区別するために、指定はデフォルトで大文字で表されます。
- DockerビルドはDockerfileを読み取り、Dockerfile内の構成を順番に読み取ります。最初の非コメント命令は、FROMで始まる必要があり、新しいイメージをビルドするためのベースイメージを示します。既存の画像に基づいて新しい画像を作成できます。
Dockerfileの基本構造
Dockerfileは通常、次の4つの部分に分かれています。
- 基本的な画像情報
- メンテナ情報
- ミラー操作説明書
- コンテナの起動時に実行される命令
接下来详细介绍
「#」は、Dockerfileのコメントです。
Dockerは、Dockerfileの命令を上から下の順に実行します。ベースイメージを指定するには、最初の命令がFROMである必要があります。#文字で始まるステートメントはコメントと見なされます。Dockerファイルでは、RUN、CMD、FROM、EXPOSE、ENVおよびその他の命令を使用できます。
vim Dockerfile
Dockerfile形式の例:
実行の順序は上から下へ、順番にです。
命令 | 説明 |
---|---|
から | 新しいシーンの構築は、その鏡像に基づいています |
メンテナー | ミラーメンテナの名前またはメールアドレス |
ラベル | ミラーに情報を追加します。 |
実行 | イメージを構築するときに実行するシェルコマンド |
追加 | コンテナにローカルファイルを追加する |
コピー | ファイルまたはディレクトリをシーンにコピーします |
ENV | 環境変数を設定する |
ユーザー | RUN、CMD、およびENTRYPOINT実行コマンドの実行ユーザーを指定します |
ARG | 外部から開始するときに渡す必要のあるパラメーター、コンテナーの開始時に、-build-argを使用してパラメーターを渡します |
EXPOSE | サービスポートを実行しているコンテナを宣言します |
健康診断 | コンテナ内のサービスヘルスチェック |
ボリューム | 永続ディレクトリを指定するために使用されます |
WORKDIR | RUN、CMD、ENTRYPOINT、COPY、ADDの作業ディレクトリを設定します |
エントリーポイント | コンテナの実行中に実行します。複数のENTRYPOINTコマンドがある場合は、最後のコマンドが有効になります。 |
CMD | コンテナの実行時に実行します。複数のCMDコマンドがある場合は、最後のコマンドが有効になります。 |
イメージを構築する
docker buildは、Dockerfileを使用してミラーを作成するために使用されるdockerコマンドです。
Buildメソッドは、構成ファイルを作成してから、現在存在するイメージを使用して構成ファイルに従って調整し、新しいイメージを生成する必要があります。
パラメータ形式:
docker build [OPTIONS] PATH |URL| -[flags]
Options:
-t, --tag list # 镜像名称
-f, --fire string # 指定 Dockerfile文件位置
# Options 其他参数 docker build --help
Options:
--add-host list Add a custom host-to-IP mapping (host:ip)
# 添加自定义主机到ip的映射(主机:ip)
--build-arg list Set build-time variables
# 设置构建时变量
--cache-from strings Images to consider as cache sources
# 要考虑作为缓存源的图像
--cgroup-parent string Optional parent cgroup for the container
# 容器的可选父cgroup
--compress Compress the build context using gzip
# 使用gzip压缩构建上下文
--cpu-period int Limit the CPU CFS (Completely Fair Scheduler) period
# 限制CPU CFS(完全公平调度程序)周期
--cpu-quota int Limit the CPU CFS (Completely Fair Scheduler) quota
# 限制CPU CFS(完全公平调度程序)配额
-c, --cpu-shares int CPU shares (relative weight)
# CPU份额(相对权重)
--cpuset-cpus string CPUs in which to allow execution (0-3, 0,1)
# 允许执行的cpu (0- 3,0,1)
--cpuset-mems string MEMs in which to allow execution (0-3, 0,1)
# 允许执行的MEMs (0- 3,0,1)
--disable-content-trust Skip image verification (default true)
# 跳过图像验证(默认为真)
-f, --file string Name of the Dockerfile (Default is 'PATH/Dockerfile')
# Dockerfile的名称(默认为‘PATH/Dockerfile’)
--force-rm Always remove intermediate containers
# 总是移除中间容器
--iidfile string Write the image ID to the file
# 将图像ID写入文件
--isolation string Container isolation technology
# 容器隔离技术
--label list Set metadata for an image
# 设置图像的元数据
-m, --memory bytes Memory limit
# 存储容量极限 / 内存限制
--memory-swap bytes Swap limit equal to memory plus swap: '-1' to enable unlimited swap
# 交换限制等于内存加交换:'-1'以启用无限交换
--network string Set the networking mode for the RUN instructions during build (default "default")
# 在构建期间为运行指令设置连网模式(默认为“default”)
--no-cache Do not use cache when building the image
# 在构建映像时不使用缓存
--pull Always attempt to pull a newer version of the image
# 总是尝试拉一个较新的版本的图像
-q, --quiet Suppress the build output and print image ID on success
# 如果成功,则禁止生成输出并打印图像ID
--rm Remove intermediate containers after a successful build (default true)
# 成功构建后删除中间容器(默认为true)
--security-opt strings Security options
# 安全选项
--shm-size bytes Size of /dev/shm
# 大小 /dev/shm
-t, --tag list Name and optionally a tag in the 'name:tag' format
# 名称和“Name:tag”格式的标记(可选)
--target string Set the target build stage to build.
# 设置要构建的目标构建阶段。
--ulimit ulimit Ulimit options (default [])
# Ulimit选项(默认[])