Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

docker

WSL2にDockerをインストール

Ubuntu同梱のDocker.io をインストールすると、service コマンドで起動できないので、Dockerコミュニティ版を使用します。root ユーザで以下コマンド叩きます。

# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
# apt install -y docker-ce
# service docker start

動作確認

# docker info

Dockerネットワークで割り当てるIP範囲を絞る

docker network createで新しいコンテナ用のブリッジネットワークを作成する場合、コンテナに割り当てるIPの範囲を絞ることができます。

例えば、以下のように --subnet で 172.16.0.0/16 を指定し、--ip-range で 172.16.0.0/24 を指定すると、コンテナには172.16.0.1~255の範囲で割り当てられます。

# docker network create --subnet 172.16.0.0/16 --ip-range 172.16.0.0/24 --attachable -o "com.docker.network.driver.mtu=1450" my-nw

Docker with CentOS 8

CentOS 8(RHEL 8)にはDockerが同梱されなくなり、長い間DockerコミュニティからもCentOS 8向けのDockerがリリースされていなかったので、CentOS 8上でDockerを使うのが難しかったのですが、2020/9 頃にリリースされていましたので、インストールしてみました。

公式ドキュメントにも書かれていますが、インストール方法は簡単です。(CentOS 7と同じです)

# yum install -y yum-utils
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum install docker-ce docker-ce-cli containerd.io

以上です。

インストールしただけではDockerは起動しないので、systemctl で起動しましょう。

# systemctl start docker

Dockerコンテナイメージファイル(tar)からファイル抽出

コンテナのイメージファイル(tar)から、Dockerを使わずにファイルを抽出する方法の紹介です。

まずは、以下のpythonスクリプトを書きます。
※ 1行目の #!/usr/bin/python3 は自身のpython3のパスに適宜読み替えてください。

docker-image-extract.py

#!/usr/bin/python3

import tarfile
import json
import os
import sys

image_path = sys.argv[1]
extracted_path = sys.argv[2]

image = tarfile.open(image_path)
manifest = json.loads(image.extractfile('manifest.json').read())

for layer in manifest[0]['Layers']:
    print('Found layer: %s' % layer)
    layer_tar = tarfile.open(fileobj=image.extractfile(layer))

    for tarinfo in layer_tar:
        print('  ... %s' % tarinfo.name)
        if tarinfo.isdev():
            print('  --> skip device files')
            continue

        dest = os.path.join(extracted_path, tarinfo.name)
        if not tarinfo.isdir() and os.path.exists(dest):
            print('  --> remove old version of file')
            os.unlink(dest)

        layer_tar.extract(tarinfo, path=extracted_path)

busyboxのコンテナイメージファイル busybox.tar の中身を busybox-image-files ディレクトリ名配下に抽出します。以下のようにコンテナ内の全ファイルが抽出されます。

