Docker for MacをやめてVM(Ubuntu 16.04)の中でDockerを動かして開発する

はじめに

どうも@konchanSSです。今回はDocker for Macをやめて、VMを立ててその中でDockerを動かして開発を進めた話をしたいと思います。

なぜDocker for Macやめたのか

  • Docker for Macのvolumeのマウントが重い  
  • マウント遅い問題を解決するためにDocker syncを導入したが、同期が不安定

Dockerにdocker-syncを導入して遅い問題を解決する - こんちゃんブログ

準備

今回VMの環境を構築するのにVirtualBoxVagrantを使用するのでインストールしていきます。

Downloads – Oracle VM VirtualBox

Download - Vagrant by HashiCorp  
 

VM(Ubuntu 16.04)設定のセットアップ

まずはVM用のディレクトリを用意しましょう。
先ほどいれた vagrant コマンドを使ってインスタンスの初期化と生成をします。

$ vagrant init bento/ubuntu-16.04
$ vagrant up

上の vagrant init をしたディレクトリに Vagrantfile が生成されます。
ゲストOSの設定はここに書いて再起動することで反映されるようになります。

インスタンス立ち上げ際のはまりポイント
ホストとゲスト間のGuestAdditionsのバージョンが違うとVMの起動やSSHできないことがあるので vagrant vbguest 入れておくと便利です。
詳しくはこちらの記事がわかりやすいので詰まった方は読んでみてください。
 
qiita.com
また、もともとVagrantもしくはVirtualBox使ってたよって人はバージョンが違うと怒られが発生したりするので最新のやつを入れときましょう。  

GUIとデスクトップ環境の設定

Ubuntu GUIも必要なのでその設定を追加していきますが、 生成されたVagrantfileにはあらかじめGUIなどの設定がコメントアウトされた状態であるのでそのコメントアウトを外しましょう。

 config.vm.provider "virtualbox" do |vb|
   # Display the VirtualBox GUI when booting the machine
   vb.gui = true

   # Customize the amount of memory on the VM:
   vb.memory = "1024"
 end

 
あとは vagrant ssh コマンドを使ってVMの中に入り、Ubuntuのデスクトップ環境をインストールしましょう。

$ vagrant ssh
$ sudo apt-get install ubuntu-desktop

 

Ubuntu大地に立つ

以上の設定が一通り終わったら再起動して動かしてみましょう。

$ vagrant reload
$ vagrant up

 

UbuntuにDockerを入れる

Ubuntuを起動することがあとはDockerを入れるだけですね。
 
必要なパッケージのインストールします。

$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates

 
GPG鍵の取得します。(これないとapt-get updateできなくなる)

$ sudo apt-key adv \
               --keyserver hkp://ha.pool.sks-keyservers.net:80 \
               --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

 
依存パッケージのインストールします。

$ sudo apt-get update
$ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

 
sourceの更新します。

$ echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list

 
これでdockerのインストール準備が整ったのでインストールしていきます。

$ sudo apt-get update
$ sudo apt-get install docker-engine

 
apt-get update 忘れるとうまくいかなかったりするのでコマンド叩いてみてください。

これでインストールが終わると docker コマンドが使えるようになっています。

vagrant@vagrant:~$ docker

Usage:  docker COMMAND

A self-sufficient runtime for containers
...

毎回docker叩く時にsudo打つのめんどくさい

グループに追加しておきましょう。

$ sudo usermod -aG docker $USER

最後に

これであとは好きなエディター入れたりして開発進めていけそうです!
本当はDocker for Macが快適に使えるようになると良いんですけどね〜