Jenkins を Docker for Mac で動かす

##Pref.
Jenkins on Docker for Macについてやる気を出してまとめてみました。

- Jenkinsとは
- JenkinsをDocker上で動かしてみる with macOS
- Jenkinsの最初の設定
- Jenkinsコンテナの停止

##Env.
macOS High Sierra ver.10.13.4
Docker Version 18.05.0-ce-rc1-mac63 (24246)

##Jenkinsとは
Jenkinsとは<font color="orange">開発時のビルドとテストを継続的に行う</font>ことによって致命的なバグなどを早期発見することで、
<font color="Red"><b>アプリケーション開発期間を短期化する</b></font>ための<font color="orange">自動化ツール</font>、オープンソースの継続的インテグレーションツール(CIシステム)である。
また、Jenkinsは内部はJavaで動いている。

[Jenkins公式ページ](https://jenkins.io/)

<img src="https://qiita-image-store.s3.amazonaws.com/0/181807/6edd429e-ba67-1408-c354-5904bcd7e1fb.png" width="50%">

##Docker for Mac を macOSで起動させる
<font color="orange">Docker for Mac</font>を利用してmac上でDockerを動かします。
[Docker公式ページ](https://www.docker.com/docker-mac)

###Docker for MacのDL
[https://store.docker.com/editions/community/docker-ce-desktop-mac](https://store.docker.com/editions/community/docker-ce-desktop-mac)
にアクセスをし、ページの中ほどにある
<img width="319" alt="スクリーンショット 2018-05-04 19.01.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/181807/e586f064-416e-d4d4-7158-063618c43837.png">
<font color="blue">Get Docker CE for Mac (Edge)</font>をダウンロードします。
ページ上部にある通常のダウンロードでなく<font color="orange">Edge</font>バージョンをDLすることで、Kubernetesを後に扱うことができます。

###Docker for Macのインストール
DLしたdmgをマウントし、いつも通りにインストールします。
インストールを進めてタスクバー付近に以下の画面が表示され、Docker is now up runnning!が表示されればインストールは完了で、Dockerが動作しています。
<img width="860" alt="アートボード 1@2x.png" src="https://qiita-image-store.s3.amazonaws.com/0/181807/3660c9d5-f5ed-77ad-df25-7fee7a2f1000.png">

またタスクバーのDockerのクジラを右クリックして以下の詳細画面がでるので、Preferencesをクリックすることで、Dockerの設定をGUIで行うこともできます。
<img width="221" alt="スクリーンショット 2018-05-04 21.10.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/181807/134f7cd0-faad-1bde-34f9-e545ece0969d.png">

##TerminalからJenkinsをDocker上で起動
[https://hub.docker.com/](https://hub.docker.com/)(Docker hub)から公式のJenkinsのDockerイメージを取得後、稼働させることでJenkinsがDocker上で動作します。

以下のコマンドでホームディレクトリに<font color="orange">Dockerディレクトリ</font>を作り、Dockerコマンドを用いてDocker上でJenkinsを起動します。
以下のコマンドの<font color="red">[Username]</font>の部分には自分のmacのユーザ名を入力して下さい。

```bash
$ cd
$ mkdir Docker
$ docker run -p 8080:8080 -p 50000:50000 -d --rm --name jenkins \
 -v /Users/[Username]/Docker/jenkins:/var/jenkins_home jenkins
```

<font color="red">~/Dockerディレクトリなどの中で起動しないとホームディレクトリが荒れたりします。</font>
<font color="green">--name [name]</font>　コンテナに名前をつけて起動
<font color="green">--rm</font>　コンテナ終了時にキャッシュファイル等を同時に削除(?)

初回起動時にJenkinsのDockerイメージのダウンロードが行われます。
その時のターミナルの画面は以下のような感じです。
<img width="646" alt="スクリーンショット 2018-05-04 22.35.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/181807/1a653f44-4022-8975-3002-39626320f762.png">

その後自動的に起動され、起動完了後以下のコマンドで動作中コンテナを確認できます。

```bash
$ docker ps -a
```

<img width="1327" alt="スクリーンショット 2018-05-04 22.56.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/181807/d60b9a64-0d38-8af3-5cb4-775638a83c55.png">

jenkinsという名前のコンテナを確認できます。

##Jenkinsの設定
ターミナルで以下のコマンドを実行します。

```bash
$ docker logs jenkins
```

すると以下のようなパスワードが表示されるのでコピーしておきます。

<img width="1443" alt="スクリーンショット 2018-05-05 0.44.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/181807/2a5c6b7b-826d-2085-9c68-fe796412c6e4.png">

webブラウザを起動し<font color="blue">localhost:8080</font>にアクセスします。
または<font color="orange">[hostのipアドレス:8080]</font>にアクセスします．
初回起動時のパスワード入力画面が表示されるのでlogからコピーしたパスワードをペーストします。

<img width="994" alt="スクリーンショット 2018-05-05 0.39.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/181807/62d1d84d-d7aa-114d-44f3-89a6d5ad7f98.png">

次に以下のカスタムパッケージをどうインストールするかの画面が出てくるので、詳しい人なら右のSelect Plugins to installを選択、よくわからない人は左のInstall suggested pluginをクリックします。特にこだわりがない場合は左のSuggestedの方でいいと思います。自分は左を選択しました。

<img width="988" alt="スクリーンショット 2018-05-05 0.54.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/181807/575207b7-0ea3-9ece-548d-2078a597166a.png">

インストールが開始されます。
終わるまで少し時間がかかるのでポテチでも取ってきます。

<img width="990" alt="スクリーンショット 2018-05-05 1.59.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/181807/e7fbcca4-f22a-1753-85a6-f380c3e3de16.png">

インストールが完了するとCreate First Admin UserというAdminユーザを作成する画面が表示されますが、ユーザ名などを<font color="orange">全て</font>入力してSave and Finishをクリックして下さい。
<img width="988" alt="スクリーンショット 2018-05-05 2.03.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/181807/43634444-b932-80ea-2f0b-763a3912088a.png">

見慣れたJenkinsの画面が表示されたら完了です。
<img width="668" alt="スクリーンショット 2018-05-05 2.07.29.png" src="https://qiita-image-store.s3.amazonaws.com/0/181807/c1842ed5-b911-95cb-0808-6f0ae1e87903.png">

##Jenkinsコンテナの停止方法
DockerのコンテナとしてJenkinsは動作しているので以下のコマンドを叩いて上げることでJenkinsコンテナが終了されます。

```bash
$ docker stop jenkins
```

コンテナ一覧を表示しJenkinsコンテナがなくなっていたら正常に終了できています。

<img width="1021" alt="スクリーンショット 2018-05-05 2.10.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/181807/f5310198-90ce-7a6b-d099-4ff4f9532d9d.png">