新しい設定を適用してローカルディレクトリからイメージをインポートする
前のステップでは、tarball ファイルからイメージをインポートしました。このステップでは、ローカルディレクトリからイメージをインポートし、インポートプロセス中に新しい設定を適用する方法を学びます。これは、ディレクトリ内にファイルシステムスナップショットがあり、実行するコマンドなどの特定の設定で Docker イメージに変換したい場合に便利です。
まず、イメージに含める簡単なディレクトリ構造とファイルを作成しましょう。
mkdir ~/project/myimage
echo "Hello, Docker!" > ~/project/myimage/hello.txt
これにより、~/project
ディレクトリ内にmyimage
というディレクトリが作成され、その中に「Hello, Docker!」というテキストを含むhello.txt
ファイルが作成されます。
次に、docker image import
コマンドを使用して~/project/myimage
ディレクトリの内容をインポートします。また、-c
フラグを使用してイメージの設定変更を指定します。この例では、このイメージからコンテナを起動したときに実行するデフォルトコマンドを定義するCMD
命令を設定します。
docker image import -c 'CMD ["/bin/cat", "/hello.txt"]' ~/project/myimage myimage:latest
このコマンドでは:
-c 'CMD ["/bin/cat", "/hello.txt"]'
がイメージのデフォルトコマンドを/bin/cat /hello.txt
に設定します。-c
フラグでは、CMD
、ENTRYPOINT
、ENV
、EXPOSE
、LABEL
、ONBUILD
、STOPSIGNAL
、USER
、WORKDIR
などの Dockerfile 命令を適用できます
~/project/myimage
はファイルシステムの内容を含むローカルディレクトリのパスです
myimage:latest
はインポートするイメージに付けたいリポジトリ名とタグです
コマンドを実行すると、Docker は~/project/myimage
ディレクトリの内容に基づいて新しいイメージを作成し、指定されたCMD
設定を適用します。
インポートと設定を確認するには、イメージを一覧表示します:
docker images
リポジトリmyimage
とタグlatest
を持つイメージが表示されるはずです。
それでは、このイメージからコンテナを実行してCMD
命令が正しく適用されているか確認しましょう。
docker run myimage:latest
このコマンドはmyimage:latest
イメージからコンテナを起動します。CMD
を/bin/cat /hello.txt
に設定したため、コンテナはこのコマンドを実行し、hello.txt
ファイルの内容である「Hello, Docker!」を表示するはずです。
ターミナルに「Hello, Docker!」と表示されれば、ディレクトリの内容がインポートされ、CMD
設定が正常に適用されたことが確認できます。