Docker イメージを作成するにはいくつかの方法があります

青灯夜游
リリース: 2022-02-23 18:22:36
オリジナル
39669 人が閲覧しました

Docker イメージを作成するには 2 つの方法があります: 1. 「docker commit」コマンドを使用して、既存のコンテナに基づいてイメージを手動で構築します; 2. Dockerfile を使用してイメージを自動的に構築します。 Dockerfile ビルド ファイルの指示を読み、イメージを自動的に生成します。

Docker イメージを作成するにはいくつかの方法があります

このチュートリアルの動作環境: linux5.9.8 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。

Docker イメージ ウェアハウスからダウンロードしたイメージが要件を満たさない場合があります。基本的なイメージに基づいて独自のイメージを構築できます。

イメージ構築の概要

状況 次に、自分でイメージを構築する必要がありますか?

(1) 自社開発アプリケーションなど既存のイメージが見つからない場合

(2) イメージに特定の機能を追加する必要がある

docker buildイメージングには 2 つの方法があります: docker commit コマンドと DockerfileBuild file

docker commit build image

既存のコンテナに基づいたイメージのビルドこれは主に、新しいイメージを構築するための docker commit コマンドを通じて行われます。

dockercommit 構築には 3 つの主な手順があります。

  • コンテナの実行
  • コンテナの変更
  • コンテナを新しいイメージとして保存

たとえば、centos イメージに vim エディターをインストールし、新しいイメージとして保存します

(1) コンテナーを実行します

[root@ken1 docker]# docker run -it centos
Unable to find image 'centos:latest' locally
latest: Pulling from library/centos
a02a4930cb5d: Pull complete 
Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
Status: Downloaded newer image for centos:latest
ログイン後にコピー

(2) をインストールしますvim editor

vim エディタでインストールされていないことを確認します

[root@69f501e858a6 /]# vim
bash: vim: command not found
ログイン後にコピー

インストールします

[root@69f501e858a6 /]# yum install vim -y
ログイン後にコピー

(3) 新しいイメージとして保存します

最初の確認現在実行中のイメージ

