Ubuntu24.04でDockerを使用できるようにする

機械学習勉強用に構築したLinux環境でDockerを使えるようにしていくよ
Linux環境は最新のUbuntu 24.04 LTSだよ

# 本題
機械学習やプログラムの勉強をしていると、使用する開発言語やフレームワークに合わせた環境構築を行う必要があります。また、複数の教材を参考に様々な開発を行っていると使用している環境のバージョンや依存がぐちゃぐちゃになってしまい、勉強どころではなくなることも多々あります。
機械学習やソフトウェア開発の勉強をしたいのにその環境構築で時間がかかってしまいやる気が削がれ、結局手を付けなくなることを何度経験したことか。

今回はOS上に仮想環境を構築するDockerの環境構築をしてみました。
:point_right_tone3:環境構築が嫌なのに、ここで環境構築の記事を書くのかい:wave_tone3:

## Dockerとは
Dockerとはコンテナ型の仮想環境を構築するためのツールです。Dockerを使うと、開発者は面倒な環境構築や管理を行わずに、どこでもアプリケーションを構築、共有、実行、検証できるようになります。
コンテナを配布することにより、異なる場所でも同じ環境で開発や運用を行うことができます。
WindowsやMac、はたまたLinux上に仮想環境を構築しその上で開発を行います。
コンテナには、アプリケーションやフレームワーク、ベースとなるオペレーティングシステムに至るまで、コードを実行するために必要なものがすべて用意されています。

# Dockerのインストール手順
dockerを使用する（インストールする）環境はUbuntu 24.04　LTSです。

:::note info
今回インストールするのはdocker Engineとなります。Docker Desktop for Linuxもありますが、本記事執筆時（2024/05/24）では、[Docker Desktopは最新のUbuntu 24.04 LTSにおいてはまだサポートされておらずDocker Desktopの起動に失敗するようです。](https://docs.docker.com/desktop/install/ubuntu/)（試してはいません）
Docker本体はUbuntu 24.04 LTS に対応しています。
:::

まず最初にDockerが入っていないことを確認します。
ターミナル上で以下を叩くと`Command 'docker' not found`が出ると思います。
Dockerのバーションが表示されたら（すでにインストールされている場合は）この投稿にいいねをしてそっとWebブラウザを閉じてください。:sweat_smile:

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604944/c370bac0-f038-dab8-e4cb-c3c687a3e824.png)

ターミナルを見ればインストールのコマンドが書いていますが、ひとまずは[Docker公式のインストール方法](https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository)を参考にDocker Engineをインストールしていきましょう。

:::note warn
### ※Docker Engineをインストールする前に、競合するパッケージをアンインストールする必要があります。

もし過去のバージョンや他のパッケージをインストールするなどして以下のパッケージが含まれている場合は、公式バージョンのDocker Engineをインストールする前にこれらのパッケージをアンインストールする必要があります。

* `docker.io`
* `docker-compose`
* `docker-compose-v2`
* `docker-doc`
* `podman-docker`
:::

___ 

## Dockerのaptリポジトリのセットアップ
まず最初に以下コマンドで必要なパッケージのインストール及びDocker  GPG keyの追加を行います。

```terminal
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
```

次にリポジトリをAptソースに追加します
```terminal
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
```
## dockerパッケージをインストール
以下のコマンドでパッケージをインストールします。
```
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

ここまででDockerを入れることができると思います。
バージョン確認をすると正しくインストールされていると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604944/5de135e4-ee92-35ef-8419-12a05b97d37e.png)

## Docker Engineを用いて簡単なDockerイメージを起動してみる。
Docker Engineが正しく動くのを確認するため、`hello-worldイメージ`をd
```
sudo dockeer run hello-world
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604944/0bf82da9-58e7-6ad4-c0e0-7c6f19148147.png)

### Docker Groupへの追加
ここまででDockerをインストールしDocker Engineを用いて実行をすることができました。
しかし今のままでは毎回`sudo`で実行する必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604944/194643de-6b3c-def2-c86f-4bdf90cbc73e.png)

Dockerを立ち上げるたびに毎回`sudo`を頭につけdockerコマンドを打つのも面倒なので、ユーザをdockerグループに所属させます。

まず、現状のグループの確認を行います。自分はインストールと同時にグループが作成されていましたが、なければ自分で作成します。

```terminal
cat /etc/group | grep docker
# docker:x:984:  //(インストールと同時に追加されていた)

// グループがない場合
sudo groupadd docker
```

ユーザーをDockerグループに追加します。
```
sudo usermod -aG docker $ユーザー名
```

設定を反映させるため、一旦ログアウトしサイドログインして`sudo｀を使用せずDockerを操作できるか確認します。

再ログイン後
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604944/45160ebf-7811-763f-8c2e-ce84a654475d.png)


これで無事にDockerが動かせるようになりました。