Docker, Jenkinsの導入

今回やること

サーバ環境

手持ちのさくらVPS上で環境作ります。

$ cat /proc/version
Linux version 3.13.0-108-generic (buildd@lgw01-60) (gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ) #155-Ubuntu SMP Wed Jan 11 16:58:52 UTC 2017
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.5 LTS"

dockerの導入

公式サイトを参考に導入しました。 随時更新されていると思うので最新の情報を参照した方が良いと思います。

$ sudo apt-get update
$ sudo apt-get install curl \
    linux-image-extra-$(uname -r) \
    linux-image-extra-virtual
$ sudo apt-get install apt-transport-https \
                       ca-certificates
$ curl -fsSL https://yum.dockerproject.org/gpg | sudo apt-key add -
$ apt-key fingerprint 58118E89F3A912897C070ADBF76221572C52609D
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository \
       "deb https://apt.dockerproject.org/repo/ \
       ubuntu-$(lsb_release -cs) \
       main"
$ sudo apt-get update
$ sudo apt-get -y install docker-engine
$ sudo docker run hello-world

表示を見た感じちゃんと動いていれば大丈夫だと思います。

というわけで1.13.0が入ったみたいです。 ちなみにインストールする際にバージョンを指定することも可能です。 インストール可能なバージョンは以下のコマンドで確認できます。

$ apt-cache madison docker-engine
$ sudo groupadd docker
groupadd: group 'docker' already exists
$ sudo usermod -aG docker $USER

1回ログインし直して設定を適用します。 sudo無しで実行できればokです。

$ docker run hello-world

公式のイメージがあるのでそれを使います。 (https://hub.docker.com/_/jenkins/)

$ docker search jenkins
NAME                                  DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
jenkins                               Official Jenkins Docker image                   2475      [OK]
$ docker run -p 8080:8080 jenkins

docker runコマンドの実行時にパスワードが表示されているのでそちらを入力します。 その後pluginはオススメを選び、ユーザの作成など順序通りに進みます。

dockerの使い方

docker psコマンドを用いてidを取得します。 その後docker stop、docker startコマンドで停止、起動をおこないます。 コンテナの削除はdocker rmコマンドでできます。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS                               NAMES
a15377c1714f        jenkins             "/bin/tini -- /usr..."   About an hour ago   Up 7 seconds             0.0.0.0:8080->8080/tcp, 50000/tcp   pensive_brahmagupta
$ docker stop pensive_brahmagupta
$ docker start pensive_brahmagupta
$ docker stop pensive_brahmagupta # rmの前はstopしなければならない
$ docker rm pensive_brahmagupta

さいごに

dockerとjenkinsの環境構築ができました。 次回はjenkinsの設定をしてテストの自動化などをしていきたいと思います。