目次
Dockerを使ってGitLabのサーバを構築
GitLabのサーバ上で管理したくないファイルがあるため、自前のサーバにGitLabを構築します。
下記を見ながらやってみます。
DockerをMacにインストールする (更新:2018/5/14)
Dockerを使う
今回はDockerを使って構築していきます。
とりあえずMac上で構築して、あとでサーバにコンテナを移します。
Docker for Macをインストール
公式サイトからインストールします。
Install Docker for Mac | Docker Documentation
アカウントを作る
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 {コンテナ名}
でコンテナを削除。