チュートリアル: NET Core アプリのコンテナー化Tutorial: Containerize a .NET Core app

このチュートリアルでは、Docker を使って .NET Core アプリケーションをコンテナー化する方法を学習します。In this tutorial, you'll learn how to containerize a .NET Core application with Docker. コンテナーには、変更できないインフラストラクチャになったり、移植可能なアーキテクチャを提供したり、スケーラビリティを可能にしたりといった、さまざまな特徴とベネフィットがあります。Containers have many features and benefits, such as being an immutable infrastructure, providing a portable architecture, and enabling scalability. そのイメージを使って、ローカル開発環境、プライベート クラウド、またはパブリック クラウド用にコンテナーを作成することができます。The image can be used to create containers for your local development environment, private cloud, or public cloud.

このチュートリアルでは、次の作業を行いました。In this tutorial, you:

  • 簡単な .NET Core アプリを作成して発行するCreate and publish a simple .NET Core app
  • .NET Core 用の Dockerfile を作成して構成するCreate and configure a Dockerfile for .NET Core
  • Docker イメージの構築Build a Docker image
  • Docker コンテナーを作成して実行するCreate and run a Docker container

.NET Core アプリケーション用に Docker コンテナーを構築してデプロイするタスクを理解できます。You'll understand the Docker container build and deploy tasks for a .NET Core application. "Docker プラットフォーム" では、"Docker エンジン" を使用して、すばやくアプリがビルドされ、"Docker イメージ" としてパッケージ化されます。The Docker platform uses the Docker engine to quickly build and package apps as Docker images. これらのイメージは、階層型コンテナーに展開されて実行される Dockerfile 形式で記述されています。These images are written in the Dockerfile format to be deployed and run in a layered container.

注意

このチュートリアルは ASP.NET Core アプリ向けのものではありませんThis tutorial is not for ASP.NET Core apps. ASP.NET Core を使用している場合は、ASP.NET Core アプリケーションをコンテナー化する方法に関するチュートリアルを参照してください。If you're using ASP.NET Core, see the Learn how to containerize an ASP.NET Core application tutorial.

必須コンポーネントPrerequisites

次の前提条件をインストールします。Install the following prerequisites:

  • .NET Core 3.1 SDK.NET Core 3.1 SDK
    .NET Core をインストールしてある場合、どの SDK を使っているか確認するには、dotnet --info コマンドを使います。If you have .NET Core installed, use the dotnet --info command to determine which SDK you're using.
  • Docker Community EditionDocker Community Edition
  • Dockerfile と .NET Core サンプル アプリ用の一時作業フォルダー。A temporary working folder for the Dockerfile and .NET Core example app. このチュートリアルでは、作業フォルダーに docker-working の名前が使用されます。In this tutorial, the name docker-working is used as the working folder.

.NET Core アプリを作成するCreate .NET Core app

Docker コンテナーで実行される .NET Core アプリが必要です。You need a .NET Core app that the Docker container will run. ターミナルを開き、作業フォルダーがまだない場合は作成して、移動します。Open your terminal, create a working folder if you haven't already, and enter it. 作業フォルダーで次のコマンドを実行し、app という名前のサブディレクトリに新しいプロジェクトを作成します。In the working folder, run the following command to create a new project in a subdirectory named app:

dotnet new console -o App -n NetCore.Docker

フォルダー ツリーは次のように表示されます。Your folder tree will look like the following:

docker-working
    └──App
        ├──NetCore.Docker.csproj
        ├──Program.cs
        └──obj
            ├──NetCore.Docker.csproj.nuget.dgspec.json
            ├──NetCore.Docker.csproj.nuget.g.props
            ├──NetCore.Docker.csproj.nuget.g.targets
            ├──project.assets.json
            └──project.nuget.cache

dotnet new コマンドでは、"App" という名前の新しいフォルダーが作成され、"Hello World" コンソール アプリケーションが生成されます。The dotnet new command creates a new folder named App and generates a "Hello World" console application. ディレクトリを変更し、ターミナル セッションから "App" フォルダーに移動します。Change directories and navigate into the App folder, from your terminal session. dotnet run コマンドを使用してアプリを起動します。Use the dotnet run command to start the app. アプリケーションが実行され、コマンドの下に Hello World! が出力されます。The application will run, and print Hello World! below the command:

