takaya030の備忘録

PHP、Laravel、Docker などの話がメインです

Docker で CentOS 6 + Python 2.7 の環境を作る

CentOS6 にはデフォルトで Python 2.6 がインストールされていますが、Python 2.7 が必要になったためインストールしたときのメモ。
一部の OS コマンドが Python 2.6 で書かれており、上書きインストールするとそれらのコマンドが使えなくなる恐れがあるため、ソースからビルドして別ディレクトリ (/opt/local) にインストールする。

Dockerfile

#
# 2016/01/23
#   CentOS 6.7 + epel,remi,rpmforge
#	Python 2.7
#

FROM centos:6
MAINTAINER takaya030

# update yum
RUN yum update -y && \
    yum clean all

# epel repo
RUN yum install -y epel-release && \
    yum clean all
RUN sed -i -e "s/enabled *= *1/enabled=0/g" /etc/yum.repos.d/epel.repo

# remi repo
RUN yum install -y http://rpms.famillecollet.com/enterprise/remi-release-6.rpm && \
    yum clean all
RUN sed -i -e "s/enabled *= *1/enabled=0/g" /etc/yum.repos.d/remi.repo

# rpmforge repo
RUN yum install -y http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm && \
    yum clean all
RUN sed -i -e "s/enabled *= *1/enabled=0/g" /etc/yum.repos.d/rpmforge.repo

# gcc, make, sshd, scp, sudo, unzip, tar, which
RUN yum install -y gcc make openssh-server openssh-clients sudo tar unzip which && \
    yum clean all

# libraries
RUN yum install -y bzip2-devel zlib-devel openssl-devel sqlite-devel ncurses-devel readline-devel tk-devel && \
    yum clean all

# python
RUN curl -O https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz && \
	tar xvzf Python-2.7.11.tgz && \
	cd Python-2.7.11 && \
	./configure --prefix=/opt/local && \
	make && make altinstall && \
	cd .. && \
	rm -r Python-2.7.11 Python-2.7.11.tgz

# pip, easy_install
RUN curl -kL https://bootstrap.pypa.io/get-pip.py | /opt/local/bin/python2.7 && \
	/opt/local/bin/pip2.7 install distribute

# initialize for ssh
RUN sed -i '/pam_loginuid\.so/s/required/optional/' /etc/pam.d/sshd
RUN /sbin/service sshd start
RUN /sbin/service sshd stop

# create login user
RUN useradd -d /home/gae -m -s /bin/bash gae
RUN echo gae:****gae | chpasswd
RUN echo 'gae ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

# timezone
RUN cp -p /usr/share/zoneinfo/Japan /etc/localtime

# symbolic links
RUN ln -s /opt/local/bin/python2.7 /usr/bin/python2.7

EXPOSE 22

CMD ["/usr/sbin/sshd","-D"]

イメージのビルド

docker@dev:~$ docker build -t takaya030/python27

イメージの確認

docker@dev:~$ docker images
REPOSITORY                            TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
takaya030/python27                    latest              a8bce34c067e        3 days ago          693.3 MB
centos                                6                   a005304e4e74        7 months ago        203.1 MB
busybox                               latest              8c2e06607696        9 months ago        2.433 MB

動作確認

コンテナの起動

docker@dev:~$ docker run -d -p 2022:22 --name python27 takaya030/python27

コンテナへのログイン

$ ssh -p 2022 gae@192.168.99.100

python のバージョン確認

[gae@e17d37b01407 ~]$ python -V
Python 2.6.6
[gae@e17d37b01407 ~]$ /opt/local/bin/python2.7 -V
Python 2.7.11