xhyve-coreosを使うと簡単にcoreosが起動できますが,ちょっと使うとすぐにdiskfullになる&再起動すると全部消えてしまう,のでお試し程度にしか使えません.
なので,ディスクイメージを作成してそれをマウントすることで,容量を増やす&再起動しても消えない状態にしてみます.
準備
ディスクイメージを作成する
# ディスクイメージの作成
# サイズは適当に.ここでは16GB
dd if=/dev/zero of=extra.img bs=1g count=16
# 必要なものをインストール
brew install e2fsprogs
brew link --force e2fsprogs
# ext4のディスクイメージ作成
/usr/local/sbin/mkfs.ext4 extra.img
coreos-xhyveを起動パラメータを作成
起動するときに使うshellの中でsource
されてるだけ.
custom.conf
# XHYVE=xhyve
CHANNEL=beta
# VERSION=latest
MEMORY=2048
CPUS=2
# 設定しておくと,IPが固定になる
UUID=2EA0AF50-C413-4692-A971-18D78BA1D174
# 設定しておくと,authorized_keysに書きこんでくれる
SSHKEY="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKxvJAey2uu2EaV39RgriDWJVFH0TMVtL22nZqkyk5bd uraura"
# 設定しておくと,cloudinitが走るときに読みこまれる
CLOUD_CONFIG=https://gist.githubusercontent.com/mystelynx/dff73645183273e3f30d/raw/coreos-cloudinit.yml
# 設定しておくと,/dev/vdaとして読み込まれる
IMG_HDD="-s 4,virtio-blk,$(pwd)/extra.img"
cloudinit
https://gist.github.com/mystelynx/dff73645183273e3f30d
- 起動時には
/var/lib/docker
ディレクトリが存在しないので作成 -
/dev/vda
を/var/lib/docker
にマウントする
実行
sudo ./coreos-xhyve-run -f custom.conf
確認
core@localhost ~ $ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=912768k,nr_inodes=228192,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime,seclabel)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
tmpfs on / type tmpfs (rw,relatime,seclabel)
/usr.squashfs (deleted) on /usr type squashfs (ro,relatime)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
tmpfs on /tmp type tmpfs (rw,seclabel)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
tmpfs on /media type tmpfs (rw,nosuid,nodev,noexec,relatime,seclabel)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,relatime,seclabel)
/dev/vda on /var/lib/docker type ext4 (rw,relatime,seclabel,data=ordered) # !!!マウントされてる!!!
core@localhost ~ $ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 892M 0 892M 0% /dev
tmpfs 1003M 0 1003M 0% /dev/shm
tmpfs 1003M 17M 987M 2% /run
tmpfs 1003M 0 1003M 0% /sys/fs/cgroup
tmpfs 1003M 6.8M 997M 1% /
/dev/loop0 195M 195M 0 100% /usr
tmpfs 1003M 0 1003M 0% /tmp
tmpfs 1003M 0 1003M 0% /media
/dev/vda 16G 44M 15G 1% /var/lib/docker # !!!容量を確認!!!
core@localhost ~ $ docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
d0ca40da9e35: Downloading 1.052 MB/51.35 MB
d0ca40da9e35: Pull complete
d1f66aef36c9: Pull complete
7d612e4006d3: Pull complete
b2d99375e3b7: Pull complete
392caeba413e: Pull complete
7bae2f5f3bfb: Pull complete
7ff2dbbe5c0d: Pull complete
b8445caa7808: Pull complete
0a8ac22d8fbc: Pull complete
e03b6279eedf: Pull complete
f50f1cc3eb5a: Pull complete
459f24dd1811: Pull complete
9cba95895768: Pull complete
9be83d1073fd: Pull complete
a4814a4a5204: Pull complete
fb86ef4dd8b7: Pull complete
Digest: sha256:43c3231883d1a3a69da1faf594a4c9b7455a9659e946fd677858e71c10d011bd
Status: Downloaded newer image for mysql:latest
core@localhost ~ $ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 892M 0 892M 0% /dev
tmpfs 1003M 0 1003M 0% /dev/shm
tmpfs 1003M 17M 987M 2% /run
tmpfs 1003M 0 1003M 0% /sys/fs/cgroup
tmpfs 1003M 6.8M 997M 1% /
/dev/loop0 195M 195M 0 100% /usr
tmpfs 1003M 0 1003M 0% /media
tmpfs 1003M 0 1003M 0% /tmp
/dev/vda 16G 471M 15G 4% /var/lib/docker !!!マウントしたところが使われてる!!!
参考
https://coreos.com/os/docs/latest/mounting-storage.html#creating-and-mounting-a-btrfs-volume-file
https://github.com/coreos/coreos-xhyve/issues/14