dotnet run
Hello World!

既定のテンプレートでは、ターミナルに出力した後、すぐに終了するアプリが作成されます。The default template creates an app that prints to the terminal and then immediately terminates. このチュートリアルでは、無限にループするアプリを使います。For this tutorial, you'll use an app that loops indefinitely. テキスト エディターで Program.cs ファイルを開きます。Open the Program.cs file in a text editor.

ヒント

Visual Studio Code を使用している場合は、前のターミナル セッションで次のコマンドを入力します。If you're using Visual Studio Code, from the previous terminal session type the following command:

code .

これにより、Visual Studio Code のプロジェクトを含む "App" フォルダーが開きます。This will open the App folder that contains the project in Visual Studio Code.

"Program.cs" は次のような C# コードになります。The Program.cs should look like the following C# code:

using System;

namespace NetCore.Docker
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

1 秒ごとに数をカウントする次のコードにファイルを置き換えます。Replace the file with the following code that counts numbers every second:

using System;
using System.Threading.Tasks;

namespace NetCore.Docker
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var counter = 0;
            var max = args.Length != 0 ? Convert.ToInt32(args[0]) : -1;
            while (max == -1 || counter < max)
            {
                Console.WriteLine($"Counter: {++counter}");
                await Task.Delay(1000);
            }
        }
    }
}

ファイルを保存し、dotnet run で再びプログラムをテストします。Save the file and test the program again with dotnet run. このアプリは無限に実行されることに注意してください。Remember that this app runs indefinitely. 停止するにはキャンセル コマンド Ctrl + C を使用します。Use the cancel command Ctrl+C to stop it. 次に出力例を示します。The following is an example output:

dotnet run
Counter: 1
Counter: 2
Counter: 3
Counter: 4
^C

コマンド ラインでアプリに数値を渡すと、アプリはその値までカウント アップしただけで終了します。If you pass a number on the command line to the app, it will only count up to that amount and then exit. dotnet run -- 5 で 5 までカウントしてみてください。Try it with dotnet run -- 5 to count to five.

重要

-- より後のパラメーターは dotnet run コマンドに渡されず、代わりにアプリケーションに渡されます。Any parameters after -- are not passed to the dotnet run command and instead are passed to your application.

.NET Core アプリを発行するPublish .NET Core app

.NET Core アプリを Docker イメージに追加するには、まず発行する必要があります。Before adding the .NET Core app to the Docker image, first it must be published. アプリの発行済みバージョンをコンテナーで実行することをお勧めします。It is best to have the container run the published version of the app. アプリを発行するには、次のコマンドを実行します。To publish the app, run the following command:

dotnet publish -c Release

このコマンドでは、publish フォルダーにアプリがコンパイルされます。This command compiles your app to the publish folder. 作業フォルダーから publish フォルダーへのパスは .\App\bin\Release\netcoreapp3.1\publish\ ですThe path to the publish folder from the working folder should be .\App\bin\Release\netcoreapp3.1\publish\

"App" フォルダーから、publish フォルダーのディレクトリ一覧を表示し、"NetCore.Docker.dll" ファイルが作成されたことを確認します。From the App folder, get a directory listing of the publish folder to verify that the NetCore.Docker.dll file was created.

dir .\bin\Release\netcoreapp3.1\publish\

    Directory: C:\Users\dapine\App\bin\Release\netcoreapp3.1\publish

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        4/27/2020   8:27 AM            434 NetCore.Docker.deps.json
-a----        4/27/2020   8:27 AM           6144 NetCore.Docker.dll
-a----        4/27/2020   8:27 AM         171520 NetCore.Docker.exe
-a----        4/27/2020   8:27 AM            860 NetCore.Docker.pdb
-a----        4/27/2020   8:27 AM            154 NetCore.Docker.runtimeconfig.json

Dockerfile を作成するCreate the Dockerfile

Dockerfile ファイルは、コンテナー イメージを作成するために docker build コマンドによって使用されます。The Dockerfile file is used by the docker build command to create a container image. このファイルは Dockerfile という名前のテキスト ファイルで、拡張子はありません。This file is a text file named Dockerfile that doesn't have an extension.

