Mac の VirtualBox の Ubuntu に SSH 接続して Docker をインストールするまでやる

# 1. Mac に VirtualBox をインストール

### Homebrew のサイトでスクリプトを確認し、terminal で実行する
- https://brew.sh

2020年10月25日時点では下記のスクリプト

```{sh}
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
```

### Homebrew を利用して Mac に VirtualBox をインストールする

```{sh}
brew update && brew upgrade && brew upgrade --cask
brew cask install virtualbox
```

# 2. VirtualBox に Ubuntu をインストール


### Ubuntu のイメージをダウンロードする
- Ubuntu.com - [Get Ubuntu](https://ubuntu.com/download/)


### virtualbox に Ubuntu をインストールする
- LIFESTYLE LAB - [やっとできた！MacのVirtualBox上にUbuntuをインストールする方法](https://tomslifestylelab.com/mac-virtualbox-ubuntu/)

### Ubuntu に Guest Additions をインストールする
- Qiita - [MacでUbuntuを快適に使う](https://qiita.com/ryoheimorimoto/items/a82369a83c100a646cce)

# 3. Ubuntu への SSH 接続を設定
- with FPGA - [Mac 上のVirtual Box のUbuntu にSSH でアクセスしX転送する](https://withfpga.com/?p=78)

### Ubuntu にホストオンリーアダプタを設定する

- VirtualBox 上の Ubuntu の電源を落としておく
- VirtualBox > File > Host Network Manager... を選択する
- Create ボタンを押して vboxnet0 を作成する
- DHCP Server は Enable にチェックする
- Host Network Manager のウィンドウを Close する
- VirtualBox の Settings ボタンを押す
- Network タブを選択する
- Adapter 2 を選択する（選択できなければ VirtualBox をいちど再起動する）
- Enable Network Adapter にチェックを入れる
- Attached to: で Host-only Adapter を選択する
- OK ボタンを押す

### Ubuntu に openssh-server をインストールする

VirtualBox 上の Ubuntu を起動し、terminal を開いて下記コードを実行する

```{sh}
sudo apt update && sudo apt upgrade
sudo apt install openssh-server
sudo systemctl enable ssh
sudo systemctl restart ssh
ip address
```

`3: enp0s8` に 割り振られた `inet` の IP アドレスを確認する。 

### Mac からの SSH 接続を確立する

Mac の terminal で下記のような形式のコードを実行し、SSH 接続する
ただし、`<user>` は Ubuntu 上のユーザー名、`<ip>`は上記で確認した IP アドレス
例：`ssh foo@192.0.2.0`

```{sh}
ssh <user>@<ip>
```

以降は Ubuntu に SSH 接続した Mac の terminal から全て操作する

# 4. Ubuntu に Docker をインストール
- docker docs - [Install Docker Engine on Ubuntu](https://docs.docker.com/engine/install/ubuntu/)

### Uninstall old versions

```{sh}
sudo apt-get remove docker docker-engine docker.io containerd runc
```

### SET UP THE REPOSITORY

Update the apt package index and install packages to allow apt to use a repository over HTTPS:

```{sh}
sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
```

Add Docker’s official GPG key:

```{sh}
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```

Verify that you now have the key with the fingerprint 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88, by searching for the last 8 characters of the fingerprint.

```{sh}
sudo apt-key fingerprint 0EBFCD88
```

Use the following command to set up the stable repository.

```{sh}
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
```

### INSTALL DOCKER ENGINE

Update the apt package index, and install the latest version of Docker Engine and containerd, or go to the next step to install a specific version:

```{sh}
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
```

Verify that Docker Engine is installed correctly by running the hello-world image.

```{sh}
sudo docker run hello-world
```

### sudo なしで docker を扱う

- docker docs - [Manage Docker as a non-root user](https://docs.docker.com/engine/install/linux-postinstall/index.html#manage-docker-as-a-non-root-user)

```{sh}
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world
```