WindowsでDorcker環境をVirtualBoxを使って簡単に構築する
Dockerが公開しているDocker Desktopの場合、Hyper-Vを使用しないとDocker環境をつくれません。
自分の場合、それでは不都合があるのでVirtualBoxを使用して構築していきます。
やりたいこと
- 使うツール(テキストエディタ、Officeなど)は、基本的にWindows上で動作させたい。
- 開発するアプリケーションは、Linux上で動作させるので実行はLinux上で行いたい。
- アプリケーションは、Dockerコンテナで動作させたい。
前提条件
- ホストOS(Windows)
- VirtualBoxを予めインストールする
- Vagrantを予めインストールしておく
- Vagrantプラグインをインストールしておく
- vagrant-vbguest
環境構築
- Ansibleを使って、Dockerホスト環境を作成する
- アプリケーションのソースを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の例
# -*- 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オプションを付けて実行すると以下のことが行われます。
- DokcerをインストールするOS(Ubuntu 18.04)の準備
- OSの日本語化、タイムゾーンの設定
- Vimのインストール
- Gitのインストール
- Dokcer環境のインストール
Docker環境のパラメータ調整
変数説明
roles/docker/vars/main.yml
docker-composeのインストールバージョン
- /roles/docker/vars/main.yml
- docker_compose_version=1.24.0
設定ファイルの公開
dockerEnv