WindowsでDorcker環境をVirtualBoxを使って簡単に構築する


WindowsでDorcker環境をVirtualBoxを使って簡単に構築する

Dockerが公開しているDocker Desktopの場合、Hyper-Vを使用しないとDocker環境をつくれません。
自分の場合、それでは不都合があるのでVirtualBoxを使用して構築していきます。

やりたいこと

  • 使うツール(テキストエディタ、Officeなど)は、基本的にWindows上で動作させたい。
  • 開発するアプリケーションは、Linux上で動作させるので実行はLinux上で行いたい。
  • アプリケーションは、Dockerコンテナで動作させたい。

前提条件

  1. ホストOS(Windows)
  2. VirtualBoxを予めインストールする
  3. Vagrantを予めインストールしておく
  4. Vagrantプラグインをインストールしておく
    • vagrant-vbguest

環境構築

  1. Ansibleを使って、Dockerホスト環境を作成する
  2. アプリケーションのソースをDockerコンテナに共有する

ディレクトリ構成

\DockerHost  Docker環境を作成するためのルートディレ鵜鳥
  \public
    \provision  AnsibleでDocker環境を作成するための設定ファイル群
      playbook.yml等
      :
  Vagrantfile  VagrantでVirtualBoxにLinux環境を作成する為のファイル

Vagrantfileの設定の説明

Ansible環境を作成する

Vagrantをprovisionオプションを付けて実行すると自動的にAnsibleの環境を準備します。

server.vm.provision に記載されている設定で、Ansibleをインストールし、Dockerの環境までを作成します。

ホストOSのディレクトリを共有

Vagrantのsynced_folderにホストOSのディレクトリを指定することで、簡単にVirtualBox上のLinuxと共有できます。

server.vm.synced_folderにホストOSと共有するディレクトリをします。

以下の例のserver.vm.synced_folderの3行は、3つのフォルダをvagrantのホームディレクトリのdevelopディレクトリに共有しているます。もちろんいくつ指定しても良いです。

"../app1"は、ホストOSのディレクトリを相対パス、絶対パスのいづれでも指定できます(これ重要)。

Vagrantfileの例

Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
    # docker-base
    config.vm.define "docker-base" do |server|
        server.vm.box = "ubuntu/bionic64"
        config.vm.network :public_network, :ip => "192.168.3.148", :netmask=>"255.255.255.0", :bridge => "Intel(R) 82583V Gigabit Network Connection"

        server.vm.synced_folder "./public", "/vagrant_public"
        # 開発アプリケーションのフォルダを共有する
        server.vm.synced_folder "../app1", "/home/vagrant/develop/app1"
        server.vm.synced_folder "c:/Users/hoge/develop//app2", "/home/vagrant/develop/app2"
        server.vm.hostname = "vm-docker"
        server.vm.provider "virtualbox" do |vb|
            vb.gui = false
            vb.memory = "2048"
            vb.name = "DockerBase"
        end
        # Andibleのインストール
        server.vm.provision "shell", inline: <<-SHELL
            sudo apt-get update
            sudo apt-get install -y software-properties-common
            sudo apt-add-repository ppa:ansible/ansible
            sudo apt-get update
            sudo apt-get install -y ansible
            cd /vagrant_public/provision/
            sudo ansible-playbook -i hosts playbook.yml --connection=local
        SHELL
    end
end

Docker環境を作成と実行をする(通常一回だけ)

Vagrantfileファイルがあるディレクトリで以下のコマンド実行します。

--provisionオプションを付けることで、server.vm.provisionで設定したコマンドが実行され、Docker環境が作成されます。

数分かかるのでエラーが出ていないか見ながら待ちましょう。

   vagrant up --provision

Docker環境を実行する(通常)

   vagrant up

Docker環境(Ansibleのplayabookの設定)構築

--provisionオプションを付けて実行すると以下のことが行われます。

  1. DokcerをインストールするOS(Ubuntu 18.04)の準備
    • OSの日本語化、タイムゾーンの設定
    • Vimのインストール
    • Gitのインストール
  2. Dokcer環境のインストール

Docker環境のパラメータ調整

変数説明

roles/docker/vars/main.yml

docker-composeのインストールバージョン

  • /roles/docker/vars/main.yml
    • docker_compose_version=1.24.0

設定ファイルの公開
dockerEnv