参考教材
前回の学習記事
Docker
Dockerの本質
⭐️①全て環境をソースコードで表現(管理)できる
ドキュメント不要
⭐️②不変なインフラ
1回作ったら変更しない、また作り直す場合は0から作成
⭐️③ポータビリティ
どこでも同じように動く
Dockerとは?
アプリケーションをその実行環境を「コンテナ」という単位でパッケージ化し、どこでも同じように動かせるようにするツール
イメージ
まずは動かそう
docker container run hello-world
「hello-world」イメージのダウンロードの流れ
①Docker Hubから「hello-world」イメージのダウンロード
②そのイメージからコンテナを作成
③コンテナ内のプログラムを実行
④結果を表示
イメージとは?
⭐️『アプリを動かすための全部入りパッケージ』
✅再利用可能
何度でも同じイメージから実行できる
✅共有可能
Docker Hubで世界中の人と共有できる
✅バージョン管理
タグで異なるバージョンを管理
これから学ぶコマンド
なぜコマンドを学ぶのか?
①docker-compose.ymlの設定が何をしているのか分かる
②トラブル時に原因を特定できる
③細かい操作が必要な時に対応できる
イメージ操作コマンドを学ぼう
イメージ一覧を表示
docker image ls
イメージのダウンロード
docker image pull alpine
docker image ls

alpineのタグを指定しないと、latestをいうタグで生成される
タグでバージョンを指定
docker image pull alpine:3.18
docker image ls alpine
TAGが変わるとIMAGE IDも変わる
タグの選び方
⚠️latestは最新という意味だが、いつ更新されるか分からないので非推奨
イメージの削除
不要なイメージはディスク容量を圧迫するので削除しよう
docker image rm hello-world
強制削除
コンテナ使用中エラーの際など...
docker image rm -r hello-world
⚠️本番環境のイメージ削除は本当に気を付ける!!
IMAGE IDを活用する
イメージ名だけではなく、IMAGE IDでもイメージを指定できる
docker image pull hello-world
docker image rm ca9
フルID指定でもいいが、一意に特定できれば先頭の数文字でもOK!!
コマンドを忘れたら
docker image --help
※ docker image でもコマンド一覧が出る
覚えとおけよ!!なこと
Dockerのコマンドは 「docker [対象] [操作]」 の形式になっている
⚠️ docker [対象] --help でいつでも使いたいコマンドを調べられる
コンテナ
⭐️イメージを実行している状態
イメージ: 設計図(テンプレート)
コンテナ: 設計図から作成した実態
コンテナの特徴
✅独立した実行環境
他のコンテナやホストに影響しない
✅起動が早い
仮想マシンより圧倒的に速い
✅使い捨て可能
削除しても元のイメージは残る
✅いくつでも作れる
1つのイメージから複数のコンテナを作成できる
コンテナのライフサイクル
ライフサイクル
→コンテナが作成されてから削除されるまでの一連の流れのこと
ライフサイクルを学ぶ理由
Web開発では、Webサーバーを常にUp(起動中)の状態にしておく必要がある。
ライフサイクルを理解すると、「今のステータスからどう変更すればいいのか?」が分かるようになる。
コンテナの状態
コンテナを作成する(Created)
docker container create --name my-alpine alpine
docker container ls -a
docker container ls は Up(実行中)のコンテナだけ表示
docker container ls -a は 全ての状態のコンテナを表示c
コンテナを起動する(Up / Exited)
docker container start my-alpine
docker container ls -a
⚠️コンテナは実行するコマンドが終わると終了する
alpineイメージは、起動時に/bin/sh(シェル)を実行する。シェルは入力がないと即座に終了するので、コンテナも終了した
🐚シェルとは?
ユーザーとOSの間に立って、コマンドを解釈・実行するプログラミング
・ユーザーが入力したコマンド(テキスト)を解釈する
・それをカーネルが理解できる形に変換して渡す
・カーネルから結果を受け取って、ユーザーに表示する
シェルを体験しよう!
/bin/sh
/bin/sh echo "hello"
/bin/sh ls
/bin/sh exit
シェルの種類
docker container run の正体
docker container run は3つの操作を一度にできる便利なコマンドです
別のコマンドを実行してみよう
docker container run --name my-alpine2 alpine ls
docker container run --name my-alpine2 alpine pwd
何も指定しないと /bin/sh だが、イメージ名の後にコマンドを指定するとそのコマンドを実行できる
-itをつけて起動しよう
-it オプションをつけると、シェルが入力を待ってくれる
docker container run -it --name my-alpine3 alpine
docker container ls
※別ターミナルで確認
💡 Up(実行中)だと -a 無しの docker container ls で確認できる
コンテナ内で操作しよう
コンテナから出る
ずっと動くコンテナとすぐ止まるコンテナ
コンテナを停止する(Exited)
nginxコンテナを作成・起動
docker container run --name my-nginx nginx
docker container ls
コンテナを停止する
docker container stap my-nginx
💡 明示的にexitにすることができる
⚠️ コメントを停止するだけで削除はしない
コンテナを削除する
コンテナを削除する
docker container rm my-alpine
⚠️実行中のコンテナは削除できない
docker container rm my-alpine3
エラー内容
→ my-alpine3 は実行中だから削除できません
docker container stop my-alpine
docker container rm my-alpine
docker container ls -a
停止中のコンテナの一括削除
docker container prune
⚠️ 本番環境の削除は本当に気を付ける
ライフサイクルとコマンド
コンテナを1発で起動する(run)
run は3つのコマンドを自動に行う
シンプルな実行
docker container run hello-world
よく使うオプション
バックグラウンドで実行
docker container run -d --name my-nginx nginx
docker container ls
💡 Webサーバーなどずっと動かし続けたいコンテナに使用する
対話モードで実行(-it)
docker container run -it --name my-alpine alpine
後片付け
docker container stop my-nginx && docker container rm my-nginx
&&
左側の処理が成功したら右側の処理に行く
runオプションまとめ
実行中のコマンドに入る(exec)
Up(実行中)のコンテナの中に入ってコマンドを実行できる
サーバーの設定確認やログ調査など、実務で頻繁に使用する
①nginxコンテナを起動
docker container run -d --name my-nginx nginx
②実行中のコンテナに入る
docker container exec -id my-nginx /bin/bash
コマンドを実行
設定ファイルの確認
全文確認
cat /etc/nginx/nginx.conf
| head -5 ... 最初の5行を確認する
cat /etc/nginx/nginx.conf | head -5
Upのnginxコマンドの中に入っていた
シェルを使わないでexecを使う方法
docker container exec my-nginx ls
execとrunの -it の違い
コンテナ一覧の見方
docker container ls -a の出力を詳しく確認しよう
docker container ls
各項目の意味
CONTAINER IDでコンテナを指定できる
docker container stop 3f10 && docker container rm 3f10







































