Docker の動作環境をコマンド一発で立ち上げる

Docker を少し動かして覚えてみたい方向けに、
Vagrant コマンド一発で Docker や Docker Compose が動作する環境を立ち上げる Vagrantfile を用意してみました

* VirtualBox をインストールしていない方
https://www.virtualbox.org/wiki/Downloads
上記URLからダウンロードしてきてインストールしてください
※VirtualBox とは仮想環境を構築するためのツールです
※試したのは バージョン 6.0.8

* Vagrant をインストールしていない方
https://www.vagrantup.com/downloads.html
上記URLからダウンロードしてきてインストールしてください
※Vagrant とは仮想環境の構築をサポートするツールです
※試したのは バージョン 2.2.4

## 準備
適当な場所へ ディレクトリ (名前は docker とする) を作成し、
その配下へマウント用の ディレクトリ (名前は data とする) を作成し、
同じ階層へ以下の内容で Vagrantfile を作成します

```:構成はこんな感じ
docker/
 ├ data/
 └ Vagrantfile
```

```conf:Vagrantfileの中身（文字コードはUTF-8、改行コードはLFとする）
Vagrant.configure("2") do |config|

  # Vagrant Box で 「bento/ubuntu-18.04」を指定
  config.vm.box = "bento/ubuntu-18.04"

  # IPアドレスの設定
  config.vm.network "private_network", ip: "192.168.33.10"

  # ホストのポート1234へのアクセスをVMのポート22に転送
  # ※127.0.0.1:1234 が 192.168.33.10:22 へ転送される
  # ※vagrant up 時に利用される
  # ※設定しない場合、guest:22, host: 2222 がデフォルトで割り当たる
  # ※適宜ホストで空いているポートに変更してください
  config.vm.network "forwarded_port", guest: 22, host: 1234, id: 'ssh'

  # SSH 秘密鍵を利用しない（所詮ローカルの確認環境のため）
  config.ssh.insert_key = false
  config.ssh.username = 'vagrant'
  config.ssh.password = 'vagrant'

  # ./data ディレクトリを /vagrant_data としてマウント
  config.vm.synced_folder "./data", "/vagrant_data"

  # シェルスクリプトの実行
  # ※privileged は sudo で実行するかのフラグ（デフォルトは true）
  config.vm.provision :shell, privileged: false, inline: $script
end

$script = <<SCRIPT

######################################################################
# Docker リポジトリの登録

# パッケージの更新
sudo apt-get update

# HTTPS利用のためのパッケージをインストール
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

# Docker公式の GPG を追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# リポジトリの設定
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

######################################################################
# Docker CE のインストール
# （https://docs.docker.com/install/linux/docker-ce/ubuntu/）

# パッケージの更新
sudo apt-get update

# Docker CE のインストール
sudo apt-get install -y docker-ce

######################################################################
# Docker Compose のインストール
# （https://docs.docker.com/compose/install）

# Docker compose のダウンロード
# ※適宜 https://github.com/docker/compose/releases の最新バージョンへ書き換えてください
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 実行権限の付与
sudo chmod +x /usr/local/bin/docker-compose

######################################################################
# vagrant ユーザーを docker グループへ追加

sudo usermod -aG docker vagrant

SCRIPT
```

## コマンドの実行

コマンドプロンプト や PowerShell などを起動し、
Vagrantfile を置いている場所へ移動して、以下のコマンドを実行します

```sh
$ vagrant up
```

## SSH 接続してみる

無事、vagrant up による仮想環境の構築・起動が終わったら、
以下のコマンドで SSH 接続してみます

```sh
$ vagrant ssh
```

> もしくは別でターミナルを立ち上げて 127.0.0.1 の ポート 1234 または 192.168.33.10 の ポート 22 へ  SSH 接続する

接続出来たら、ユーザー名 `vagrant` 、パスワード `vagrant` を入力してログインします

## Docker、Docker Compser コマンドの確認

```sh
# Docker のバージョン確認
$ docker version

# Docker Composer のバージョン確認
$ docker-composer --version
```

無事、バージョンの確認が出来たら、環境の構築は完了です。

## 続いて

続いて、 「[動かしながら Docker を理解しよう](https://qiita.com/lmatsul/items/d6e9e7dea9fef2074156)」 にて Docker の理解へ進みましょう