LoginSignup
2
3

More than 5 years have passed since last update.

Mac+Vagrant+CoreOS+Docker+Packer

Last updated at Posted at 2015-02-26

目的

Mac上でDockerを扱う為のメモ(途中)

Bug

Packer 0.7.5
Docker 1.5.0

環境でこのISSUEのバグが発生していて、Packerのinlineでshellを実行するとDocker imageの作成時に失敗します。

修正はmergeされてるので次のバージョンで改善されそう

次のリリースまで利用したい場合は自己責任でISSUEに記載されてる修正版のバイナリを利用するか、自分でコンパイルしたら良さそう。

PackerとDockerの組み合わせはMac上では試行錯誤したが期待通りには動作してないです。
試行内容についてはまとめています。

参考資料

準備

インストールするもの

CoreOS

CoreOS公式
Vagrantで実行する手順

CoreOSの取得

git clone https://github.com/coreos/coreos-vagrant.git
cd coreos-vagrant

設定

$ cp user-data.sample user-data
$ cp config.rb.sample config.rb

config.rbはvagrantの起動設定、user-dataはcoreos上で動作するdockerの設定

config.rb
# Size of the CoreOS cluster created by Vagrant
$num_instances=1

localで動かすだけなのでインスタンスを1に限定、user-dataは特に変更なし

CoreOSの起動

vagrant up

CoreOSへのログイン

vagrant ssh

構成

ここまでの作業で以下のような構成になる

Mac-vagrant-CoreOS-Docker

dockerをMacのローカルからコマンドを実行できるように設定する

CoreOSのDockerとMacに入れるDockerのバージョンは揃える必要があるらしい。
brew install docker

macにて

$ docker info
FATA[0000] Get http:///var/run/docker.sock/v1.17/info: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?

vagrantのCoreOSで動作しているdockerに接続する設定を追加する必要がある

$ export DOCKER_HOST=tcp://CORE_OS_HOST:port

ip_addressはVagrantfileを開くと以下の様な形で定義されている。

114       ip = "172.17.8.#{i+100}"
115       config.vm.network :private_network, ip: ip

起動しているインスタンスは1つだけだと思うので 172.17.8.101

IPアドレスはVagrantfileに以下の用に記載されており2375

 96       if $expose_docker_tcp
 97         config.vm.network "forwarded_port", guest: 2375, host: ($expose_docker_tcp + i - 1), auto_correct: true
 98       end

改めてdocker infoを実行すると接続できていることが確認できる

$ export DOCKER_HOST=tcp://172.17.8.1:2375
$ docker info
Containers: 0
Images: 0
Storage Driver: overlay
 Backing Filesystem: extfs
Execution Driver: native-0.2
Kernel Version: 3.18.6
Operating System: CoreOS 598.0.0
CPUs: 1
Total Memory: 998 MiB
Name: core-01
ID: RWOF:XYHF:XFI3:AW6F:RHLU:CV4F:SRXU:XDHR:MABW:P2PM:4B5D:QRY2

Packerを利用してDockerのコンテナイメージを作成する

Packerのインストール

INSTALL PACKER

$ brew tap homebrew/binary
$ brew install packer

設定ファイル

Docker Builder - Packer by HashiCorp

以下の内容でubuntu.jsonを作成

{
  "builders": [
    {
      "type": "docker",
      "image": "ubuntu:14.04",
      "export_path": "ubuntu.tar"
    }
  ]
}

docker imageの作成

$ packer build ubuntu.json

ubuntu.tar が作成される。

docker imageに登録したいので設定ファイルにpost-processorsを追加する

{
  "builders": [
    {
      "type": "docker",
      "image": "ubuntu:14.04",
      "export_path": "ubuntu.tar"
    }
  ],
  "post-processors": [
    [
      {
        "type": "docker-import",
        "repository": "shiwork/ubuntu",
        "tag": "0.1"
      }
    ]
  ]
}

packer build ubuntu.json 実行後にdocker imagesを実行すると作成したdocker imageが追加されていることが確認できる

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
shiwork/ubuntu      0.1                 7acf3b11890e        11 seconds ago      188.1 MB
ubuntu              latest              2d24f826cb16        5 days ago          188.3 MB
ubuntu              trusty              2d24f826cb16        5 days ago          188.3 MB
ubuntu              trusty-20150218.1   2d24f826cb16        5 days ago          188.3 MB
ubuntu              14.04               2d24f826cb16        5 days ago          188.3 MB
ubuntu              14.04.2             2d24f826cb16        5 days ago          188.3 MB

実行

$ docker run shiwork/ubuntu:0.1 echo "Hello"
Hello
2
3
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
2
3