Dockerコンテナで実行されているGitLabのトラブルシューティング
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed
Dockerコンテナにをインストールする際、以下の問題が発生する可能性があります。
潜在的な問題の診断
Dockerコンテナ内のGitLabインスタンスのトラブルシューティングを行う際に、以下のコマンドが役立ちます:
コンテナログを読み取ります:
sudo docker logs gitlab実行中のコンテナに入ります:
sudo docker exec -it gitlab /bin/bashLinuxパッケージのインストールを管理するのと同じように、コンテナ内からGitLabコンテナを管理できます。
500 Internal Error
Dockerイメージを更新する際、すべてのパスに500ページが表示される問題が発生する場合があります。この問題が発生した場合は、コンテナを再起動してください:
sudo docker restart gitlabユーザー権限の問題
古いGitLab Dockerイメージから更新する場合、ユーザー権限の問題が発生する可能性があります。これは、以前のイメージのユーザー権限が正しく保持されなかった場合に発生します。すべてのファイルのユーザー権限を修正するスクリプトがあります。
コンテナを修正するには、update-permissionsを実行し、その後コンテナを再起動します:
sudo docker exec gitlab update-permissions
sudo docker restart gitlabリソースruby_blockでアクションの実行中にエラーが発生しました
このエラーは、WindowsまたはMacでOracle VirtualBoxとDocker Toolboxを使用し、Dockerボリュームを使用する場合に発生します:
Error executing action run on resource ruby_block[directory resource: /data/GitLab]/c/UsersボリュームはVirtualBox共有フォルダーとしてマウントされており、すべてのPOSIXファイルシステム機能をサポートしていません。ディレクトリの所有権とユーザー権限は、再マウントしない限り変更できず、GitLabは失敗します。
Docker Toolboxを使用する代わりに、プラットフォームのネイティブDockerインストールを使用するように切り替えます。
ネイティブDockerインストール(Windows 10 Home Edition、またはWindows 7/8)を使用できない場合、代替ソリューションは、Docker Toolbox Boot2dockerのVirtualBox共有の代わりにNFSマウントを設定することです。
Linux ACLのイシュー
DockerホストでファイルACLを使用している場合、GitLabが機能するためには、dockerグループにボリュームへのフルアクセスが必要です:
getfacl $GITLAB_HOME
# file: $GITLAB_HOME
# owner: XXXX
# group: XXXX
user::rwx
group::rwx
group:docker:rwx
mask::rwx
default:user::rwx
default:group::rwx
default:group:docker:rwx
default:mask::rwx
default:other::r-xこれらの値が正しくない場合は、次のコマンドで設定します:
sudo setfacl -mR default:group:docker:rwx $GITLAB_HOMEデフォルトグループの名前はdockerです。グループ名を変更した場合は、コマンドを調整する必要があります。
/dev/shmマウントにDockerコンテナ内の十分なスペースがない
GitLabには、GitLabのヘルスとパフォーマンスに関する統計情報を公開するためのPrometheusメトリクスエンドポイントが/-/metricsに付属しています。これに必要なファイルは、一時ファイルシステム(/runや/dev/shmなど)に書き込まれます。
デフォルトでは、Dockerは共有メモリーディレクトリ(/dev/shmにマウント)に64 MBを割り当てます。これは、生成されたすべてのPrometheusメトリクス関連ファイルを保持するには不十分であり、次のようなエラーログが生成されます:
writing value to /dev/shm/gitlab/sidekiq/gauge_all_sidekiq_0-1.db failed with unmapped file
writing value to /dev/shm/gitlab/sidekiq/gauge_all_sidekiq_0-1.db failed with unmapped file
writing value to /dev/shm/gitlab/sidekiq/gauge_all_sidekiq_0-1.db failed with unmapped file
writing value to /dev/shm/gitlab/sidekiq/histogram_sidekiq_0-0.db failed with unmapped file
writing value to /dev/shm/gitlab/sidekiq/histogram_sidekiq_0-0.db failed with unmapped file
writing value to /dev/shm/gitlab/sidekiq/histogram_sidekiq_0-0.db failed with unmapped file
writing value to /dev/shm/gitlab/sidekiq/histogram_sidekiq_0-0.db failed with unmapped file管理者エリアでPrometheusメトリクスをオフにできますが、この問題を解決するための推奨される解決策は、少なくとも256 MBの共有メモリを設定してインストールすることです。docker runを使用する場合は、スイッチ--shm-size 256mを渡すことができます。docker-compose.ymlファイルを使用する場合は、shm_sizeキーを設定できます。
Dockerコンテナは、json-fileが原因でスペースを使い果たします
Dockerはjson-fileデフォルトのログドライバーを使用しますが、デフォルトではログローテーションを実行しません。このログローテーションの欠如の結果として、json-fileドライバーによって保存されたログファイルは、大量の出力を生成するコンテナに対してかなりの量のディスク領域を消費する可能性があります。これにより、ディスク容量が不足する可能性があります。これに対処するには、可能であれば、ログドライバーとしてjournaldを使用するか、ネイティブログローテーションをサポートする別のサポートされているドライバーを使用します。
Dockerの起動時にバッファオーバーフローエラーが発生しました
このバッファオーバーフローエラーが発生した場合は、/var/log/gitlabの古いログファイルをパージする必要があります:
buffer overflow detected : terminated
xargs: tail: terminated by signal 6古いログファイルを削除すると、エラーを修正し、インスタンスのクリーンな起動を確実にできます。
ThreadErrorはスレッド操作を作成できません許可されていません
can't create Thread: Operation not permittedこのエラーは、clone3関数をサポートしていないホストで、新しいglibcバージョンでビルドされたコンテナを実行すると発生します。GitLab 16.0以降では、コンテナイメージには、新しいglibcバージョンでビルドされたUbuntu 22.04 Linuxパッケージが含まれています。
この問題は、Docker 20.10.10のような新しいコンテナランタイムツールでは発生しません。
このイシューを解決するには、Dockerをバージョン20.10.10以降にアップデートしてください。