Raspberry PiでDockerコンテナがホスト側と時間同期できない問題を解決する
2021/11/07
問題
コンテナ内で date コマンドを叩いても正しい時刻を取得できなかった
root@f38fb1bfdebb:/app# date
Thu Jan 1 00:00:00 UTC 1970
バージョン
- Raspberry Pi OS: 10.11
- Docker: 20.10.10
解決方法
libseccompパッケージに不具合があるようで、バージョンを上げたら解決する
$ wget http://ftp.debian.org/debian/pool/main/libs/libseccomp/libseccomp2_2.5.2-2_armhf.deb
$ sudo dpkg -i libseccomp2_2.5.2-2_armhf.deb
root@d223d1edab89:/app# date
Fri Nov 5 16:11:48 UTC 2021
正しい時刻を取得することができた
$ rm libseccomp2_2.5.2-2_armhf.deb
もう必要ないので削除しておく
補足
Raspberry Piでとあるsinatraアプリを docker-compose build をした時に、 bundle install のタイミングでコケた
これで今回の問題に気づいた
Operation not permitted - clock_gettime (Errno::EPERM)
検索してもあまりヒットしなかったので、検索用にここに載せておく
$ docker-compose build
Building web
Step 1/4 : FROM ruby:2.7.4
---> e788dbf3e493
Step 2/4 : ADD . /app
---> Using cache
---> 6d275a173c7b
Step 3/4 : WORKDIR /app
---> Using cache
---> a1a7eae13717
Step 4/4 : RUN bundle install -j4
---> Running in c8c1d74a14a9
/usr/local/lib/ruby/2.7.0/rubygems/specification.rb:106:in `initialize': Operation not permitted - clock_gettime (Errno::EPERM)
from /usr/local/lib/ruby/2.7.0/rubygems/specification.rb:106:in `now'
from /usr/local/lib/ruby/2.7.0/rubygems/specification.rb:106:in `<class:Specification>'
from /usr/local/lib/ruby/2.7.0/rubygems/specification.rb:39:in `<top (required)>'
from /usr/local/lib/ruby/2.7.0/rubygems.rb:1417:in `require'
from /usr/local/lib/ruby/2.7.0/rubygems.rb:1417:in `<module:Gem>'
from /usr/local/lib/ruby/2.7.0/rubygems.rb:115:in `<top (required)>'
from <internal:gem_prelude>:1:in `require'
from <internal:gem_prelude>:1:in `<internal:gem_prelude>'
ERROR: Service 'web' failed to build : The command '/bin/sh -c bundle install -j4' returned a non-zero code: 1
$ docker-compose build
Building web
Step 1/4 : FROM ruby:2.7.4
---> e788dbf3e493
Step 2/4 : ADD . /app
---> Using cache
---> 6d275a173c7b
Step 3/4 : WORKDIR /app
---> Using cache
---> a1a7eae13717
Step 4/4 : RUN bundle install -j4
---> Using cache
---> e5e01b0c4a36
Successfully built e5e01b0c4a36
Successfully tagged home_api_web:latest
時刻同期できるようになったら、無事 docker-compose build が通った
参考
Raspberry Pi 4 に Docker と Docker Compose をインストールする | DevelopersIO