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 : コンテナ起動時に実行するコマンドを記述する (今回はシェルを実行した)