概要
- Windowsで、Vagrant+Virtualboxを使ってるとき、dockerが使える環境を作成。
- docker と docker-compose が入る。
-
ベースは、ubuntu/xenial64 (16.04)
- user:
vagrant
/ password:vagrant
で、ログインできるようになった :-)
- user:
Docker for Windowsは、Hyper-Vを使う (Windows 10 Pro/Ent 64bit)
Hyper-V と Virutalboxの共存はできない
環境
- ホスト: Windows 10 64bit
- VirtualBox:
5.2.6r120293
- Vagrant:
2.0.2
手順
-
Chocolateyにて、Virtualbox Vagrantをインストール
cmd.exeを管理者で開いて、↓を実行@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin" rem インストール cinst -y virtualbox vagrant rem (お好みで) cinst -y chocolateygui git VisualStudioCode bonjour
-
Vagrantfile
作成 (適当なフォルダにて. 例: C:\Vagrant\ubuntu16.04-docker)Vagrantfile# -*- mode: ruby -*- # vi: set ft=ruby : VM_BOX="ubuntu/xenial64" VM_NAME="u16.04-docker" VM_MEMORY=2048 VM_CORES=2 Vagrant.configure("2") do |config| config.vm.box = VM_BOX #config.vm.box_check_update = false #plugin: vagrant-vbguest #config.vbguest.auto_update = false # forwarded port (public) #config.vm.network "forwarded_port", guest: 80 , host: 80 # http #config.vm.network "forwarded_port", guest: 443 , host: 443 # https #config.vm.network "forwarded_port", guest: 3306, host: 3306 # MySQL # forwarded port (only for 'host_ip') # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" # Host-only network # config.vm.network "private_network", ip: "192.168.33.10" # Bridged network config.vm.network "public_network" config.vm.provider "virtualbox" do |vb| # Display the VirtualBox GUI when booting the machine vb.gui = false vb.name = VM_NAME vb.cpus = VM_CORES vb.memory = VM_MEMORY end config.vm.provision "shell", inline: <<-SHELL echo `cat /proc/uptime | cut -f 1 -d ' '` apt update # # apt cache server # echo 'Acquire::http::Proxy "http://apt-cache-server:3142";' | sudo tee /etc/apt/apt.conf.d/02proxy apt-get -q update -q DEBIAN_FRONTEND=noninteractive apt-get -q -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade apt-get install -y curl jq bash-completion # # Install: docker-ce echo `cat /proc/uptime | cut -f 1 -d ' '` Installing: docker curl -sSL https://get.docker.com/ | sh # Install: docker-compose echo `cat /proc/uptime | cut -f 1 -d ' '` Installing: docker-compose DOCKER_COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r ".tag_name") curl -sL https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose curl -L https://raw.githubusercontent.com/docker/compose/${DOCKER_COMPOSE_VERSION}/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose docker-compose --version SHELL config.vm.provision "shell", privileged: false, inline: <<-SHELL sudo usermod -aG docker ${USER} SHELL end
-
VMの起動・再起動・ログイン
Vagrantfileのあるところで、SHIFT+右クリック、PowerShellをひらいて# 起動 vagrant up # 再起動 vagrant reload # VMにログイン vagrant ssh
- git bashを使うときは、
export VAGRANT_PREFER_SYSTEM_BIN=1
をする。
- git bashを使うときは、
-
VMにて、dockerのhello-worldを実行
dockerのhello-worlddocker run -it --rm hello-world
実行例-こんなのがでてくればOKvagrant@ubuntu-xenial:~$ docker run -it --rm hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world ca4f61b1923c: Pull complete Digest: sha256:66ef312bbac49c39a89aa9bcc3cb4f3c9e7de3788c944158df3ee0176d32b751 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://cloud.docker.com/ For more examples and ideas, visit: https://docs.docker.com/engine/userguide/ vagrant@ubuntu-xenial:~$
その他
- こちら↓の記事は、同様のことをMacで行っている模様
https://qiita.com/hashibiroko/items/54f3671a90835815b487