CentOS7 + DockerでGitBucketを構築する

# 概要
[GitBucket 4.29.0をリリースしました](http://takezoe.hatenablog.com/entry/2018/09/29/153413)
公式のDockerイメージがリリースされたということで、VM上に構築してみよう！OSはCentOS7です。

# 環境
CentOS 7.3.1611
Docker 18.03.1-ce

# Dockerを構築
まずはDockerを構築していきます。
下記のサイトを参考にインストールしました。
[CentOS 7にDockerをインストールする手順](http://hirosanote.hatenablog.jp/entry/2018/06/18/204048)
[DockerをCentOS7にインストール](https://shuntavista.jimdo.com/2018/01/27/docker%E3%82%92centos7%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/)

が、Docker起動時にコケます。

```terminal:terminal
$ sudo systemctl start docker

Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
```

起動してないですよね･･･？
サービスの状態を確認します。

```terminal:terminal
$ systemctl status docker.service

● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: failed (Result: start-limit) since 火 2018-10-02 20:01:21 JST; 8s ago
     Docs: https://docs.docker.com
  Process: 5067 ExecStart=/usr/bin/dockerd (code=exited, status=1/FAILURE)
 Main PID: 5067 (code=exited, status=1/FAILURE)

10月 02 20:01:21 local.server-memo.net systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
10月 02 20:01:21 local.server-memo.net systemd[1]: Failed to start Docker Application Container Engine.
10月 02 20:01:21 local.server-memo.net systemd[1]: Unit docker.service entered failed state.
10月 02 20:01:21 local.server-memo.net systemd[1]: docker.service failed.
10月 02 20:01:21 local.server-memo.net systemd[1]: docker.service holdoff time over, scheduling restart.
10月 02 20:01:21 local.server-memo.net systemd[1]: start request repeated too quickly for docker.service
10月 02 20:01:21 local.server-memo.net systemd[1]: Failed to start Docker Application Container Engine.
10月 02 20:01:21 local.server-memo.net systemd[1]: Unit docker.service entered failed state.
10月 02 20:01:21 local.server-memo.net systemd[1]: docker.service failed.
```

起動していません。
ログもかなり抽象的なので、詳細を確認します。

```terminal:terminal
$ journalctl -xe -u docker

・
・
省略
・
・
10月 02 19:58:26 local.server-memo.net dockerd[4603]: Error starting daemon: error initializing graphdriver: /var/lib/docker contains several valid graphdrivers: devicemapper, overlay2; Please cleanup or explicitly choose storage driver
10月 02 19:58:26 local.server-memo.net systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
10月 02 19:58:26 local.server-memo.net systemd[1]: Failed to start Docker Application Container Engine.
-- Subject: Unit docker.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit docker.service has failed.
```

> 複数のストレージドライバが存在するため、ドライバを明示的に指定してください。

とのこと。

ちなみに、各ドライバの特徴については下記の公式ドキュメントを参考にしました。
[ストレージ・ドライバの選択 — Docker-docs-ja 17.06.Beta ドキュメント](http://docs.docker.jp/engine/userguide/storagedriver/selectadriver.html#future-proofing)

ドライバを「DeviceMapper」に変更し、起動します。

```terminal:terminal
dockerd --storage-driver=devicemapper &
```

そして、システム起動時にDockerデーモンを自動起動する設定を行います。

```terminal:terminal
$ sudo systemctl enable docker

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
```

# コンテナの作成
今回は8080ポートと、SSH接続も行えるよう29418ポートフォワードするようにしてコンテナを作成・起動

```terminal:terminal
$ sudo docker run -d -p 8080:8080 -p 29418:29418 gitbucket/gitbucket
```

これでDocker上にGitBucketのコンテナが作成できました。

# 確認
```terminal:terminal
curl http://172.16.0.0:8080