9
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VirtualBoxとVagrantでDocker環境構築

Last updated at Posted at 2020-01-06

VirtualBox、Vagrantを使ってDocker環境がさくっと作れたので共有します。
※Windows10で検証しています。

使用バージョン

  • Oracle VM VirtualBox: 6.0.10
  • Vagrant: 2.2.5

※自分の環境で使っていたバージョンです。最新版では試せていません。

VirtualBoxのインストール

以下のサイトからインストーラーをダウンロードしてインストールします。(インストール済みの場合は省略可)
対象バージョンの「Windows hosts」をクリックするとダウンロードが開始されます。
https://www.virtualbox.org/wiki/Downloads

Vagrantのインストール

以下のサイトからインストーラーをダウンロードしてインストールします。(インストール済みの場合は省略可)
「DOWNLOAD <バージョン>」をクリックするとダウンロードが開始されます。
https://www.vagrantup.com/

VagrantでDocker環境作成

以下の手順を順次実施し、Linux仮想環境を作成、ログインします。
※手順はvagrantを使ったことがない人用に細かく書いています。
※手順内容は以下のフォルダ構成を作成し、下記のVagrantfileでvagrant upするだけです。

フォルダ構成
handson (任意の場所に作成)
 └ share (作成した仮想マシンと共有されるフォルダ)
 └ Vagrantfile
  1. 任意の場所に新規にフォルダを作成。(フォルダ名は任意。例:handson)
  2. コマンドプロンプトを起動し、カレントフォルダを1で作成したフォルダに移動
  3. vagrant initを実行。
  4. 3によって作成されるVagrantfileをエディタで開き、下記のVagrantfileの内容に書き換え保存して閉じる。
  5. mkdir shareを実行し、Vagrantfileと同じ場所にshareフォルダを新規作成。
  6. vagrant upを実行し、ゲストマシンが起動するまで待つ。
  7. vagrant statusで状態確認。 (runningになっていることを確認)
  8. vagrant sshを実行し、ゲストマシンにログイン。
  9. docker versiondocker infoを実行し、Dockerコマンドがインストールされていることを確認。

※2はファイルエクスプローラーのアドレスバーをクリックしてcmdを実行で、移動した状態で起動できます。
※コマンドプロンプトではなく、git bashなどを使用しても大丈夫です。

Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.hostname = "handson"
  config.vm.network "private_network", ip: "192.168.10.10"
  config.vm.synced_folder "./share", "/home/vagrant/ws", mount_options: ['dmode=755','fmode=644']
  config.vm.provider "virtualbox" do |v|
    v.name = "handson"
    v.memory = 4096
    v.cpus = 2
  end
  config.vm.provision "docker"
  config.vm.provision "shell", inline: <<-SHELL
    # インストール済みのパッケージをアップデート
    yum update -y
    # yum のリポジトリ追加
    yum install epel-release -y
    # マニュアルページ、vim、gitを追加
    yum install man-pages.noarch man-pages-ja.noarch vim-enhanced git -y
    # docker-composeインストール
    curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
    # docker-compose補完機能インストール
    curl -L https://raw.githubusercontent.com/docker/compose/1.25.0/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
  SHELL
end

VagrantにはDocker用のProvisionerがあるので、それを利用しています。
今回はインストールのみに使用していますが、イメージのビルドやプル、起動などもできるようです。
参考:Docker Provisioner

おまけでshellでコマンドを実行してdocker-composeもインストールしています。
docker-composeのバージョンについてはReleases docker/compose (GitHub)で確認できます。
参考:Docker ComposeDocker Compose 日本語

yumでインストールしている内容はご自由にどうぞ。

補足:よく使うVagrant コマンド

環境構築にVagrantを使用しているため、よく使うコマンド一覧を補足として載せておきます。

$ vagrant init
 現在のディレクトリをVagrant環境になるように初期化。(Vagrantfileの作成)
$ vagrant up
 Vagrantfileに従ってゲストマシンを作成および構成、起動。
$ vagrant status
 ゲストマシンの状態確認。
$ vagrant ssh
 実行中のゲストマシンにSSH接続。
$ vagrant halt
 稼働中のゲストマシンをシャットダウン。
$ vagrant reload
 再起動(haltした後に、upするのと同等)。
$ vagrant destroy
 実行中のゲストマシンを停止し、作成されたすべてのリソースを破棄。
$ vagrant plugin list
 インストールされたプラグインとバージョンを表示
$ vagrant plugin update [<name>]
 インストールされているプラグインの更新。(制約がある場合は制約優先)
$ vagrant plugin install <name> [<name2> <name3> ...]
 プラグインのインストール。(インストール済みの場合は更新)
$vagrant plugin uninstall <name> [<name2> <name3> ...]
 プラグインのアンインストール。依存関係もアンインストールする。

参考:Command-Line Interface

#おわり
VirtualBox、Vagrantでさくっと環境構築できました。
Windowsの場合、頑張ってWindows(Hyper-V)でやろうとするより、
Linux環境を作った方が比較的簡単なのでおすすめです。

ただし、今回の方法では、一般ユーザがdockerグループに入ってしまいます。
(Dockerでユーザーをdockerグループに追加することの危険性を理解しよう)
勉強用または開発用の環境と割り切って使用するのが良いかと思います。

ちなみに、bento/amazonlinux-2で試してみたら
以下のようなエラーメッセージが表示されインストールに失敗しました。
Docker用のProvisionerをサポートしていないboxもあるようです。

ERROR: Unsupported distribution 'amzn'

今回は以上です。

9
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?