Ubuntu 22.04 LTS DesktopにDockerを導入する（Docker-Composeも入れます）

# Ubuntu 22.04 LTS DesktopにDockerを導入する（Docker-Composeも入れます）
## 環境
* OS: Ubuntu 22.04LTS Desktop (amd64)
* CPU: 8スレッド
* メモリ: 16GB
* SSD: 1TB

## aptパッケージを利用して、Dockerを導入する
```bash
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt install lsb-release ca-certificates apt-transport-https software-properties-common -y
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update -y
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
```
以上で、Dockerの導入は完了です！

## テスト
テストしてみましょう！
DockerHubより、Hello-Worldイメージを使用します。

```bash
$ docker run hello-world

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/
```
上記のように表示されれば大成功です！！

さて次はDocker-Composeをインストールします！
## Docker-Composeをインストールする
```bash
$ mkdir -p ~/.docker/cli-plugins/
$ curl -SL https://github.com/docker/compose/releases/download/v2.9.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
$ chmod +x ~/.docker/cli-plugins/docker-compose
$ docker compose version
Docker Compose version v2.9.0
```
上記のようにバージョンが表示されれば大成功です！

## Docker-Composeの動作確認
さて、docker-compose.ymlを記載する場所をどこかに作りましょう
```bash
$ mkdir ~/temp
$ cd ~/temp
$ touch docker-compose.yml
```
ホームディレクトリのtempにdocker-compose.ymlを作りました。さて編集します。
```bash
$ vim docker-compose.yml
```

apacheをdockerで動かしてみます！
８０番ポートをそのまま８０番ポートにフォワーリングします。

```yml:docker-compose.yml
version: "3"
services:
  web:
    image: "httpd:latest"
    ports:
      - "80:80"
```
そしたらさっそく起動します！
```bash
$ docker-compose up -d
```

ブラウザで確認します。

![Screenshot from 2022-08-05 17-19-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34365/26b4598a-50e9-7b5f-5d47-8baa48f8c425.png)

Apacheが動きました！おめでとうございます。

## docker-composeで動かしているコンテナに入る
```bash
$ docker ps
CONTAINER ID   IMAGE          COMMAND              CREATED         STATUS         PORTS                               NAMES
a66772455b3c   httpd:latest   "httpd-foreground"   4 seconds ago   Up 3 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   temp_web_1
```
CONTAINER IDをコピーする。

```bash
$ docker exec -it a66772455b3c /bin/bash
root@a66772455b3c:/usr/local/apache2#
```
入れましたね！
それではvimでもインストールしてみましょう

```bash
root@a66772455b3c:/usr/local/apache2# apt update -y && apt install vim -y
...
Processing triggers for libc-bin (2.31-13+deb11u3) ...
```

```bash
root@a66772455b3c:/usr/local/apache2# vim
```
![Screenshot from 2022-08-05 17-25-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34365/b1819599-51c5-069b-b820-934b1a430ddf.png)
おめでとうございます。vimが動きましたね。

それでは、docker-composeで動かしたものを全部破棄します。

## Docker-composeで動かしたものなどすべて破棄する
```bash
$ docker-compose down
$ docker system prune -f -a
```
<strong>※注意:「docker system prune -f -a」コマンドはDockerのイメージ、コンテナ、ボリュームなどすべて削除してしまいます。特定の物だけ削除したい場合は公式リファレンスを参照してください！</strong>

以上です。

### リンク
[Docker公式ドキュメント](https://docs.docker.com/)
[Docker Hub](https://hub.docker.com/)