Dockerをオンプレミスで利用するようになって、しばらく経ちますが、自分でDockerfileを書いて「infrastructure as a code」も実現できますし、「Docker Hub」から必要なものを取り込むことも容易にできて、もう、便利過ぎてDocker無しでは考えられません!
その中で、自分なりに、はまった内容をまとめておきたいと思います。
wikiサイトを調べていて、「DokuWiki」というオープンソースを試そうと思い、Docker Hubから、vimagick/dokuwikiをpullして、テストした際に発生したものです。
こちらのDockerイメージは、Alpine Linuxを使っていて、容量がとても小さい!
さらに、コンテンツのバックアップもリストア方法のコマンドも「Repo info」にまとめていただいており、大変ありがたい公開イメージです。
ところが、復元コマンドを実施した際に、「tar: can't open '/backup/dw-backup.tgz': Permission denied」というエラーメッセージになり、コンテンツの復元ができない事態になってしまいました。
発生Version
- CentOS7.2
- docker1.10.3 (yum docker installでインストールしたもの)
# docker -v Docker version 1.10.3, build 9419b24-unsupported
※ちなみに、Docker1.7.0では、エラーにならず、うまくいきました!
エラー内容
# systemctl start docker # docker run -d -p 8000:80 --restart always --name dokuwiki vimagick/dokuwiki # docker run --rm --volumes-from dokuwiki -v `pwd`:/backup alpine tar czf /backup/dw-backup.tgz /var/www/html Unable to find image 'alpine:latest' locally Trying to pull repository docker.io/library/alpine ... latest: Pulling from docker.io/library/alpine : Status: Downloaded newer image for docker.io/alpine:latest tar: can't open '/backup/dw-backup.tgz': Permission denied
問題解決
- Dockerを最新版(2016-07-27 1.11.2, build b9f10c9)を適用し、解決できました!
(1) 現VersionのDockerの削除
# yum list installed|grep docker docker.x86_64 1.10.3-44.el7.centos @extras docker-common.x86_64 1.10.3-44.el7.centos @extras docker-forward-journald.x86_64 1.10.3-44.el7.centos @extras docker-selinux.x86_64 1.10.3-44.el7.centos @extras # yum remove -y docker.x86_64 # yum remove -y docker-selinux.x86_64 # yum remove -y docker-forward-journald.x86_64 # yum remove -y docker-selinux.x86_64
(2) 最新版のDockerインストール
curl -sSL https://get.docker.com/ | sh
# curl -sSL https://get.docker.com/ | sh + sh -c 'sleep 3; yum -y -q install docker-engine' warning: /var/cache/yum/x86_64/7/docker-main-repo/packages/docker-engine-selinux-1.11.2-1.el7.centos.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID 2c52609d: NOKEY Public key for docker-engine-selinux-1.11.2-1.el7.centos.noarch.rpm is not installed Importing GPG key 0x2C52609D: Userid : "Docker Release Tool (releasedocker) <docker@docker.com>" Fingerprint: 5811 8e89 f3a9 1289 7c07 0adb f762 2157 2c52 609d From : https://yum.dockerproject.org/gpg restorecon: lstat(/var/lib/docker) failed: No such file or directory warning: %post(docker-engine-selinux-1.11.2-1.el7.centos.noarch) scriptlet failed, exit status 255 Non-fatal POSTIN scriptlet failure in rpm package docker-engine-selinux-1.11.2-1.el7.centos.noarch If you would like to use Docker as a non-root user, you should now consider adding your user to the "docker" group with something like: sudo usermod -aG docker your-user Remember that you will have to log out and back in for this to take effect! # docker -v Docker version 1.11.2, build b9f10c9
(3) Dokuwiki復元テスト
# systemctl start docker # docker run -d -p 8000:80 --restart always --name dokuwiki vimagick/dokuwiki # docker run --rm --volumes-from dokuwiki -v `pwd`:/backup alpine tar czf /backup/dw-backup.tgz /var/www/html Unable to find image 'alpine:latest' locally latest: Pulling from library/alpine : Status: Downloaded newer image for alpine:latest tar: removing leading '/' from member names
(4) サイト確認
- http://hostOS_IPアドレス:8000
無事、リストアされました!
ちなみに、2016-08-03時点では、Docker 1.12.0がリリースされています。
新しいVersionを、積極的に試していく前向きさが必要であることを痛感した出来事でした。
それと、Linuxコマンドを深く理解することも重要であることも・・・!