個人開発環境作成のためのDockerfileメモ

■ 目次

  1. 概要
  2. Dockerfile
    1. Dockerfileの中身
    2. FROM
    3. ユーザの追加
    4. 複数プロセススタートさせる
  3. 実行方法
  4. 参考

■ 概要

  1. Docker入門の入門
  2. Dockerコマンドを学ぶ
  3. Docker Hubを使ってGitHubにあるDockerfileからimageを自動生成する

過去3回に渡ってDockerについて学んでいましたが個人開発環境を整えるためにDockerfileをカスタマイズする

■ Dockerfile

Dockerfileの中身

https://github.com/tomsato/dockerhub-test
このリポジトリにまとめました

$ cat Dockerfile
FROM centos:6.8

MAINTAINER tomsato

RUN yum -y update

# util
RUN yum -y install wget vim git tar

# PHP
RUN yum -y install epel-release
RUN yum -y --enablerepo=remi,epel,rpmforge -y install php php-mbstring php-pear

# mysql
RUN yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
RUN yum -y install mysql-community-server
RUN mysql_install_db --datadir=/var/lib/mysql --user=mysql

# dev tool
RUN yum -y groupinstall "Development tools"

# httpd
RUN yum -y install httpd
ADD src/index.html /var/www/html/

# ssh
RUN yum -y install passwd openssh openssh-server openssh-clients sudo
RUN mkdir -p /var/run/sshd
RUN useradd -d /home/tomsato -m -s /bin/bash tomsato
RUN echo tomsato:tomsato | chpasswd
RUN echo 'tomsato ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
ADD sshd/sshd_config /etc/ssh/sshd_config
RUN /etc/init.d/sshd start;/etc/init.d/sshd stop

# bashrc
COPY resource/bashrc /etc/bashrc

# supervisor
RUN yum -y install python-setuptools
RUN easy_install 'supervisor == 3.2.0' 'supervisor-stdout == 0.1.1' && mkdir -p /var/log/supervisor
ADD supervisor/supervisord.conf /etc/supervisord.conf

# expose for sshd, httpd, mysql
EXPOSE 22 80 3306

CMD ["/usr/bin/supervisord"]

Docker Hubを使ってGitHubにあるDockerfileからimageを自動生成する
ここを参考にしてDockerfileからimageを生成させる

以下メモ

FROM

今現在centos7を使うとhttpdのインストールがこけるみたいなので6系を使うようにしています

ユーザの追加

ログインユーザ(tomsato)を追加しました

  • useraddでユーザの追加
  • chpasswdでパスワードの設定
  • /etc/sudoersにtomsatoのsudo権限を追加

複数プロセススタートさせる

通常だとDockerの方針で1コンテナで1プロセスしかスタートできないが不便なのでmysqld,httpd,sshdなど複数のプロセスを起動させました

Supervisordというpython製のプロセス管理ツールで実現しています

■ 実行方法

imageをDockerHubから持ってくる

$ sudo docker pull tomsato/dockerhub-test

コンテナを立ち上げる

// -d         バックグラウンド実行
// -p 8088:80 docker実行サーバに8088で来た場合、コンテナに80でバックポストする
// -p 2222:22 2222でsshすることができる
$ sudo docker run -itd --name mycentos -p 8088:80 -p 2222:22 tomsato/dockerhub-test /usr/bin/supervisord

コンテナにログインする
tomsatoユーザを作成したためユーザ名を指定してssh

$ ssh tomsato@127.0.0.1 -p 2222
tomsato@127.0.0.1's password:
Last login: Sun Mar 27 11:48:27 2016 from 172.17.42.1

また以下のURLでページが表示することもできる
http://{docker server}:8088/

コマンドについてはこちらを参考にする
Dockerコマンドを学ぶ

■ 補足

tagをつけるバージョン管理する

// 現時点でのlatest tagにversionを付与させる(今後versionを上げて不具合があった時に戻せるように)
$ sudo docker images
REPOSITORY                TAG                 IMAGE ID            CREATED                  VIRTUAL SIZE
tomsato/dockerhub-test    latest              714d393fc6dc        Less than a second ago   1.406 GB

$ sudo docker tag 714d393fc6dc tomsato/dockerhub-test:1.0
$ sudo docker push tomsato/dockerhub-test:1.0

DockerHub上にtagができているのがわかる

dockerhub

■ 参考


Be First to Comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です