developer's diary

最近はc#のエントリが多いです

C# (dotnetcore) Docker コンテナで実行するコンソールアプリケーションのチュートリアルを実施してみた

このエントリは、個人的にメモをまとめたものになります。 個人的なチュートリアルの補助的役割です。

実施したチュートリアル

docs.microsoft.com

事前の準備

Docker Desktop on Macをインストール

docs.docker.jp

インストールが成功すると、Dockerコマンドが利用できるようになります。

f:id:mitsugi-bb:20200909233926p:plain
docker --version

準備完了

これでチュートリアルを進めていきます。

docs.microsoft.com

実際チュートリアルを進めるところは記事にしません。 リンク先を参照ください。

プログラムを書き換えた際に再度実行して確認する流れ

(1) コンパイル

dotnet publish -c Release   

(2) dockerイメージのビルド

docker build -t <container image name> -f Dockerfile .

(3) コンテナの実行

docker run -it --rm <container image name>

感想

これだけいろんなOS、ミドルウェア、アプリケーション、プログラミング言語、ライブラリ、パッケージ等がどんどん複雑化されていく中で、 アプリケーションをコンテナ化するということは、1つ抽象化することに貢献してくれるのだろう。

抽象化されることによって、複雑なアプリケーションを認識しやすいようにしてくれる。

メモ

コンテナイメージの作成

docker build -t <container image name> -f Dockerfile .

コンテナイメージの一覧

docker images

コンテナの作成

docker create --name <container name> <container image name>

コンテナ一覧の確認

docker ps -a

コンテナのstart

docker start <container name>

コンテナのstop

docker stop <container name>

コンテナへ接続

--sig-proxy=falseを付与すると、Ctrl+c押下時に、コンテナに対して、SIGINTが送信されなくなる

docker attach --sig-proxy=false <container name>

コンテナの削除

docker rm <container name>

コンテナの起動、実行、終了

docker run -it --rm <container image name>

コンテナ内のアプリに対して、引数を渡すこともできる。

docker run -it --rm <container image name> 引数

ENTRYPOINT をbashに変更して起動

docker run -it --rm --entrypoint "bash" <container image name>

dockerイメージの削除

docker rmi <container image name>:<tag name>