背景
※ 私は日本人ですが、質問内容を明確かつ、端的にするため、箇条書き風に書いております。
※ 読みにくかったら申し訳ないです。
※ トンチンカンな質問をしていたらすみません。
GitLabのリポジトリをネットワーク上のストレージに置きたいです。
windowsでGitLabを使う際は、Dockerもしくは、Linux系OSが必須です。
Windows上でGitLabを利用するならば、
WSL2>Ubuntu>Gitlab or WSL2>Ubuntu>Docker>Gitlab とするより、
WSL2>Docker Desktop>Gitlab としたいと考えました。
WSL2>Docker Desktop>Gitlab で、リポジトリをネットワークディレクトリ上に置くにはどうしたらよいでしょうか。
前提
- WSL2を利用すること。
- Docker DesktopでGitlabを利用すること。
- (WSL2 > Docker-Desktok > Gitlab(コンテナ)というような構成)
- ネットワークディレクトリのプロトコル(?)は、NFS or SMB
実現したいこと
- Gitlabの情報 ( /etc/gitlab/と/var/log/gitlab、/var/opt/gitlab ) をネットワークディレクトリに置きたい。
実現環境
利用した環境
- Windows10 Home
- WSL2
- Docker Desktop (Docker version 20.10.12, build e91ed57)
- Gitlab-ee
- Windowsで利用できるNAS ( 実験環境では、sambaを利用。NASは、NFSをサポートしてます。 )
利用したい環境
- Windows10
- Gitlab
- WSL2
- Docker Desktop
やったこと
下記の手順でマウントまではでき、コンテナを作成することはできました。
しかし、エラーが出て止まってしまいました。権限の関係上だとは思うのですが、、、。
- $NetworkIP:ネットワークディレクトリのあるIPアドレス。(例:192.168.56.1)
- $sharedir:マウント予定のしているディレクトリ名。(例:share)
- WSL2のインストール
- Docker Desktopのインストール
- コマンドプロンプトで
wsl -d docker-desktop
を実行し、Docker Desktop内に移動 mkdir -p /mnt/host/uC/$NetworkIP/$sharedir
- Docker Desktop内で
mount -t drvfs "\\$NetworkIP\$sharedir" /mnt/host/uC/$NetworkIP/$sharedir
- ネットワークディレクトリをWindowsでネットワークドライブを設定(今回はS:\ドライブに指定)
- コマンドプロンプトで以下のコマンドを実行
cmd
1 docker run -it -p 80:80 -p 443:443 -p 22:22 ^ 2--name gitlab --hostname gitlab.example.com ^ 3--mount type=bind,source=/S/gitlab/config,target=/etc/gitlab ^ 4--mount type=bind,source=/S/gitlab/data,target=/var/opt/gitlab ^ 5--mount type=bind,source=/S/gitlab/logs,target=/var/log/gitlab ^ 6--shm-size 256m ^ 7gitlab/gitlab-ee
この後、コンテナが立ち上がり、しばらくすると終了します。
確認したこと
- Docker DesktopのボリュームのみでGitlabを立ち上げた場合は、安定稼働します。
- /S/gitlab/config(/etc/gitlab) にマウントしたディレクトリには、ファイルを書き込むことはできてました。
- /S/gitlab/data/.ssh(/var/opt/gitlab/.ssh) にファイルを作ろうとしたところ、コンテナが停止したようです。
あなたの回答
tips
プレビュー