Docker上でCentOSコンテナを立てて、Jenkinsをインストールする

# 初めに
Docker上でjenkins環境を構築してみます。
jenkinsの基本的な使い方等は含まれません。

centosの公式リポジトリ
https://hub.docker.com/_/centos/
Dockerfile リファレンス
http://docs.docker.jp/v1.12/engine/reference/builder.html
RedHat Linux RPM packages for Jenkins
http://pkg.jenkins.io/redhat/


# ゴール
Docker上で以下の環境を作ることをゴールにします。
- CentOS 7
- jenkins RedHatに登録されているjenkinsの最新バージョン 

※実際にはCentOSがなくてもdocker pull jenkinsでjenkinsが使えますあえてCentOS上にたてています。
直接jenkinsコンテナをたてたい方はこちら。
https://hub.docker.com/_/jenkins/

# Docker環境
```bash
Docker version 17.06.1-ce, build 874a737
```
※DockerはDocker for Macを利用しています。

# Dockerfileの作成
```bash
vi Dockerfile
```

```dockerfile
FROM centos:7

# Jenkinsインストールに必要なパッケージインストール
RUN yum -y update
RUN yum -y install wget
RUN yum -y install java-1.8.0-openjdk-devel
RUN yum -y install initscripts


# jenkins yumリポジトリ登録
RUN wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
RUN rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key

# Jenkinsインストール
RUN yum -y install jenkins
RUN yum clean all
```

# docker buildでイメージを生成

Dockerfileを作成したディレクトリでbuildコマンドを実行
-t　my_project/jenkinsはタブ名なので任意

```bash
$ docker build -t my_project/jenkins .
```

最後にこんな感じで表示されれば成功

```bash
Successfully built 9944b09247fa
Successfully tagged my_project/jenkins:latest
```

ちゃんと出来ていることを確認

```bash
$ docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
my_project/jenkins                      latest              9944b09247fa        About a minute ago   971MB
```

# docker runでコンテナ起動
jenkinsの起動でsystemctlを利用するのでprivileged（特権オプション）で起動します。

※デフォルトではコンテナにDockerデーモンを実行する権限はありません。
以下の実行時の権限、Linux 機能、LXC 設定を参照。
http://docs.docker.jp/engine/reference/run.html

```bash
$ docker run --privileged -i -d -p 8080:8080 --name jenkins my_project/jenkins /sbin/init
```

```bash
$ docker ps
CONTAINER ID        IMAGE                                   COMMAND             CREATED             STATUS              PORTS                    NAMES
ca3ee086889f        my_project/jenkins                      "/sbin/init"        4 seconds ago       Up 4 seconds        0.0.0.0:8080->8080/tcp   jenkins
```
# jenkinsの起動
docker execでコンテナ内へ

```bash
docker exec -it jenkins /bin/bash
```

再起動時にも自動で起動するように設定

```bash
＃ chkconfig jenkins on
```
サービス起動

```bash
＃ systemctl start jenkins

＃ ps -ef|grep jenkins |grep -v grep
jenkins     98     1 10 12:10 ?        00:00:27 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
```

# 起動確認
早速　http://localhost:8080 へアクセスすると無事起動していますね！
あとは画面の指示に従い,/var/lib/jenkins/secrets/initialAdminPasswordのパスワードでログインします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/206710/d89baac0-6a96-9f0f-6ea3-9e56e67e8f43.png)

今回は推奨のプラグインでインストールしてみますので、Install suggested pluginsを選択
![image.png](https://qiita-image-store.s3.amazonaws.com/0/206710/dfc82612-ceac-19ec-ab81-2c911665479d.png)

処理中・・・
![image.png](https://qiita-image-store.s3.amazonaws.com/0/206710/cecc21b9-0867-9dcf-6d07-8b10f2c3d1f5.png)

管理者ユーザを作成
![image.png](https://qiita-image-store.s3.amazonaws.com/0/206710/1177c9df-dfbf-0c73-10f4-e3766d38c0f2.png)

完成！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/206710/bd87d41f-7148-afa1-5055-c67869248e25.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/206710/a3a55324-371f-29d9-8976-14334a1a8d99.png)


これで楽しいjenkinsの第一歩ですね！