" .csproj" が含まれるディレクトリに "Dockerfile" という名前のファイルを作成し、テキスト エディターで開きます。Create a file named Dockerfile in directory containing the .csproj and open it in a text editor. このチュートリアルでは、(.NET Core ランタイム イメージを含む) ASP.NET Core ランタイム イメージを使用して、.NET Core コンソール アプリケーションに対応します。This tutorial will use the ASP.NET Core runtime image (which contains the .NET Core runtime image) and corresponds with the .NET Core console application.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1

注意

mcr.microsoft.com/dotnet/core/runtime:3.1 イメージが使用されている可能性もありますが、ここでは ASP.NET Core ランタイム イメージを意図的に使用します。The ASP.NET Core runtime image is used intentionally here, although the mcr.microsoft.com/dotnet/core/runtime:3.1 image could have been used.

FROM キーワードには、完全修飾 Docker コンテナー イメージ名が必要です。The FROM keyword requires a fully qualified Docker container image name. Microsoft Container Registry (MCR、mcr.microsoft.com) は、パブリック アクセスが可能なコンテナーをホストする Docker Hub のシンジケートです。The Microsoft Container Registry (MCR, mcr.microsoft.com) is a syndicate of Docker Hub - which hosts publicly accessible containers. dotnet/core セグメントはコンテナー リポジトリで、aspnet セグメントはコンテナー イメージの名前です。The dotnet/core segment is the container repository, where as the aspnet segment is the container image name. イメージには 3.1 のタグが付けられ、バージョン管理に使用されます。The image is tagged with 3.1, which is used for versioning. このため、mcr.microsoft.com/dotnet/core/aspnet:3.1 は .NET Core 3.1 ランタイムです。Thus, mcr.microsoft.com/dotnet/core/aspnet:3.1 is the .NET Core 3.1 runtime. 必ず、SDK のターゲットのランタイムと一致するランタイム バージョンをプルしてください。Make sure that you pull the runtime version that matches the runtime targeted by your SDK. たとえば、前のセクションで作成したアプリは .NET Core 3.1 SDK を使用しているため、Dockerfile で参照される基本イメージは 3.1 でタグ付けされます。For example, the app created in the previous section used the .NET Core 3.1 SDK and the base image referred to in the Dockerfile is tagged with 3.1.

Dockerfile ファイルを保存します。Save the Dockerfile file. 作業フォルダーのディレクトリ構造は次のようになります。The directory structure of the working folder should look like the following. 一部のより深いレベルのファイルとフォルダーは、スペース削減のためこの記事では省略されています。Some of the deeper-level files and folders have been omitted to save space in the article:

docker-working
    └──App
        ├──Dockerfile
        ├──NetCore.Docker.csproj
        ├──Program.cs
        ├──bin
        │   └──Release
        │       └──netcoreapp3.1
        │           └──publish
        │               ├──NetCore.Docker.deps.json
        │               ├──NetCore.Docker.exe
        │               ├──NetCore.Docker.dll
        │               ├──NetCore.Docker.pdb
        │               └──NetCore.Docker.runtimeconfig.json
        └──obj
            └──...

ターミナルから、次のコマンドを実行します。From your terminal, run the following command:

docker build -t counter-image -f Dockerfile .

Docker により Dockerfile 内の各行が処理されます。Docker will process each line in the Dockerfile. docker build コマンドの . は、現在のフォルダーで Dockerfile を検索するよう Docker に指示します。The . in the docker build command tells Docker to use the current folder to find a Dockerfile. このコマンドでは、イメージがビルドされて、そのイメージを指す counter-image という名前のローカル リポジトリが作成されます。This command builds the image and creates a local repository named counter-image that points to that image. このコマンドが終了したら、docker images を実行し、インストールされているイメージの一覧を表示します。After this command finishes, run docker images to see a list of images installed:

docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
counter-image                           latest              e6780479db63        4 days ago          190MB
mcr.microsoft.com/dotnet/core/aspnet    3.1                 e6780479db63        4 days ago          190MB

