読者です 読者をやめる 読者になる 読者になる

明日にはでっかい太陽が昇るかもしれません。

「覚悟」とは!! 暗闇の荒野に!!進むべき道を切り開く事だッ!

とりあえずコンテナ作ってみる

試行錯誤のための環境づくり

まだ、 Docker には十分慣れていないので(そして、以前試した時よりだいぶバージョンが上がっているので)、試行錯誤用のコンテナを作成する。

このコンテナでインストール手順の確率や、破壊的な変更などを試してみる。

Dockerfile を作成する

Docker を使って、オリジナルのコンテナを作成する場合は、何はともあれ Dockerfile が必要になる。

作成にあたり、参考にしたのは以下のサイト。

とりあえず、以下の様なコンテナを作成してみた。

  • Ubuntu 14.04 ベース
  • apt コマンド使用可
  • SSHサーバあり
  • 開発環境( build-essential )あり

あとは、作成したコンテナの中で、ツールのビルド手順を確立していき、各コンテナの Dockerfile を作成していく。

#
# Dockerfile for Embryo Container.
#

# Pull base image.
FROM ubuntu:14.04

# Author.
MAINTAINER kenz_san

# Install packages.
RUN sed -i -e 's/\/\/archive.ubuntu.com/\/\/ftp.jaist.ac.jp/g' /etc/apt/sources.list && \
    apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y python-software-properties \
                                                      software-properties-common
RUN add-apt-repository -y ppa:git-core/ppa && \
    add-apt-repository -y ppa:mercurial-ppa/releases
RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get upgrade -y && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential \
                                                      byobu \
                                                      curl \
                                                      git \
                                                      mercurial \
                                                      openssh-server \
                                                      python-dev \
                                                      python-setuptools \
                                                      python-pip \
                                                      python-virtualenv \
                                                      unzip \
                                                      vim \
                                                      wget
RUN curl -Lo /tmp/subversion_installer.sh http://opensource.wandisco.com/1.9/scripts/subversion_installer_1.9.sh && \
    echo yn | bash /tmp/subversion_installer.sh


# Create user.
RUN useradd -d /home/embryo -m -s /bin/bash embryo && \
    echo "embryo:embryo" | chpasswd && \
    echo "embryo ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
    echo -e "LANG='ja_JP.UTF-8'" > /etc/default/local

# Setup sshd.
RUN sed -i -e '/^UsePAM\s+yes/d' /etc/ssh/sshd_config && \
    mkdir -p /var/run/sshd && \
    /etc/init.d/ssh start && /etc/init.d/ssh stop && \
    sed -i 's/.*session.*required.*pam_loginuid.so.*/session optional pam_loginuid.so/g' /etc/pam.d/sshd

# Set environment variables.
ENV HOME /home/embryo

# Define working directory.
WORKDIR /home/embryo

# 
EXPOSE 22

# Define default command.
CMD ["/usr/sbin/sshd", "-D"]

こんな感じで。

開発に必要そうなパッケージは詰め込んで、SSH だけ有効にしている。

$ docker build -t kenz_san/embryo .
$ docker run -d -i -t -p 22:22 kenz_san/embryo

でコンテナが起動するので、 putty などで 22 ポートにアクセスすれば SSH サーバサーバに接続できる。