1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker を学んでみる - 001 -

Posted at

もくじ

Docker ってなぁに?
Docker の基本
コンテナの操作
おわりに

使用する環境

  • Apple M1 Pro
  • macOS Sequoia 15.0
  • Rancher Desktop

使用書籍

  • 開発系エンジニアのための Docker 絵とき入門
    第1章 〜 第6章

Docker ってなぁに?

コンテナ型仮想化ソフトウェアのひとつ

  • ホスト OS にインストールして、コンテナという単位でアプリケーションを管理する
  • 1つのコンテナで1つのアプリケーションを扱う
  • コンテナにゲスト OS は含まれないが、あるように見える
  • コンテナは Linux カーネルをホストマシンに借りるため、Linux 仮想マシンが必要

Docker を構成するもの

  • Docker
  • Docker Engine
    • デーモン(常駐プロセス)
    • デーモンが提供する API
    • デーモンが提供する CLI クライアント
  • Docker Compose
    • Docker コンテナを一括で操作するためのツール
  • Docker Desktop
    • Docker を扱うための GUI アプリケーション
  • Docker Hub
    • クラウド上のレジストリサービス
    • イメージ(コンテナの雛形)が公開されている

Docker の基本

コンテナ ってなぁに?

  • コマンドを実行するための領域
  • コンテナはイメージから作られる
  • 個々のコンテナは互いに独立している
  • コンテナはコンテナランタイムがあればどこでも動く

イメージ ってなぁに?

  • コンテナの実行に必要なパッケージ
  • イメージを共有すれば複数人で同じ開発環境を構築できる

Dockerfile ってなぁに?

  • 独自のイメージを作るための設定ファイル

コンテナの操作

事前に Rancher Desktop を起動します

コンテナを起動する

hello-world というイメージを使ってコンテナを起動してみる

docker container run hello-world

そうすると以下のようなメッセージが表示された
ここでは Hello from Docker! という表示が出れば OK!

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
478afc919002: Pull complete 
Digest: sha256:91fb4b041da273d5a3273b6d587d62d518300a6ad268b28628f74997b93171b2
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (arm64v8)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

色々書いてあるが Hello from Docker! を表示するために Docker が何をやったかがうんたらかんたら書いてある。

Ubuntu container を起動するコマンドが親切?に書いてある。

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

docker run コマンドは旧コマンドらしい。
現在のコマンドで実行してみる。(挙動は一緒だけど・・・)

docker container run -it ubuntu bash

コマンドを実行すると、ubuntu のイメージを使ったコンテナが起動し、操作待ちの状態になる。

Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
6e59cb05818e: Pull complete 
Digest: sha256:dfc10878be8d8fc9c61cbff33166cb1d1fe44391539243703c72766894fa834a
Status: Downloaded newer image for ubuntu:latest
root@1a36f23dc916:/# 

試しに現在のシェルが何か聞いてみる

echo $SHELL
/bin/bash

よかった。bash。想定通り!

OS 情報が記載されてるファイルものぞいてみる。

head -n 4 /etc/os-release
PRETTY_NAME="Ubuntu 24.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.1 LTS (Noble Numbat)"

Ubuntu の 24.04 が動いていることがわかる。
すごい。mac から Ubuntu 使えてる〜。

コンテナ一覧を確認する

もうひとつターミナルを立ち上げて
ls コマンドで起動中のコンテナ一覧を確認してみる

docker container ls
CONTAINER ID   IMAGE     COMMAND   CREATED              STATUS              PORTS     NAMES
1a36f23dc916   ubuntu    "bash"    About a minute ago   Up About a minute             modest_clarke

直前まで使っていた ubuntu コンテナが起動中になっていることがわかる。(STATUS が Up になっている)

すべてのコンテナ一覧で起動中以外のコンテナも確認してみる。

docker container ls --all
CONTAINER ID   IMAGE         COMMAND    CREATED              STATUS                   PORTS     NAMES
1a36f23dc916   ubuntu        "bash"     About a minute ago   Up About a minute                  modest_clarke
15ff47cecae1   hello-world   "/hello"   5 hours ago          Exited (0) 5 hours ago             sweet_carver

最初に作った hello-world コンテナは、メッセージを出力したあとそのまま終了してしまうので、--all をつけることで一覧で確認できる。(STATUS が Exited は停止済のコンテナ)

起動中のコンテナを停止する

停止したい コンテナ ID を控えておく。(コンテナ一覧を確認したときに表示される)
今回は先ほど起動した Ubuntu コンテナを停止する。

docker container stop 1a36f23dc916
1a36f23dc916

コンテナが停止されると、停止したコンテナの ID が返ってくる
もう一度すべてのコンテナを表示させてみると、Ubuntu コンテナも停止済になっていることがわかる。

docker container ls --all
CONTAINER ID   IMAGE         COMMAND    CREATED         STATUS                        PORTS     NAMES
1a36f23dc916   ubuntu        "bash"     7 minutes ago   Exited (137) 15 seconds ago             modest_clarke
15ff47cecae1   hello-world   "/hello"   5 hours ago     Exited (0) 5 hours ago                  sweet_carver

コンテナを削除する

停止済みのコンテナを削除する

rm コマンドを使い、コンテナ ID もしくは コンテナ名で削除できる。
Ubuntu コンテナを、コンテナ ID で
hello-world コンテナを、コンテナ名で削除してみる。

docker container rm 1a36f23dc916 sweet_carver
1a36f23dc916
sweet_carver

削除できているか確認してみる

docker container ls --all
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

コンテナが表示されないため、削除されていることがわかる。

コンテナを削除するコマンド①

コンテナを起動するコマンドに --rm オプションコマンドを付与する

コンテナはイメージがあれば起動できるので、起動時にコンテナを停止したらついでに削除してねってオプションコマンド --rm をつけて起動するのもよいかも。

Ubuntu コンテナを起動する

docker container run -it --rm ubuntu bash

別ターミナルで Ubuntu コンテナが起動されていることを確認する

docker container ls
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAMES
ccefa9487efd   ubuntu    "bash"    6 seconds ago   Up 5 seconds             serene_haslett

Ubuntu コンテナを起動しているターミナルに戻って、コマンドの待ち受け状態を抜ける

exit

すべてのコンテナ一覧を確認する

docker container ls --all
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

コンテナの終了と同時にコンテナが削除されていることがわかる。

コンテナを削除するコマンド②

起動中のコンテナを強制削除する --force

Ubuntu コンテナを起動する

docker container run -it ubuntu bash

別ターミナルで Ubuntu コンテナが起動されていることを確認する

docker container ls
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAMES
dcc20ef5c99c   ubuntu    "bash"    8 seconds ago   Up 7 seconds             cool_galois

起動中のコンテナを停止&削除する

docker container rm --force dcc20ef5c99c
dcc20ef5c99c

すべてのコンテナ一覧を確認する

docker container ls --all
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

コンテナを途中で強制終了させたい場合は、--force を使うが、場合によってはデータの損失や整合性に注意が必要になってくると思うので、慎重に使用したい。
--rm はコンテナが終了すると自動的に削除されるので、ディスク領域のムダ遣いを防げる〜☆
おすすめは --rm かな。

おわりに

今回はコンテナを起動して停止するところまでやってみました。
ちょっとだけ Docker が怖くなくなりました(笑)
この本、私にとっては分かりやすくて今のところ好きです〜!
くじけず最後までやってみようと思う。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?