2 つのイメージで同じ IMAGE ID 値が共有されていることに注意してください。Notice that the two images share the same IMAGE ID value. Dockerfile での唯一のコマンドが既存のイメージを新しいイメージの基にするものであったため、両方のイメージで値が同じになっています。The value is the same between both images because the only command in the Dockerfile was to base the new image on an existing image. 3 つのコマンドを "Dockerfile" に追加してみましょう。Let's add three commands to the Dockerfile. 各コマンドでは、counter-image リポジトリ エントリが指し示すイメージを表す最後のコマンドで新しいイメージ レイヤーが作成されます。Each command creates a new image layer with the final command representing the counter-image repository entry points to.

COPY bin/Release/netcoreapp3.1/publish/ App/
WORKDIR /App
ENTRYPOINT ["dotnet", "NetCore.Docker.dll"]

COPY コマンドは、自分のコンピューターの指定したフォルダーをコンテナー内のフォルダーにコピーするよう Docker に指示します。The COPY command tells Docker to copy the specified folder on your computer to a folder in the container. この例では、"publish" フォルダーが、コンテナーの "App" という名前のフォルダーにコピーされます。In this example, the publish folder is copied to a folder named App in the container.

WORKDIR コマンドでは、コンテナー内の現在のディレクトリが、"App" に変更されます。The WORKDIR command changes the current directory inside of the container to App.

次のコマンド ENTRYPOINT は、実行可能ファイルとして実行するためにコンテナーを構成するよう Docker に指示します。The next command, ENTRYPOINT, tells Docker to configure the container to run as an executable. コンテナーの起動時に、ENTRYPOINT コマンドが実行されます。When the container starts, the ENTRYPOINT command runs. このコマンドが終了すると、コンテナーは自動的に停止します。When this command ends, the container will automatically stop.

端末から docker build -t counter-image -f Dockerfile . を実行し、そのコマンドが終了したら docker images を実行します。From your terminal, run docker build -t counter-image -f Dockerfile . and when that command finishes, run docker images.

docker build -t counter-image -f Dockerfile .
Sending build context to Docker daemon  1.117MB
Step 1/4 : FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
 ---> e6780479db63
Step 2/4 : COPY bin/Release/netcoreapp3.1/publish/ App/
 ---> d1732740eed2
Step 3/4 : WORKDIR /App
 ---> Running in b1701a42f3ff
Removing intermediate container b1701a42f3ff
 ---> 919aab5b95e3
Step 4/4 : ENTRYPOINT ["dotnet", "NetCore.Docker.dll"]
 ---> Running in c12aebd26ced
Removing intermediate container c12aebd26ced
 ---> cd11c3df9b19
Successfully built cd11c3df9b19
Successfully tagged counter-image:latest

docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
counter-image                           latest              cd11c3df9b19        41 seconds ago      190MB
mcr.microsoft.com/dotnet/core/aspnet    3.1                 e6780479db63        4 days ago          190MB

Dockerfile 内の各コマンドによってレイヤーが生成され、IMAGE ID が作成されます。Each command in the Dockerfile generated a layer and created an IMAGE ID. 最後の IMAGE IDcd11c3df9b19 であり (個々に異なります)、次にこのイメージを基にしてコンテナーを作成します。The final IMAGE ID (yours will be different) is cd11c3df9b19 and next you'll create a container based on this image.

コンテナーの作成Create a container

アプリを含むイメージができたので、コンテナーを作成することができます。Now that you have an image that contains your app, you can create a container. 2 つの方法でコンテナーを作成することができます。You can create a container in two ways. 最初に、停止している新しいコンテナーを作成します。First, create a new container that is stopped.

docker create --name core-counter counter-image
0f281cb3af994fba5d962cc7d482828484ea14ead6bfe386a35e5088c0058851

上の docker create コマンドでは、counter-image イメージに基づくコンテナーが作成されます。The docker create command from above will create a container based on the counter-image image. そのコマンドの出力では、作成されたコンテナーの CONTAINER ID (個々に異なります) が示されます。The output of that command shows you the CONTAINER ID (yours will be different) of the created container. "すべて" のコンテナーの一覧を表示するには、docker ps -a コマンドを使います。To see a list of all containers, use the docker ps -a command:

docker ps -a
CONTAINER ID    IMAGE            COMMAND                   CREATED           STATUS     PORTS    NAMES
0f281cb3af99    counter-image    "dotnet NetCore.Dock…"    40 seconds ago    Created             core-counter

コンテナーを管理するManage the container

