【docker】Dockerfileでイメージを構築するための一般的なコマンド:


1. よく使用されるコマンド:

Dockerfile は命令が 1 つずつ記述されたテキスト ファイルで、指定されたイメージを元に 1 つの命令でレイヤーが構築され、最終的に新しいイメージが構築されます。

キーワード 効果 述べる フォーマット
から ベースイメージを指定する どのミラー上で構築を開始するかを指定します FROM <image>:<tag>
メンテナー 著者情報 この dockerfile を作成した人を示します (非推奨) MAINTAINER xxx xxx
ラベル ラベル 同様のコメントを理解できる、キーと値のペアの形式でメタデータを画像に追加します。 LABEL <key>=<value> <key>=<value> <key>=<value>
走る イメージ作成時に実行するコマンド イメージのビルド時に実行するコマンド。デフォルトは /bin/sh です。 RUN <命令行命令>或RUN["可执行文件", "参数1", "参数2"...,"参数n"](相当于:RUN 可执行文件 参数1 参数2 … 参数n)
CMD コンテナ起動時に実行するコマンド コンテナーの実行時に実行するシェル環境。各 Dockerfile には CMD コマンドを 1 つだけ含めることができます。複数のコマンドを指定した場合は、最後のコマンドのみが実行されます。 3 つの形式があります。【1】exec执行:CMD ["executable","param1","param2"];【2】/bin/sh中执行:CMD command param1 param2;【3】提供给 ENTRYPOINT 的默认参数:CMD ["param1","param2"]
エントリーポイント 入り口 一般に、実行されて閉じられるいくつかのコンテナの生成に使用されます。 ENTRYPOINT ["executable", "param1", "param2"]
コピー ファイルをミラーリングにコピーする ビルド時にファイルをミラーにコピーする COPY 源路径 目标路径(ソース パスはホスト マシンのパス、ターゲット パスはコンテナのパスです)
追加 追加ファイル ビルド時にイメージにファイルを追加します。COPY との違いは、ADD は自動的に解凍されることです。 ADD 源路径 目标路径(ソース パスはホスト マシンのパス、ターゲット パスはコンテナのパスです)
環境 環境変数 イメージをビルドするときに環境変数を設定します。これはコンテナーの起動時に -e で上書きできます (つまり、コンテナー内でも使用できます)。 ENV <key> <value>
ARG ビルドパラメータ ビルド ランタイムに渡す変数を指定するために使用されます (パラメーターを dockerfile に渡します)。これは、ミラー イメージをビルドするときにパラメーターを外部から内部に渡すのと同等です。 ARG <name>[=<default value>]
音量 外部にマウントできる匿名データ ボリュームを定義する コンテナ起動時にデータボリュームをマウントし忘れた場合、自動的に匿名ボリュームにマウントされます。 VOLUME ["/xxx/xx/xxxx", "xxx", ..., "xxx"]
さらす コンテナのサービスポートを宣言する コンテナのサービス ポート (およびサービスを提供するポート) のみを宣言します。 EXPOSE 端口号
作業ディレクトリ 作品リスト コンテナの開始作業ディレクトリを指定します(存在しない場合は自動的に作成されます)。設定後、Dockerfile 内の RUN、CMD、ENTRYPOINT、ADD、COPY などの後続のコマンドは、このディレクトリ内の WORKDIR を実行します。 最好是绝对路径
ユーザー コンテナ実行ユーザーを指定します コンテナ実行時のユーザー名または実行ユーザーIDを指定します USER user

2. 注意すべき事項:

  1. Dockerfile は本質的に、指示に従ってイメージを構築するプロセスを記述するファイルです。
  2. Dockerfile的注释符号是#。
  3. Dockerfile的第一行必须是FROM,从一个基础镜像来构建。
  4. 通过Dockerfile构建镜像命令格式为:docker build -f Dockerfile文件路径 -t 镜像名称:版本 .
  1. 默认一般把文件命名为Dockerfile,然后构建命令直接用docker build -t 要保存的镜像名称:版本 .
  2. 最后的.的含义是将当前目录告诉docker引擎,然后当执行docker build命令后,本机将当前目录下的所有文件发送给docker引擎,最后由docker引擎完成镜像的构建

三、add和copy的区别:

Dockerfile 中的 ADD 与 COPY 指令都可以用于将本地文件或目录复制到 Docker 镜像中,但它们之间有一些区别。

【1】ADD 指令支持自动解压缩功能

当使用 ADD 指令将本地文件复制到 Docker 镜像中时,如果该文件是压缩包格式,Docker 会自动解压缩该文件。例如:

ADD nginx-1.21.0.tar.gz /usr/local/

上述例子中在将本地的 nginx-1.21.0.tar.gz 文件复制到 Docker 镜像的 /usr/local/ 目录下时,Docker 会将该文件解压缩。
而 COPY 指令并不支持自动解压缩功能,需要手动解压缩后再复制进镜像。

【2】ADD 指令可以从 URL 复制内容

ADD 指令除了能够复制本地文件和目录外,还可以复制远程文件(例如从 URL 下载)到 Docker 镜像中。例如:

ADD https://example.com/nginx-1.21.0.tar.gz /usr/local/

上述例子中会从远程 URL https://example.com/nginx-1.21.0.tar.gz 下载文件,并将其复制到 Docker 镜像的 /usr/local/ 目录下。
而 COPY 指令只能复制本地文件和目录。

【3】 ADD 指令具有隐式的文件拷贝功能

ADD 指令除了能够复制本地文件和目录外,还具有一个隐式的文件拷贝功能:当复制一个压缩包文件到容器中时,Docker 会自动解压,并且可以直接从 URL 下载文件并解压缩。例如:

ADD package.tar.gz /app/

上述例子中,如果 package.tar.gz 是一个压缩包文件,则 Docker 会自动解压缩该文件,并将其复制到 /app/ 目录下。而 COPY 指令无法实现这一功能。

おすすめ

転載: blog.csdn.net/weixin_53791978/article/details/132171466
おすすめ