Docker イメージを作成するには 2 つの方法があります: 1. 「docker commit」コマンドを使用して、既存のコンテナに基づいてイメージを手動で構築します; 2. Dockerfile を使用してイメージを自動的に構築します。 Dockerfile ビルド ファイルの指示を読み、イメージを自動的に生成します。
このチュートリアルの動作環境: linux5.9.8 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。
Docker イメージ ウェアハウスからダウンロードしたイメージが要件を満たさない場合があります。基本的なイメージに基づいて独自のイメージを構築できます。
状況 次に、自分でイメージを構築する必要がありますか?
(1) 自社開発アプリケーションなど既存のイメージが見つからない場合
(2) イメージに特定の機能を追加する必要がある
docker buildイメージングには 2 つの方法があります: docker commit
コマンドと Dockerfile
Build file
既存のコンテナに基づいたイメージのビルドこれは主に、新しいイメージを構築するための 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 は推奨しません
最初の Dockerfike
[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.ENVSet環境変数と環境変数は、後続の命令で使用できます。例: ENV name ken RUN echo $name 6.EXPOSE指定されたコンテナ内のプロセス特定のポートを監視します。Docker はポートを公開できます。 7.VOLUMEファイルまたはディレクトリをボリュームとして宣言します 8.WORKDIR は、後続の RUN 、ENTRYPINT、ADD、COPY 命令は、イメージ内の現在の作業ディレクトリを設定します。 9.RUNコンテナ内の指定されたコマンドを実行します容器启动时运行指定的命令
dockerfile中可以多个CMD指令,但是只要最后一个生效。CMD可以被docker run之后的参数替换
设置容器启东市的命令
dockerfile中可以有多个ENTRYPOINT,但是只有最后一个生效。
CMD或者docker run之后的参数会被当做参数传递给ENTERYPOINT.
下面演示一个比较全面的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
推荐学习:《docker视频教程》
以上がDocker イメージを作成するにはいくつかの方法がありますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。