コンテナーが特定の名前 core-counter で作成されました。この名前を使用してコンテナーを管理します。The container was created with a specific name core-counter, this name is used to manage the container. 次の例では、docker start コマンドを使ってコンテナーを起動した後、docker ps コマンドを使って、実行されているコンテナーのみを表示します。The following example uses the docker start command to start the container, and then uses the docker ps command to only show containers that are running:

docker start core-counter
core-counter

docker ps
CONTAINER ID    IMAGE            COMMAND                   CREATED          STATUS          PORTS    NAMES
2f6424a7ddce    counter-image    "dotnet NetCore.Dock…"    2 minutes ago    Up 11 seconds            core-counter

同様に、docker stop コマンドではコンテナーが停止されます。Similarly, the docker stop command will stop the container. 次の例では、docker stop コマンドを使ってコンテナーを停止した後、docker ps コマンドを使って、実行されているコンテナーがないことを示します。The following example uses the docker stop command to stop the container, and then uses the docker ps command to show that no containers are running:

docker stop core-counter
core-counter

docker ps
CONTAINER ID    IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES

コンテナーへの接続Connect to a container

コンテナーが実行状態になった後、それに接続して出力を確認できます。After a container is running, you can connect to it to see the output. docker start コマンドを使ってコンテナーを起動し、docker attach コマンドを使って出力ストリームを表示します。Use the docker start and docker attach commands to start the container and peek at the output stream. この例では、Ctrl+C キー入力を使用して、実行中のコンテナーからデタッチします。In this example, the Ctrl+C keystroke is used to detach from the running container. このキー入力では、コンテナーを停止するように指定されている場合を除き、コンテナー内のプロセスが終了します。This keystroke will end the process in the container unless otherwise specified, which would stop the container. --sig-proxy=false パラメーターを指定すると、Ctrl+C キーを押してもコンテナー内のプロセスが停止しないことが保証されます。The --sig-proxy=false parameter ensures that Ctrl+C will not stop the process in the container.

コンテナーからデタッチした後、再アタッチして、まだ実行されていてカウントが行われていることを確認します。After you detach from the container, reattach to verify that it's still running and counting.

docker start core-counter
core-counter

docker attach --sig-proxy=false core-counter
Counter: 7
Counter: 8
Counter: 9
^C

docker attach --sig-proxy=false core-counter
Counter: 17
Counter: 18
Counter: 19
^C

コンテナーを削除するDelete a container

この記事の目的では、何も行っていないコンテナーをそのままにするのは望ましくありません。For the purposes of this article you don't want containers just hanging around doing nothing. 前に作成したコンテナーを削除します。Delete the container you previously created. コンテナーが実行されている場合は、それを停止します。If the container is running, stop it.

docker stop core-counter

次の例では、すべてのコンテナーを一覧表示します。The following example lists all containers. 次に、docker rm コマンドを使ってコンテナーを削除した後、もう一度実行中のコンテナーを確認します。It then uses the docker rm command to delete the container, and then checks a second time for any running containers.

docker ps -a
CONTAINER ID    IMAGE            COMMAND                   CREATED          STATUS                        PORTS    NAMES
2f6424a7ddce    counter-image    "dotnet NetCore.Dock…"    7 minutes ago    Exited (143) 20 seconds ago            core-counter

docker rm core-counter
core-counter

docker ps -a
CONTAINER ID    IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES

単一実行Single run

Docker では、1 つのコマンドとしてコンテナーを作成して実行するための docker run コマンドが提供されています。Docker provides the docker run command to create and run the container as a single command. このコマンドでは、docker create を実行してから docker start を実行する必要がありません。This command eliminates the need to run docker create and then docker start. コンテナーが停止したら自動的にコンテナーを削除するように、このコマンドを設定することもできます。You can also set this command to automatically delete the container when the container stops. たとえば、docker run -it --rm を使うと 2 つのことが行われます。つまり、最初に現在の端末を使ってコンテナーに自動的に接続し、次にコンテナーが終了したらそれを削除します。For example, use docker run -it --rm to do two things, first, automatically use the current terminal to connect to the container, and then when the container finishes, remove it:

docker run -it --rm counter-image
Counter: 1
Counter: 2
Counter: 3
Counter: 4
Counter: 5
^C

