CentOS7 の docker で Dockerfile を使ってみた話

概要

Dockerfile を用いるとイメージの作成が自動化できる
今回は CentOS7 の docker で n 個の Jenkins 環境を用意した話 - kawa0810 のブログ
紹介した Jenkins 環境を Dockerfile を使って自動化する

用意するもの

以下のように環境を用意する

# pwd
/root/jenkins
# ls
Dockerfile  init.sh

init.sh

#!/bin/bash                                                                                               

service jenkins restart

while [[ true ]]; do
    /bin/bash
done

Dockerfile

 # 使用するイメージを取得
FROM centos:centos6

# Dockerfile の作成者
MAINTAINER kawa0810

# Jenkins インストールの準備
RUN yum -y install wget
RUN yum -y install java-1.7.0-openjdk.x86_64

# Jenkins インストール
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
RUN yum -y install jenkins

# Jenkins を OS 起動時に有効にする
RUN chkconfig jenkins on

# init.sh をコンテナに追加する
ADD init.sh /usr/local/bin/init.sh

# init.sh に実行権限を付与
RUN chmod u+x /usr/local/bin/init.sh

# init.sh を実行する
CMD ["/usr/local/bin/init.sh"]

実行方法

# docker build -t kawa0810/jenkins:ver1.0 /root/jenkins
Uploading context 4.096 kB
Uploading context
<中略>
Removing intermediate container baa08fc44bf1
Successfully built 9401a3554589

// 結果の確認方法
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
kawa0810/jenkins    ver1.0              9401a3554589        9 minutes ago       464.5 MB

// コンテナを起動する (前回と同じだが、コンテナ起動時に Jenkins がスタートする)
# docker run -it -p 8000:8080 --name jenkins01 kawa0810/jenkins:ver1.0 /bin/bash
Shutting down Jenkins                                      [FAILED]
Starting Jenkins                                           [  OK  ]
bash-4.1# 

Dockerfile で使った命令

  • FROM : 使用するイメージの選択. イメージがなければ Docker Hub からダウンロードする.
  • MAINTAINER : Dockerfile の作成者をイメージに記録する
  • RUN : コンテナで実行するコマンドを記載
  • ADD : ホストにあるファイルをコンテナにコピー・追加する
  • CMD : コンテナ起動時に実行するコマンドを記述する (今回はシェルを実行した)