はじめに
Docker コンテナを初めて使ってから2年くらい経ちました色々な活用シーンを見た気もするし、誤った使い方をしているのではと気にかかる時もあります。
Docker コンテナを使い始めた人に伝える目的だったり、新しい活用知識が得られる期待もあって"Docker コンテナの活用シーン"を晒します。
1. ソースコードと実行環境を含んだアプリケーションの配布用途
(アプリケーション配布者側)
- Dockerfile を用意する
- ソースコード・実行ファイル、実行環境を含めてコンテナイメージをビルドする
- コンテナイメージをレジストリに置く
(アプリケーション利用者側)
- レジストリからコンテナイメージを取得する
- (もしくは Dockerfile からコンテナイメージをビルドする)
- コンテナイメージを利用する
2. 開発時の実行環境配布用途
- 成果物がソースコードのみ(ライブラリ等)の場合に開発時の実行環境を用意する
- 配布者はコンテナイメージをレジストリに置くことまでする必要はない
- (Dockerfile を用意しておく)
3. DevContainer(開発環境)配布用途、リモート開発環境用途
- "2. 開発時の実行環境配布用途"がプログラムの実行環境を用意するのに、対しこちらは開発環境をコンテナに入れる
- githubのcodespacesに開発環境をdeployする事ができるらしい
- 筆者はまだ触っておらず、codespacesがGAになるまで待っています
- 〜開発環境は全てコンテナの中へ〜VS Code Dev Container Guidebooに詳しく書かれています
4. どうなってもいいサンドボックス用途
- 使い捨ての環境としてコンテナを使う
- ubuntuを調べる際は
docker run -it --rm ubuntu:18.04 bash
してます
- ubuntuを調べる際は
5. "CLI アプリケーションの中身がDockerコンテナ"な用途
$ curl "<ソース置き場>" > hoge_command
$ chmod +x hoge_command
$ mv hoge_command /usr/local/bin/hoge_command
hoge_command が shell script になっており、script の中でexec docker run fuga_container
している。
実例: https://github.com/COLORFULBOARD/bq_profile/blob/master/bq_profile
手軽にCLIアプリケーションを配布する際に便利な気がします
6. "CLIアプリを一時利用"な用途
CLIアプリ(コマンド)を install せずに利用する目的で Docker コンテナを使う事ができます
- git を install せずにgitを利用する
docker run --name repo alpine/git clone https://github.com/docker/getting-started.git
docker cp repo:/git/getting-started/ .
- 出自: Docker Desktop for Mac のチュートリアル
以上です。
他にもこんな使い方したら便利だよという情報があれば教えてください。