docker imageを外部で保持したい
昨日の記事(↓)の最後で機械学習系のイメージバカでかすぎるので,なんか外部で保持したいって書いたやつを調査してみます.
実際,機械学習系のイメージ馬鹿でかいし画像とかを,尋常じゃない量置いていくので容量がすぐ足りなくなります.それを解決するために,とりあえずイメージの実態がどこで保持されてるのか調べてみます.
調査
cut-ter@ubuntu:~$ sudo docker version Client: Version: 17.09.0-ce API version: 1.32 Go version: go1.8.3 Git commit: afdb6d4 Built: Tue Sep 26 22:42:18 2017 OS/Arch: linux/amd64 Server: Version: 17.09.0-ce API version: 1.32 (minimum version 1.12) Go version: go1.8.3 Git commit: afdb6d4 Built: Tue Sep 26 22:40:56 2017 OS/Arch: linux/amd64 Experimental: false
今回のdocker のバージョンは↑みたいな感じです.
とりあえず同じようなこと考えてないかなーって感じで検索かけた所↓
とりあえずバージョンが古いので同じようなディレクトリがあるか調べてみるために/var/lib/docker
を確認
root@ubuntu:/var/lib/docker# ls builder containers image network overlay2 plugins swarm tmp trust volumes
はい全然違いますね.こっからは自分で調査していきます.
ぱっと見怪しそうなのがimageですね.
root@ubuntu:/var/lib/docker/image/overlay2# ls distribution/ root@ubuntu:/var/lib/docker/image/overlay2# ls imagedb/ content metadata root@ubuntu:/var/lib/docker/image/overlay2# ls layerdb/ root@ubuntu:/var/lib/docker/image/overlay2# ls imagedb/content/ sha256 root@ubuntu:/var/lib/docker/image/overlay2# ls imagedb/metadata/ sha256 root@ubuntu:/var/lib/docker/image/overlay2#
↑みたいな感じで一通り調べてみた感じそれっぽいのが見当たらず.
そこで検討つけるためにubuntuのイメージをpullしてきて,ファイル容量等を確認した所overlay2が怪しいってことで調査した所
root@ubuntu:/var/lib/docker/overlay2/222a6d0ce3984fa6f9b294e5a2faa02e374cf89e3cf20fc6bd17d3d9b675c989# ls diff link lower merged work
フォルダもそれっぽいし容量もでかいので多分これが中身
実験
overlay2ディレクトリをnfsとかでマウントするとどのくらい使用容量減らせるのか調査
普通のやつ
root@ubuntu:~# df Filesystem 1K-blocks Used Available Use% Mounted on udev 489692 0 489692 0% /dev tmpfs 101612 4540 97072 5% /run /dev/sda1 15349744 3873228 10673752 27% / tmpfs 508056 0 508056 0% /dev/shm tmpfs 5120 0 5120 0% /run/lock tmpfs 508056 0 508056 0% /sys/fs/cgroup tmpfs 101612 0 101612 0% /run/user/1000 root@ubuntu:~# docker pull fedora Using default tag: latest latest: Pulling from library/fedora a8ee583972c2: Pull complete Digest: sha256:25f7dac76b2c88d8b7e0b1d6213d3406e77c7f230bfa1e66bd1cbb81a944eaaf Status: Downloaded newer image for fedora:latest root@ubuntu:~# df Filesystem 1K-blocks Used Available Use% Mounted on udev 489692 0 489692 0% /dev tmpfs 101612 4540 97072 5% /run /dev/sda1 15349744 4154420 10392560 29% / tmpfs 508056 0 508056 0% /dev/shm tmpfs 5120 0 5120 0% /run/lock tmpfs 508056 0 508056 0% /sys/fs/cgroup tmpfs 101612 0 101612 0% /run/user/1000 root@ubuntu:~#
overlay2を外部からマウントしたディレクトリにした場合
root@ubuntu:/var/lib/docker# df Filesystem 1K-blocks Used Available Use% Mounted on udev 489696 0 489696 0% /dev tmpfs 101612 4568 97044 5% /run /dev/sda1 24638844 1568628 21795592 7% / tmpfs 508056 0 508056 0% /dev/shm tmpfs 5120 0 5120 0% /run/lock tmpfs 508056 0 508056 0% /sys/fs/cgroup tmpfs 101612 0 101612 0% /run/user/1000 kube-master:/data/cut 3845330944 56159232 3593833472 2% /var/lib/docker/overlay2 root@ubuntu:/var/lib/docker# docker pull fedora Using default tag: latest latest: Pulling from library/fedora a8ee583972c2: Pull complete Digest: sha256:25f7dac76b2c88d8b7e0b1d6213d3406e77c7f230bfa1e66bd1cbb81a944eaaf Status: Downloaded newer image for fedora:latest root@ubuntu:/var/lib/docker# df Filesystem 1K-blocks Used Available Use% Mounted on udev 489696 0 489696 0% /dev tmpfs 101612 4568 97044 5% /run /dev/sda1 24638844 1569548 21794672 7% / tmpfs 508056 0 508056 0% /dev/shm tmpfs 5120 0 5120 0% /run/lock tmpfs 508056 0 508056 0% /sys/fs/cgroup tmpfs 101612 0 101612 0% /run/user/1000 kube-master:/data/cut 3845330944 56441856 3593550848 2% /var/lib/docker/overlay2 root@ubuntu:/var/lib/docker#
通常だと281,192kb使用しているのが,マウントした場合は920kbしか使用しないのでめっちゃ削減できてる.
これはかなり削減できてるのでどんなに重いイメージでもへっちゃらなのでは..
まぁ実はnfsしてるせいでプルがクソ重かったりするのは内緒
問題点
通信速度がネックになる
あとたまにpullに失敗する.原因はよくわからん.
root@ubuntu:/var/lib/docker# docker pull nvidia/cuda Using default tag: latest latest: Pulling from nvidia/cuda 660c48dd555d: Already exists 4c7380416e78: Already exists 421e436b5f80: Already exists e4ce6c3651b3: Already exists be588e74bd34: Already exists f597507b3c37: Pull complete 9c5d4127a23d: Extracting [==================================================>] 366.4kB/366.4kB 398bf259fcdc: Download complete 4f4092762618: Download complete 94130a21e154: Download complete failed to register layer: Error processing tar file(exit status 1): operation not supported
今回は軽く調査しただけで終わってるので↑の解決方法だったり,実際に利用するとどうなのか深く調べたいと思います.