Введение

В этой статье мы собираемся создать образ Docker для консольного приложения .net framework. Образ Docker позволит консольному приложению выполняться в контейнере Docker.

Консольное приложение

Консольное приложение, которое мы будем использовать, называется HelloWorldConsole.exe. При запуске из командной строки приложение отображает «Hello World».

Приложение представляет собой программу C# (c Sharp), скомпилированную с использованием .net framework 4.7. Ниже приведен исходный код приложения, которое мы будем использовать в этой статье. Хотя в этой статье мы будем использовать только скомпилированное приложение.

using System;

namespace HelloWorldConsole
{
    internal class Program
    {
        static void Main()
        {
            Console.WriteLine("Hello World");
        }
    }
}

Процедура контейнеризации

В этой процедуре мы собираемся создать Dockerfile. В этом файле описывается, как создать образ Docker для консольного приложения HelloWorldConsole.exe.

Шаг 1 –в том же каталоге, что и приложение HelloWorldConsole.exe, создайте текстовый файл с именем Dockerfile без расширения.

Шаг 2 –с помощью текстового редактора добавьте следующий код в файл Dockerfile.

FROM mcr.microsoft.com/dotnet/framework/runtime:4.8
WORKDIR /app
COPY . .
ENTRYPOINT ["/app/HelloWorldConsole.exe"]

Команда FROM указывает, что образ Docker будет наследоваться от образа Docker среды выполнения Microsoft dotnet.

Команда WORKDIR устанавливает рабочий каталог для dockerfile в app.

Команда COPY копирует файлы с хост-компьютера в образ Docker. Первая точка указывает на копирование из текущей папки (папки, содержащей файл докера). Вторая точка указывает на копирование в WORKDIR, который в этом примере является папкой приложения.

Команда ENTRYPOINT указывает программу, которая будет выполняться при запуске контейнера.

Шаг 3.Откройте командную строку и измените каталог на папку, содержащую Dockerfile.

Шаг 4. Выполните команду docker для создания файла образа. Команда создаст новый образ докера с именем helloworldconsole. Все имена образов Docker написаны строчными буквами. Точка (точка) в конце команды очень важна, поскольку она информирует команду о необходимости поиска Dockerfile в текущем рабочем каталоге.

docker image build --tag helloworldconsole .

Шаг 5.Выполните команду docker, чтобы запустить контейнер, используя образ, созданный на предыдущем шаге. Аргумент name задает имя контейнера hello1, а helloworldconsole — это имя изображения, которое будет использоваться для создания контейнера.

docker run --name hello1 helloworldconsole

Шаг 6.Вывод из консольного приложения будет сохранен в журналах Docker. Вы можете просмотреть сообщения журнала, используя команду docker log с именем контейнера.

docker logs hello1

Шаг 7.Контейнер hello1 можно остановить с помощью команды cocker stop с именем контейнера. Чтобы убедиться, что контейнер остановлен, выполните команду docker container ls.

docker stop hello1

docker container ls

Краткое содержание

В этой статье мы создали образ Docker под названием helloworldconsole. Затем, используя образ helloworldconsole, мы создали док-контейнер под названием hello1. Контейнер запускал консольное приложение HelloWorldConsole.exe. Мы просмотрели вывод консольного приложения с помощью журналов докеров, а затем остановили контейнер с помощью команды docker stop.