また、コンテナーは .NET Core アプリの実行にパラメーターを渡します。The container also passes parameters into the execution of the .NET Core app. .NET Core アプリに対して 3 つまでしかカウントしないように指示するには、3 を渡します。To instruct the .NET Core app to count only to 3 pass in 3.

docker run -it --rm counter-image 3
Counter: 1
Counter: 2
Counter: 3

docker run -it では、Ctrl+C キーを押すと、コンテナーで実行されているプロセスが停止し、さらにコンテナーが停止されます。With docker run -it, the Ctrl+C command will stop process that is running in the container, which in turn, stops the container. --rm パラメーターを指定したので、プロセスが停止するとコンテナーは自動的に削除されます。Since the --rm parameter was provided, the container is automatically deleted when the process is stopped. それが存在しないことを確認します。Verify that it doesn't exist:

docker ps -a
CONTAINER ID    IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES

ENTRYPOINT を変更するChange the ENTRYPOINT

docker run コマンドでは、Dockerfile から ENTRYPOINT コマンドを変更し、そのコンテナーに対してのみ何か他のことを実行することもできます。The docker run command also lets you modify the ENTRYPOINT command from the Dockerfile and run something else, but only for that container. たとえば、次のコマンドを使うと bash または cmd.exe を実行できます。For example, use the following command to run bash or cmd.exe. 必要に応じて、コマンドを編集します。Edit the command as necessary.

この例では、ENTRYPOINTcmd.exe に変更されています。In this example, ENTRYPOINT is changed to cmd.exe. プロセスを終了してコンテナーを停止するには、Ctrl+C キーを押します。Ctrl+C is pressed to end the process and stop the container.

docker run -it --rm --entrypoint "cmd.exe" counter-image

Microsoft Windows [Version 10.0.17763.379]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\>dir
 Volume in drive C has no label.
 Volume Serial Number is 3005-1E84

 Directory of C:\

04/09/2019  08:46 AM    <DIR>          app
03/07/2019  10:25 AM             5,510 License.txt
04/02/2019  01:35 PM    <DIR>          Program Files
04/09/2019  01:06 PM    <DIR>          Users
04/02/2019  01:35 PM    <DIR>          Windows
               1 File(s)          5,510 bytes
               4 Dir(s)  21,246,517,248 bytes free

C:\>^C

重要なコマンドEssential commands

Docker には、コンテナーとイメージを作成、管理、操作するさまざまなコマンドが用意されています。Docker has many different commands that create, manage, and interact with containers and images. コンテナーの管理に不可欠な Docker コマンドは次のとおりです。These Docker commands are essential to managing your containers:

リソースをクリーンアップするClean up resources

このチュートリアルでは、コンテナーとイメージを作成しました。During this tutorial, you created containers and images. 必要な場合は、これらのリソースを削除します。If you want, delete these resources. 次のコマンドを使いますUse the following commands to

  1. すべてのコンテナーを一覧表示しますList all containers

    docker ps -a
    
  2. 実行しているコンテナーを名前で選んで停止します。Stop containers that are running by their name.

    docker stop counter-image
    
  3. コンテナーを削除しますDelete the container

    docker rm counter-image
    

次に、コンピューターに残しておきたくないイメージを削除します。Next, delete any images that you no longer want on your machine. Dockerfile によって作成されたイメージを削除した後、Dockerfile が基にした .NET Core イメージを削除します。Delete the image created by your Dockerfile and then delete the .NET Core image the Dockerfile was based on. IMAGE ID または REPOSITORY:TAG の書式に設定された文字列を使うことができます。You can use the IMAGE ID or the REPOSITORY:TAG formatted string.

docker rmi counter-image:latest
docker rmi mcr.microsoft.com/dotnet/core/aspnet:3.1

インストールされているイメージの一覧を表示するには、docker images コマンドを使います。Use the docker images command to see a list of images installed.

ヒント

イメージ ファイルは大きくなることがあります。Image files can be large. 普通、アプリのテスト中および開発中に作成した一時的なコンテナーは削除します。Typically, you would remove temporary containers you created while testing and developing your app. 通常、ランタイムがインストールされた基本イメージは、そのランタイムを基にして他のイメージをビルドする予定がある場合は、残しておきます。You usually keep the base images with the runtime installed if you plan on building other images based on that runtime.

次の手順Next steps