Edited at

dockerを使ってmacOSにGitlabを構築する

More than 1 year has passed since last update.


目次


Dockerを使ってGitLabのサーバを構築

GitLabのサーバ上で管理したくないファイルがあるため、自前のサーバにGitLabを構築します。

下記を見ながらやってみます。


DockerをMacにインストールする (更新:2018/5/14)


Dockerを使う

今回はDockerを使って構築していきます。


とりあえずMac上で構築して、あとでサーバにコンテナを移します。


Docker for Macをインストール

公式サイトからインストールします。


Install Docker for Mac | Docker Documentation

なんかログインしないとダメみたい...



アカウントを作る


  1. create Accountを選択




  2. Docker ID, Email, Passwordを入力してSign Up




  3. メールを確認し、Confirm




わーい!ダウンロードできるようになった。


dmgファイルをダウンロードして、開くと...


かわいい。


Docker.appを開くとパスワードの入力を促させるので入力。


かわいい。


インストールできたかdocker versionでチェックしてみます。

$ docker version

Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:13:02 2018
OS/Arch: darwin/amd64
Experimental: false
Orchestrator: swarm
Error response from daemon: Bad response from Docker engine

Error responce from daemon: Bad responce from Docker engineと出ています。


まだDockerが起動し終わっていないみたいです。

メニューバーからDockerメニューをよく見たらDocker is startingってなってます。




※ここでずっとDocker is startingから進まない場合はDocker -> Preferences -> ResetのReset to factory defaultsで工場出荷状態に戻すと治ります。

しばらく待ってメニューバーを見てみると...




Docker is running


わーい!動いた動いた!

ということでもう一度docker versionを実行してみた。

$ docker version

Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:13:02 2018
OS/Arch: darwin/amd64
Experimental: false
Orchestrator: swarm

Server:
Engine:
Version: 18.03.1-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:22:38 2018
OS/Arch: linux/amd64
Experimental: true

ちゃんと動いてるみたい。


GitLabのimgを使う

とりあえず下記を読んでやってみます。


GitLab Docker images | GitLab


イメージを起動

イメージを起動します。

$ sudo docker run --detach \

--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /Users/{ユーザ名}/docker/gitlab/config:/etc/gitlab \
--volume /Users/{ユーザ名}/docker/gitlab/logs:/var/log/gitlab \
--volume /Users/{ユーザ名}/docker/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

imageファイルが見つからなかったので勝手にpullしてくれてるみたい。


かわいい。 かしこい。

※上記のサイトでは--volumeのpathが/srv/gitlabとなっているが、この場合ルートディレクトリへの書き込み権限がなくてエラーが出るので/Users/{ユーザ名}dockerというディレクトリを作成しています。


設定の適用

起動したら、docker exec -it gitlab gitlab-ctl reconfigureで設定を適用します。


これは、gitlabというコンテナの中でgitlab-ctl reconfigureを実行するコマンドです。


ブラウザで確認

このあと http://localhost に接続すると初回起動としてrootのパスワードを設定する画面が表示されます。

おしまい


エラー集


Error response from daemon: Mounts denied:

--volumeにはDocker -> Preferences -> File ShareingにあるPathを書かないと、コンテナ起動時に下記のようなエラーが出る。

$ sudo docker run --detach \

--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

docker: Error response from daemon: Mounts denied:

The paths /srv/gitlab/data and /srv/gitlab/logs and /srv/gitlab/config
are not shared from OS X and are not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.
See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.

DockerとMacが共有してるディレクトリのなかに/srv/gitlab/data /srv/gitlab/logs /srv/gitlab/config がなかったのが原因です。

※上でも書きましたが書き込み権限のないディレクトリを入力するとうまくいきません。


Error starting userland proxy: Bind for 0.0.0.0:22: unexpected error (Failure EADDRINUSE)

PORTの22番がbindできなかったみたい。

$ sudo docker run --detach \

--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

docker: Error response from daemon: driver failed programming external connectivity on endpoint gitlab (4533fb961ec3f699b4acaf26e6035a4f426e99f0d1c3fe7142b3f4304bf148ff): Error starting userland proxy: Bind for 0.0.0.0:22: unexpected error (Failure EADDRINUSE).

環境設定 -> 共有 -> リモートログインを消したらいけました。


dockerコマンド(備忘録)


docker container ls

起動中のコンテナを表示。


docker container ls -aで全てのコンテナも表示。


docker ps

起動中のプロセスを表示。


docker po -aで全てのプロセスを表示。


docker start

docker start {コンテナ名}でコンテナを起動。


docker stop

docker stop {コンテナ名}でコンテナを停止。


docker restart

docker restart {コンテナ名}でコンテナを再起動。


docker rm

docker rm {コンテナ名}でコンテナを削除。