# ./docker-image-extract.py busybox.tar busybox-image-files
Found layer: df8698476c65c2ee7ca0e9dbc2b1c8b1c91bce555819a9aaab724ac64241ba67.tar.gz
… bin
… bin/[
… bin/[[
… bin/acpid
… bin/add-shell
… bin/addgroup
… bin/adduser
… bin/adjtimex
… bin/ar
… bin/arch
~省略~
… var
… var/spool
… var/spool/mail
… var/www

このような感じでファイルが抽出されました。

# ls -l busybox-image-files/
total 40
drwxr-xr-x 2 root root 12288 Sep 25 22:31 bin
drwxr-xr-x 2 root root 4096 Sep 9 03:09 dev
drwxr-xr-x 3 root root 4096 Sep 25 22:31 etc
drwxr-xr-x 2 nobody nobody 4096 Sep 9 03:09 home
drwx------ 2 root root 4096 Sep 9 03:09 root
drwxrwxrwt 2 root root 4096 Sep 9 03:09 tmp
drwxr-xr-x 3 root root 4096 Sep 25 22:31 usr
drwxr-xr-x 4 root root 4096 Sep 25 22:31 var

参考 : https://www.madebymikal.com/quick-hack-extracting-the-contents-of-a-docker-image-to-disk/

craneコマンドでDockerイメージをダウンロード・アップロード

以前、Dockerのコンテナイメージダウンロードに graboid というツールを紹介したのですが、 今回はアップロード (docker push相当) もできるgoogleが開発しているツール crane を紹介します。

インストール

craneはGO製のコマンドラインツールで、go-containerregistry というプロジェクトの一部です。craneコマンド以外にもgcraneやk8schainといったコマンドが提供されています。今回は、tar.gz ファイルダウンロード後、craneファイルだけを取り出して、/user/local/bin に配置します。
※ Windows版は提供されていないので、今回はLinux環境が前提です。

# curl -L https://github.com/google/go-containerregistry/releases/download/v0.1.3/go-containerregistry_Linux_x86_64.tar.gz -o /tmp/go-containerregistry.tar.gz
# tar zxvf /tmp/go-containerregistry.tar.gz -O crane > /usr/local/bin/crane
# chmod 755 /usr/local/bin/crane
# rm -f /tmp/go-containerregistry.tar.gz

コンテナイメージのダウンロード (pull)

ダウンロード(pull)は、コンテナイメージのURLと保存先ファイル名(tar)を指定するだけです。DockerHub上のbusyboxコンテナをダウンロードしてみます。DockerHubにログインしてないため、No matching credentials were found というワーニングがでますが、無視して構いません。

# crane pull busybox busybox.tar
2020/09/25 08:01:42 No matching credentials were found, falling back on anonymous
# ls
busybox.tar

コンテナイメージのアップロード (push)

アップロード(push)も、認証が特にかかっていないレジストリの場合は、以下のようにtarファイル名とアップロード先URL(ここではmyregistry:5000というサーバを想定)を指定します。pullと引数が逆なので注意してください。

# crane push busybox.tar myregistry:5000/busybox:latest

認証は cran auth login サーバURL -u ユーザ名 -p パスワード コマンドできます。なお、パスワードをコマンドラインで対話的に入力する機能はないようです。パスワードを直接指定してDockerHubにログインしてみます。

# crane auth login docker.io -u myusername -p mypassword

コマンドラインに直接パスワードを入力したくない場合、-pオプションの代わりに--password-stdinオプションを使って、標準入力からパスワードを受け取ることができます。pass.txt というテキストファイルにパスワードを書いて、以下のようにログインできます。

# cat pass.txt | crane auth login docker.io -u myusername --password-stdin

なお、ログインした場合 ~/.docker/config.json に認証情報が保存されます。つまり、Dockerがインストールされている環境で、docker login を実行している場合、新たに crane コマンドでログインする必要はありません。

ログイン後のpushは最初に紹介した方法と同じです。DockerHub だとpush先のパスにユーザ名が必要なので、以下のようなコマンドでpushできます。

# crane push busybox.tar myusername/busybox:latest

Dockerで日本語入力対応Linuxデスクトップ環境

Dockerを使うと様々なアプリを簡単にhttps://github.com/Rosyuku/ubuntu-rdp起動できますが、基本的にCUIでの操作やWeb経由でのアクセスがメインだと思います。しかし、Linuxデスクトップ環境をコンテナ使って構築できると便利だなと思い探してみました。

調査に使ったコンテナ実行環境は、Docker 19.03 on CentOS 7で、アクセスに使った環境は Chrome on Windows 10です。

docker-ubuntu-vnc-desktop ⇒ 日本語未対応

まずはじめに試したのが、docker-ubuntu-vnc-desktop というコンテナ。名前にはVNCと入ってますが、VNCで接続するものではなくブラウザから接続します。

Quick Startに書かれている通り、以下のコマンドで起動しました。-pでマッピングするポートは適宜読み替えてください。本記事では基本的に8080ポートを使います。

# docker run -p 8080:80 -v /dev/shm:/dev/shm dorowu/ubuntu-desktop-lxde-vnc

ブラウザから、http://ホストのIP:8080ポートにアクセスすると以下のようにデスクトップが表示されました。

デフォルトで、ターミナルやブラウザ(Firefox, Chrome)が入っていましたが、Chromeは私の環境ではなぜか起動しませんでした。

これを最初に起動して思ったのが、日本語入力環境がないのが不便で、コンテナ起動する度に日本語設定するのは面倒だなということです。ということで、以降では日本語に対応した Linuxデスクトップ環境を探してまとめてみました。

docker-xrdp ⇒ 画面真っ黒で表示されず

次に試したのが、docker-xrdp というコンテナです。Qiita で「Dockerで日本語入力可能なubuntu 20.04イメージを作りました (xrdp)」という記事で紹介されている通り、デフォルトで日本語入力可能を謳っています。xrdp と書かれているとおり、接続にはリモートデスクトップを使います。

Qiitaの記事によると、--shm-size オプション使わないとFirefoxがクラッシュするらしいので、これを付与して起動します。パスワードは指定しないと自動生成されるらしいですが、ここでは「hogehoge」を指定しました。

# docker run -p 8080:3389 --shm-size=1g -e PASSWD=hogehoge tukiyo3/xrdp:core

リモートデスクトップからサーバの8080ポートに接続すると、以下のxrdpのログイン画面が現れました。

デフォルトのユーザ名は、「focal」で、パスワードには起動時に指定したhogehogeを入力するとログインは成功しマウスカーソルが表示されます。画面上で右クリックすると以下のようなメニューが出てくるのですが、画面全体がなぜか真っ黒でタスクバーなどが表示されず、まともなデスクトップが表示されませんでした・・・

ubuntu-desktop-jp ⇒ 日本語入力できず

次が、「日本人向けのUbuntuデスクトップ環境」を謳っている ubuntu-desktop-jp です。こちらは最初に紹介したdocker-ubuntu-vnc-desktopのように、ブラウザ経由で使うコンテナのようです。

GitHubに書かれているコマンドで起動してみます。

# docker run --rm -p 8080:8080 uphy/ubuntu-desktop-jp:18.04

ブラウザから、8080ポートにアクセスすると以下の画面が表示されました。

デフォルトの日本語入力ONのキーは、「Super + Space」になっていますが、Windows環境で Windowsキー + Space を押すと、Windowsの日本語入力選択画面が表示されてしまい、Linuxデスクトップ側の日本語入力をONにすることができませんでした。よって、IBus Preferences の設定を開き、<Super>space を <Shift>space に変更してみました。

この状態で、ターミナルを開き Shift + Spaceを押すと、日本語入力切替画面が出てくるようになりましたが、なぜか日本語入力できません・・・

右上のアイコンから「ひらがな」を選んでもやっぱり無理。ちなみにブラウザも開きませんでした。

openbox-mozc-docker ⇒ 日本語入力できず

次に試したのが、openbox-mozc-docker です。日本語入力ができるシンプルなデスクトップ環境のようで、接続はVNCです。

ビルド済みのコンテナがないので、Dockerfileからビルドする必要があります。(数分要します)

# git clone https://github.com/hiroshi-nishiura/openbox-mozc-docker.git
# cd openbox-mozc-docker/
# docker build -t openbox-mozc-docker .

ビルドが完了したら、起動します。

# docker run --rm -it -p 8080:5900 openbox-mozc-docker xvnc

VNC Viewerを使って8080ポートに接続すると、背景が真っ黒な超シンプルな画面が表示されました。(画面下にタスクバーは表示されています)

デフォルトの日本語入力はCtrl + Spaceになっていますので、ブラウザを起動してCtrl + Spaceを押してみましたが、反応がありません。どうやら、Input Methodが設定されていないようです・・・。GitHubに書いてるようにEmacs以外については、日本語入力できるように設定されていないのかもしれません。

yama07/docker-ubuntu-lxde ⇒ 日本語入力可。シンプル。起動時エラーあり

次は、docker-ubuntu-lxde です。Ubuntu + LXDEをベースの日本語入力対応を謳ってます。接続にはリモートデスクトップを使います

まずは、GitHubのREADMEに何も書かれてないので、DockerHub のドキュメントを見ながら起動してみます。「rootユーザとして起動した場合は、日本語入力(mozc)が利用できません。」とあるので、-u には別ユーザIDとグループIDを指定しています。--privileged も付けておいた方がよいとのことなので、つけてます。

# docker run --privileged --rm -it -p 8080:3389  -u 1000:1000  -e USER=test -e PASSWD=hogehoge yama07/docker-ubuntu-lxde:ubuntu18.04_ja

リモートデスクトップで、8080ポートに接続すると、先程と同じくxrdpの見慣れたログイン画面が出てきます。

起動時に指定した、ユーザ test, パスワード hogehoge でログインすると、DockerHubのドキュメントみたいな背景ではなく、真っ黒なシンプルなLXDEの画面が出てきました。

しかし、ログイン時に以下のエラー画面が出て、コンテナのログにも以下のエラーが出力されました。

xrdp-sesman[42]: pam_systemd(xrdp-sesman:session): Failed to create session: Input/output error

デフォルトの日本語入力切替が Super + Space になっているのですが、ONにならなかったので、ubuntu-desktop-jp の時と同じように、IBus Preferencesの設定画面を開いて、Shift + Space に変更しました。

この状態で、ターミナルを起動して、Shift + Space を押すと、日本語切替の画面が以下のように出てきましたが、「あ」を選択しても日本語入力できません。

しかし、画面右下のアイコンから、入力モードを手動で「ひらがな」に変更すると、無事日本語入力ができました。

ちなみに、ブラウザ(Firefox)も起動できました。

rosyuku/ubuntu-rdp ⇒ 日本語入力可。シンプル

ubuntu-rdp は、リモートデスクトップとSSH接続ができる、日本語入力対応のコンテナと謳われています。

起動してみます。

# docker run --rm -it -p 8080:3389 -p 10022:22 --shm-size=256m rosyuku/ubuntu-rdp:0.1.2

また、xrdp のログイン画面が出てくるので、デフォルトのIDとパスワード my-ubuntu / my-Password でログインします。

画面は、ubuntu-desktop-jp と同じですが、デスクトップのアイコンは日本語化されていませんでした。

上と同じく、IBus Preferencesの設定画面を開いて、Shift + Space に変更します。

ターミナルを開いて、Shift + Space 入力をONにします。

yama07/docker-ubuntu-lxde 同様に、ONにしただけでは日本語が入力できなかったので、画面右上から「ひらがな」を選択すると、無事入力できました。

ちなみにブラウザ(Firefox)も起動でき、日本語入力できました。

docker-centos-xfce-ja ⇒ 日本語入力可。CentOSベース。

最後が、docker-centos-xfce-ja です。今まで紹介してきたコンテナは全てUbuntuベースでしたが、こちらはCentOSベースで、ブラウザ経由でもリモートデスクトップでもアクセスできるようです。さらに、SSHやブラウザ経由でターミナルにアクセスできたり、ファイル管理(アップロード・ダウンロードも可)もできたり、ブラウザ版VSCodeも使えたり、デフォルトでHTTPSで暗号化できたりと、かなり機能盛りだくさんです。

起動してみます。ポート8080がWebアクセス(https)用、22がssh用、3389がリモートデスクトップ用になっているようなので、それぞれを-pでマッピングしています。

# docker run -d -p 8080:8080 -p 10022:22 -p 8081:3389 -e PASSWORD=hogehoge --name centos-xfce-ja --shm-size=2g tmatsuo/centos-xfce-ja:1.2

※ 機能豊富な分イメージがでかいです。

まずは、ブラウザでアクセスしてみます。機能盛りだくさんのため、機能毎にアクセスするパスが決まっているようで、Linuxデスクトップにアクセスしたい場合、
    https://サーバIP:8080/desktop/
にアクセスします。オレオレ証明書のため証明書エラーが出ますが、エラーを無視して接続すると、ベーシック認証画面がでてきます。

ドキュメントによると、Nginxがフロント(リバースProxy)にいて、PAMを使って認証しているようです。上記ベーシック認証画面で、IDにroot, パスワードは起動時に指定したパスワード hogehoge を入力すると、以下の画面が表示されました。

日本語入力ONは、Shift + Spaceに設定されていると書かれているので、ターミナルを起動して、Shift + Spaceを押すとONにできました。

日本語入力もデフォルトの設定で問題なくできます。今までのコンテナ中で一番手軽です。

リモートデスクトップでも繋いでみます。起動時に指定した8081ポートに繋いでみると、先程ブラウザで起動したターミナルが見えます。ブラウザとリモートデスクトップで同じ画面が表示されるようです。

ついでに他の機能にもアクセスしてみました。ブラウザから
    https://サーバIP:8080/term/
にアクセスすると、ログインプロンプトが出てき、先程のIDとパスワードでログインできました。

ブラウザから
    https://サーバIP:8080/file/
にアクセスすると、以下のようにファイルブラウザが表示されました。操作端末との間でファイルやりとりするのも簡単そうです。

ブラウザから
    https://サーバIP:8080/code/
にアクセスすると、以下のようにVS Codeの画面が表示されました。ここまでお膳立てされていると、ちょっとした開発ならすぐにでも開始できそうです。

まとめ

いろいろなコンテナを起動してみましたが、日本語対応を謳っていても実際はうまく起動できなかったり日本語入力できなかったりするものが多い印象です。今回はあまり深くは触っていませんが、

シンプルなUbuntuベースのLinuxデスクトップ ⇒ rosyuku/ubuntu-rdp

高機能なCentOSベースのLinuxデスクトップ ⇒ docker-centos-xfce-ja

の二択かなと思いました。

graboidでDockerイメージをダウンロード on Windows

-- 2020/9 追記 ----
似たツールとして、crane コマンドについても記事を書きました。
---------------------

Dockerを実行しているサーバがインターネットに接続されていないオフライン環境だと、docker pull ができず困ってしまう場合があります。そのような時、インターネットに繋がっている他の端末でイメージをダウンロードして、それをtarファイルにしてscpやらUSBメモリやら経由でコピーすればいいのですが、DockerイメージダウンロードするためだけにDockerをインストールするのが大袈裟なことがあります。

そのような場合、graboid コマンドを使うと簡単にイメージをDockerなしで手動ダウンロードすることができます。graboid は、GO言語で書かれたコマンドラインツールで、Linuxだけでなく、MacやWindowsにも対応しています。インストール方法は簡単で、GitHub のリリースページにバイナリが公開されているため、これをダウンロードし展開するだけです。

ここではWindowsを例に、試してみたいと思います。

ブラウザから、https://github.com/blacktop/graboid/releases/download/0.14.0/graboid_0.14.0_win_amd64.zip をダウンロードし、ダウンロードしたzipを展開すると、graboid.exe というファイルがでてきます。あとは、コマンドプロンプトを起動し、graboid.exe にDockerHubのイメージを引数で渡すだけです。ここでは、c:\tmp にgraboid.exe があると仮定し、busybox のDockerイメージをダウンロードしてみます。
※ プロキシ使用時は、HTTPS_PROXY 環境変数を定義しておけば良いみたい。

C:\>cd c:\tmp
c:\tmp>graboid.exe busybox:latest
[34m •[0m Initialize Registry [34mdomain[0m=https://index.docker.io [34mimage[0m=library/busybox [34mtag[0m=latest
[34m •[0m getting auth token
[34m •[0m GET CONFIG
[34m •[0m GET LAYERS
716.06 KiB / 716.06 KiB [====================================================] 100.00% 0s
[34m •[0m CREATE manifest.json
[34m •[0m CREATE docker image tarball: library_busybox.tar
[34m •[0m [1mSUCCESS![0m

Windowsのコマンドプロンプトだと、若干表示がおかしいですが、無事ダウンロードできようなので、ファイルを確認します。

c:\tmp>dir
ドライブ C のボリューム ラベルは Windows です


c:\tmp のディレクトリ

2018/09/18 11:02 <DIR> .
2018/09/18 11:02 <DIR> ..
1979/12/31 00:00 5,664,256 graboid.exe
2018/09/18 11:02 734,502 library_busybox.tar
2 個のファイル 6,398,758 バイト
2 個のディレクトリ 38,434,910,208 バイトの空き領域

上記の通り、library_busybox.tar ファイルが生成されました。あとは、これをDockerの動いているサーバにコピーし、インポートすれば作業完了です。

# docker load  < library_busybox.tar

ちなみに、LinuxやCygwinのプロンプトだと、ダウンロード時の表示はこのように綺麗に表示されました。

$ ./graboid.exe busybox:latest
• Initialize Registry domain=https://index.docker.io image=library/busybox tag=latest
• getting auth token
• GET CONFIG
• GET LAYERS
716.06 KiB / 716.06 KiB [====================================================] 100.00% 0s
• CREATE manifest.json
• CREATE docker image tarball: library_busybox.tar
• SUCCESS!

Linux上のNetwork Namespace一覧を確認する

最近コンテナ触ってると、どのプロセスがどのネームスペースで動いているのか確認したくなります。コンテナのネームスペースをコンテナ毎に調べてもいいですが、実はpsコマンドで見ることができます。

具体的には、-o オプション使って以下のように実行すれば、ネットワークネームスペースとPID,コマンド等を見ることができます。ちなみにNETNSの数字はinode番号を意味しています。

# ps -e -o netns,pid,cmd
 NETNS PID PPID CMD
4026531957 1 0 /sbin/init splash
4026531957 2 0 [kthreadd]
4026531957 3 2 [ksoftirqd/0]
4026531957 5 2 [kworker/0:0H]
4026531957 7 2 [rcu_sched]
4026531957 8 2 [rcu_bh]
4026531957 9 2 [migration/0]
4026531957 10 2 [watchdog/0]
4026531957 11 2 [watchdog/1]
4026531957 12 2 [migration/1]
4026531957 13 2 [ksoftirqd/1]
4026531957 15 2 [kworker/1:0H]
4026531957 16 2 [kdevtmpfs]
4026531957 17 2 [netns]
4026531957 18 2 [perf]
4026531957 19 2 [khungtaskd]
4026531957 20 2 [writeback]
4026531957 21 2 [ksmd]
~以下略~

 

プロセスツリーみたければ、pstree でも見ることができます。以下はKubernetesが動いている環境で実行した時の例ですが、このようにネームスペース毎にプロセスツリーを表示してくれます。

# pstree -N net
~ 略 ~
[4026532229]
dashboard───7*[{dashboard}]
pause
[4026532441]
pause
bash
[4026532514]
pause
server───6*[{server}]
[4026532580]
pause
dumb-init───nginx-ingress-c─┬─nginx───2*[nginx───32*[{nginx}]]
 └─10*[{nginx-ingress-c}]
[4026532359]
pause
kube-dns───8*[{kube-dns}]
dnsmasq-nanny─┬─dnsmasq
 └─8*[{dnsmasq-nanny}]

 

DockerHubのイメージのタグ一覧をコマンドで取得する

docker コマンドでタグを指定せずにコンテナイメージをpullすると、latestタグのイメージがDockerHubからダウンロードされますが、他のタグのイメージをダウンロードしようとした場合、存在するタグ一覧をdockerコマンドで確認できず不便です。

そのため、curlコマンドを使ってDockerHubのレジストリのAPIを直に叩いて情報を取得する方法を紹介します。以下は、centosのタグ取得例です。

$ curl -s https://registry.hub.docker.com/v1/repositories/centos/tags | sed "s/,/\n/g" | grep name | cut -d '"' -f 4
latest
5
5.11
6
6.6
6.7
7
7.0.1406
7.1.1503
7.2.1511
centos5
centos5.11
centos6
centos6.6
centos6.7
centos7
centos7.0.1406
centos7.1.1503

 

毎回コマンドを叩くのは大変ならば、.bashrc 等に以下を記述しておけば、運用が楽になります。

function docker-taglist {
    curl -s https://registry.hub.docker.com/v1/repositories/$1/tags | sed "s/,/\n/g" | grep name | cut -d '"' -f 4
}

 

もちろん実行結果は同じです。

$ docker-taglist centos
latest
5
5.11
6
6.6
6.7
7
7.0.1406
7.1.1503
7.2.1511
centos5
centos5.11
centos6
centos6.6
centos6.7
centos7
centos7.0.1406
centos7.1.1503

dockerのストレージドライバーをdevicemapperに変更する@Ubuntu 14.04

Ubuntu 14.04(desktop)にdockerを入れて、docker infoを見たら、バックエンドのストレージドライバーがaufsだったので、これをdevicemapperに変更してみた。 ※ 変更するとローカルにあるイメージは削除されますので、必要ならバックアップしておいてください。

変更前の状態

# docker info
Containers: 1
Images: 5
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 7
 Dirperm1 Supported: true
Execution Driver: native-0.2
Kernel Version: 3.16.0-30-generic
Operating System: Ubuntu 14.04.3 LTS
CPUs: 1
~ 略 ~

 

/etc/default/docker に以下を設定します。

DOCKER_OPTS="--storage-driver=devicemapper"

 

dockerを再起動

# restart docker

 

設定反映を確認 (既存イメージを消しているのか、少し時間がかかります。)

# docker info
Containers: 0
Images: 5
Storage Driver: devicemapper
 Pool Name: docker-8:1-2493613-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: extfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 500.7 MB
 Data Space Total: 100.4 GB
 Data Space Available: 50.54 GB
 Metadata Space Used: 946.2 kB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.147 GB
 ~略~
このブログについて
プライバシーポリシー・お問い合わせ等
購読する(RSS)
記事検索
アーカイブ
カテゴリー
  • ライブドアブログ