[root@ken1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
69f501e858a6        centos              "/bin/bash"         2 minutes ago       Up 2 minutes                            quizzical_torvalds
ログイン後にコピー

Use commit Save as a new image

[root@ken1 ~]# docker commit 69f501e858a6 centos-vim
sha256:42083b89a179368bc29a8f40d14f8824990183c8e4b28fd84411d440c26342e5
ログイン後にコピー

69f501e858a6 は実行中のコンテナの ID です。name の下の名前も使用できます。
centos-vim は新しいイメージの名前

centos-vim が利用可能かどうかを確認します。 Mirror

新しいミラーを再起動し、 vim エディターを使用できます

新しいミラーは vim エディターで使用できることがわかります

[root@ken1 ~]# docker run -it centos-vim 
[root@61d090898bad /]# vim
[root@61d090898bad /]# vim test
ログイン後にコピー

上記は commit を使用して新しいイメージを作成する方法を示していますが、docker は推奨しません

  • これは手動でイメージを作成する方法である、コンテナが間違っている、効率が低く再現性が低いなどの理由から、この方法を使用してイメージを作成します。 ###さらに重要なことには。ユーザーは画像がどのように作成されるかを知りません。内部に悪意のあるプログラムはありますか?
  • Dockerfile はイメージを構築します

Dockerfile は一連の命令で構成されるファイルです。各命令は Linux のコマンドに対応します。Docker プログラムは次のようになります。 Dockerfile の命令により、最終的にイメージが生成されます。

最初の Dockerfike

ステップ 1: 新しいディレクトリを作成する

[root@ken1 ~]# mkdir /test
ログイン後にコピー

ステップ 2: Dockerfile を作成する

名前は Dockerfile、最初の D大文字にする必要があります

[root@ken1 ~]# cat Dockerfile
FROM centos
RUN yum install vim -y
ログイン後にコピー

FROMcentos は centos 基本イメージを使用することを意味します

RUN は centos に vim エディターをインストールすることを意味します

ステップ 3: イメージをビルドする

[root@ken1 ~]# docker build -t centos-vim2 .
ログイン後にコピー

-t の後に、新しいイメージ

のタグ名 (タグ) を指定します。最後のドットは、docker コンテキストが現在のディレクトリであることを示します。 Docker は、デフォルトでビルド コンテキストから Dockerfile ファイルを検索します。また、-f パラメーターを使用して Dockerfile の場所を指定することもできます。

#ステップ 4: イメージを表示する

# イメージの階層構造の表示

## Docker 履歴には、Dockerfile の実行プロセスであるイメージの構築履歴が表示されます。

Dcokerfile の共通手順

1.FROM

ベースイメージを指定します

2.MAINTAINER

イメージの作成者を設定します。任意の文字を使用できます

3.COPY

ビルド コンテキストからイメージにファイルをコピーします

COPY は、COPY src dest と COPY ["src", "dest"]

注: src は、ビルド コンテキスト内、つまり Dockerfile

と同じディレクトリ内のファイルまたはディレクトリのみをブレーキできます。4.ADD

およびCOPY 同様に、ファイルをビルド コンテキストからイメージにコピーします。

違いは、srcがアーカイブファイル(tar、zip、tgz、xz)の場合、ファイルは自動的にdestに接続されることです

5.ENV

Set環境変数と環境変数は、後続の命令で使用できます。例:

ENV name ken RUN echo $name

6.EXPOSE

指定されたコンテナ内のプロセス特定のポートを監視します。Docker はポートを公開できます。

7.VOLUME

ファイルまたはディレクトリをボリュームとして宣言します

8.WORKDIR

は、後続の RUN 、ENTRYPINT、ADD、COPY 命令は、イメージ内の現在の作業ディレクトリを設定します。

9.RUN

コンテナ内の指定されたコマンドを実行します

  10.CMD

容器启动时运行指定的命令

dockerfile中可以多个CMD指令,但是只要最后一个生效。CMD可以被docker run之后的参数替换

  11.ENTRYPOINT

设置容器启东市的命令

dockerfile中可以有多个ENTRYPOINT,但是只有最后一个生效。

CMD或者docker run之后的参数会被当做参数传递给ENTERYPOINT.

Dockerfile演示

下面演示一个比较全面的dockerfile

[root@ken1 test]# cat Dockerfile 
#my Dockerfile
FROM busybox
MAINTAINER ken
WORKDIR /ken
RUN touch test
COPY ["ken1","."]
ADD ["wordpress.tar.gz","."]
ENV name "ken"
ログイン後にコピー

注意:Dockerfile支持以#开头的注释

构建镜像

[root@ken1 test]# docker build -t myimage .
Sending build context to Docker daemon  4.281MB
Step 1/7 : FROM busybox
 ---> 3a093384ac30
Step 2/7 : MAINTAINER ken
 ---> Running in 2a73a83507ce
Removing intermediate container 2a73a83507ce
 ---> 8c3df9b3d823
Step 3/7 : WORKDIR /ken
 ---> Running in 31c6f9fe2195
Removing intermediate container 31c6f9fe2195
 ---> a458cf986072
Step 4/7 : RUN touch test
 ---> Running in e1b08ebd363c
Removing intermediate container e1b08ebd363c
 ---> 41601920009a
Step 5/7 : COPY ["ken1","."]
 ---> 2ebfa0933fca
Step 6/7 : ADD ["wordpress.tar.gz","."]
 ---> d0ad29d3aa34
Step 7/7 : ENV name "ken"
 ---> Running in fceae6e20e63
Removing intermediate container fceae6e20e63
 ---> 7efe0600e48f
Successfully built 7efe0600e48f
Successfully tagged myimage:latest
ログイン後にコピー

查看镜像

运行该镜像

[root@ken1 test]# docker run -it myimage
/ken # ls
ken1       test       wordpress
/ken # echo $name
ken
ログイン後にコピー
  •  可以发现当前工作目录为/ken,且自动创建
  • ken1是我们从docker context目录中复制过去的
  • test是使用touch创建的
  • wordpres压缩包已经被自动解压
  • $name为变量值为ken

推荐学习:《docker视频教程

以上がDocker イメージを作成するにはいくつかの方法がありますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート