CentOS7からは特に何もしなくてもDockerをyumから入れられるようなので、難しい事は考えずに試しました。
以下を参考にしました。以下を読めばこの記事を読む必要は無いと思います。
CentOS7のベースイメージを作る
yum でgroupinstall Coreすると出来るそうです。
# ベースイメージの作成先 sudo mkdir /var/tmp/centos7 # ベースイメージを作るためのyumの設定ファイル sudo mkdir /var/tmp/centos7-config # yumで使う設定ファイルを作る。 # 変数になっている箇所を置き換える必要があったので、置き換える。 cat /etc/yum.repos.d/CentOS-Base.repo \ | sed -e 's/$basearch/x86_64/g' -e 's/$releasever/7/g' \ | sudo tee /var/tmp/centos7-config/yum.conf # 作った設定を使ってベースイメージの作成先にパッケージをインストールする sudo yum -c /var/tmp/centos7-config/yum.conf --installroot=/var/tmp/centos7 -y groupinstall Core #デバイスファイルを作る cd /var/tmp/centos7/dev # nullがなぜかファイルとして存在したので削除しておく。 sudo rm null # nullデバイス. 書き込み処理を無視する。 sudo mknod -m 666 null c 1 3 # zeroを出力するためのデバイス sudo mknod -m 666 zero c 1 5 # 乱数を生成するデバイス. 充分に環境ノイズがないとそれが集まるまでブロックする sudo mknod -m 666 random c 1 8 # randomと比べ低品質だがブロックしない乱数を生成するデバイス sudo mknod -m 666 urandom c 1 9 # 擬似端末マスタの対になる擬似端末スレーブのファイルディスクリプタを作る先 sudo mkdir -m 755 pts # 共有メモリ マウントポイント作成 sudo mkdir -m 1777 shm # 自身の端末を意味するデバイス。SSHなら/dev/pts/0とか指す sudo mknod -m 666 tty c 5 0 # 仮想端末を指すデバイスファイル。以下の仮想端末の中でアクティブになってる仮想端末を指すショートカットらしい。 sudo mknod -m 666 tty0 c 4 0 # 実マシン上でCtrl+ALT+[F1,F2]とかやると端末が切り替わる。そのときの仮想端末を指すデバイスファイル。 sudo mknod -m 666 tty1 c 4 1 # システムメッセージを送る先になるコンソール。今はたいていtty0と同じ。よくわからない。 sudo mknod -m 600 console c 5 1 # 書き込みに必ず失敗するデバイスファイル sudo mknod -m 666 full c 1 7 # 擬似端末マスタを作るやつ sudo mknod -m 666 ptmx c 5 2
dockerインストール
パッケージからいれます。
sudo yum install docker sudo systemctl enable docker.service sudo systemctl start docker.service
ベースイメージをインポート
cd /var/tmp/centos7 sudo tar -c . | sudo docker import - ryozi/centos7
imagesするとインポートしたイメージが追加されている。
sudo docker images
ベースイメージを元にperl環境を持つベースイメージを作る
難しい事はわからないので、バージョンは5.20.0で固定にして、https://github.com/miyagawa/docker-plenv-vanilla をちょっと修正して使ってます。
# 適当にディレクトリを作る cd ~ mkdir -p works/docker/plenv cd works/docker/plenv # Dockerファイルの作成。ベースイメージにさっきのものを指定 cat <<'__EOF__' > Dockerfile FROM ryozi/centos7 RUN yum update -y RUN yum install -y git bzip2 patch gcc make RUN git clone git://github.com/tokuhirom/plenv.git /root/.plenv RUN git clone git://github.com/tokuhirom/Perl-Build.git /root/.plenv/plugins/perl-build/ ADD ./plenv.sh /etc/profile.d/plenv.sh RUN . /etc/profile; MAKEFLAGS="-j 5" plenv install 5.20.0 RUN . /etc/profile; plenv local 5.20.0 RUN . /etc/profile; plenv install-cpanm RUN . /etc/profile; cpanm install Carton __EOF__ # 拝借 curl -O https://raw.githubusercontent.com/miyagawa/docker-plenv-vanilla/master/plenv.sh
名前をつけてビルド
sudo docker build -t ryozi/plenv ./