🌊

Dockerコンテナ起動までの一連の流れをまとめてみた【ハンズオンあり】

に公開

Dockerコンテナの起動までの一連の流れを簡単に解説

Dockerコンテナイメージを取得して起動するまでの一連の流れをまとめてみました。
ハンズオンで学んでいけるようになっていますのでぜひ手を動かして学んみてください。

今回はコンテナのベースイメージとしてよく使われるDebianコンテナを起動する流れを説明します。
※Debianはコンテナのベースとしてのベストプラクティスとされています。

Docker Hubの公式イメージを使いますが、Docker Hubの画面で参考にすべきポイントも軽く触れています。

(環境の前提)
Docker Engine(Docker Desktopなど)はインストール済みの前提とします。

1. イメージの検索

リポジトリにアクセスし、目的のイメージがあるか確認します。リポジトリって何?って方は以下の記事を参考にしてください。

https://zenn.dev/engineer_k/articles/8a5fe997c131b4

  • Docker hubにアクセス
     https://hub.docker.com/
  • Docker hubで「debian」のキーワードで検索
  • DebianコンテナイメージがDocker Hubにあることを確認
  • DebianイメージのページにはDebianの基本知識なども書いてあります
  • 英語でたくさん書いてありますが、debianというのがイメージ名であることがわかります(pullをするときの参考にします)
  • ページ上部にはpullのサンプルコマンドが載っています。ここからもpullする時のイメージ名がわかりますね(タグについての細かい説明は別の記事にしたいと思います)

2. イメージのダウンロード(pull)

  • 実行コマンド
    pullを実行してDocker Hubからイメージをダウンロード
# Debianイメージをpullします。引数は<イメージ名>:<タグ>
# latestは安定のタグの最新版を指定しています
docker pull debian:latest
  • 実行結果
    イメージのダウンロードが完了
Using default tag: latest
latest: Pulling from library/debian
Digest: sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Status: Downloaded newer image for debian:latest
docker.io/library/debian:latest

3. Debianコンテナを起動(run(図で言う③、④の一連を実行))

  • 実行コマンド
    コンテナを起動します。debianイメージでは暗黙的にコンテナを起動するとメインプロセスとしてシェルが起動するようになっています。
docker run -it debian

(オプション補足)
-i:標準入力を開く
-t:擬似端末を割り当てる
debian:使用するイメージ名

itオプションがなぜ必要になるのかを理解したい方は以下の記事で説明しています。

https://zenn.dev/engineer_k/articles/a3615dfe54e990

  • 実行結果
    ターミナルでシェルが起動します
root@a1b2c3d4e5f6:/#

4. コンテナを停止する

コンテナを停止する方法としてメジャーなdocker stopコマンドがありますが
今回はあえて、メインプロセスが終了するとDockerコンテナが終了するという性質を使って、シェルが終了⇒メインプロセスが終了と判断⇒コンテナが停止、という流れで停止していきます。

それでは、シェルを終了(exit)することでコンテナを停止します。

exit

シェルを起動するときだけコンテナを起動するという使い方は上記で問題ないですが、exitしたらコンテナまで停止してしまうのは実用的に困る部分もあると思います。
常時コンテナを起動しておきつつ、好きなタイミングでシェルを起動できる方法をまた別の記事で紹介しますね!

Dockerを体系的に学びたい方

Dockerの入門の講座をUdemyで公開しました。
3時間程度の時間で入門レベルをギュッとまとめています。
Dockerの起動方法やDockerfileの作り方、Docker Composeの実行方法など一通り詰まっています。
とりあえず一回触ってみたい方、これから現場にDockerの導入を検討の方はぜひ!

https://www.udemy.com/course/dockerwindowspc/?referralCode=6EDF0B9CB44057ACC299

Discussion