Skip to main content

Dockerとは?

Dockerは、コンテナ仮想化を用いてアプリケーションを開発・配置・実行するためのオープンプラットフォームです。

なにができる?

Dockerとは、ざっくり「パソコンの上で仮想の別のパソコンを動かすためのプラットフォーム」だと考えれば良いと思います。 Dockerを使うことで、例えば「Windowsの上でUbuntuを動かす」みたいなことをとても簡単に行うことができます。

インストール方法

Ubuntuの場合

  1. 古いDockerが入っている場合は、アンインストールします。

    sudo apt-get remove docker docker-engine docker.io containerd runc
  2. 必要なパッケージをインストールします。

    sudo apt-get update
    sudo apt-get install ca-certificates curl gnupg
  3. Docker公式のGPG Keyをセットします。

    sudo install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    sudo chmod a+r /etc/apt/keyrings/docker.gpg
  4. 以下のコマンドを実行してリポジトリのセットアップをします。

    echo \
    "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
    "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  5. Dockerをインストールします。

    sudo apt update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  6. (option) sudoなしでdockerコマンドを実行するには、USERをdocker groupに追加します。

    sudo gpasswd -a $USER docker
  7. (option) DockerでGPUを利用する場合は、nvidia-contaner-toolkitをインストールします。

    1. GPG Key の設定など

      distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/experimental/$distribution/libnvidia-container.list | \
      sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
      sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
    2. インストール

      sudo apt update
      sudo apt install nvidia-container-toolkit
    3. Dockerにnvidia-contaner-toolkitを認識させる

      sudo nvidia-ctk runtime configure --runtime=docker
    4. Dockerを再起動する

      sudo systemctl restart docker

動作確認

hello-world コンテナを実行し、動作確認をします。

  • コマンド

    docker run hello-world
  • 実行結果: 以下のように表示されればOKです。

    docker run hello-world
    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    719385e32844: Pull complete
    Digest: sha256:926fac19d22aa2d60f1a276b66a20eb765fbeea2db5dbdaafeb456ad8ce81598
    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.
    (amd64)
    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/

(option) DockerでGPUが認識しているか確認する

  • コマンド
    docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
  • 実行結果: 以下のように表示されればOKです。
    docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
    Unable to find image 'nvidia/cuda:11.6.2-base-ubuntu20.04' locally
    11.6.2-base-ubuntu20.04: Pulling from nvidia/cuda
    56e0351b9876: Already exists
    0e353182dfa4: Pull complete
    63add13c711b: Pull complete
    1210b79751b0: Pull complete
    eb1e2ff09225: Pull complete
    Digest: sha256:4b0c83c0f2e66dc97b52f28c7acf94c1461bfa746d56a6f63c0fef5035590429
    Status: Downloaded newer image for nvidia/cuda:11.6.2-base-ubuntu20.04
    Mon Jul 24 16:14:12 2023
    +---------------------------------------------------------------------------------------+
    | NVIDIA-SMI 535.54.03 Driver Version: 535.54.03 CUDA Version: 12.2 |
    |-----------------------------------------+----------------------+----------------------+
    | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
    | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
    | | | MIG M. |
    |=========================================+======================+======================|
    | 0 Tesla T4 Off | 00000000:00:1E.0 Off | 0 |
    | N/A 31C P8 9W / 70W | 2MiB / 15360MiB | 0% Default |
    | | | N/A |
    +-----------------------------------------+----------------------+----------------------+

    +---------------------------------------------------------------------------------------+
    | Processes: |
    | GPU GI CI PID Type Process name GPU Memory |
    | ID ID Usage |
    |=======================================================================================|
    | No running processes found |
    +---------------------------------------------------------------------------------------+

参考文献