開発環境用に手元にCentOS7がほしかったのでDockerで構築。
Dockerも日々とっつきやすく進歩してる(?)らしくて助かる。
■ インストール
① ダウンロード
https://docs.docker.com/docker-for-mac/install/#download-docker-for-mac
② dmgを開いて、D&Dでアプリケーションフォルダへコピー
③ アプリケーションフォルダのDockerのアイコンをクリックして起動。なんか小さめのウィンドウが出て、しばらく待たされる。
④「Docker is now up and running!」 と出たら、起動完了。ターミナルで以下のコマンドで確認。
$ docker --version
Docker version 17.03.1-ce, build c6d412e
※VirtualBoxとか不要らしい。xhyveでVMを構築してくれる。
ちなみにVMは、↓ここにできるらしい。
~/Library/Containers/com.docker.docker
■ イメージの作成
① 任意のディレクトリにDockerfileを設置
mkdir -p /Users/miro/docker/cent72
cd /Users/miro/docker/cent72
vi Dockerfile
※Dockerfileの内容は、後述の ■ 参考: Dockerfile の例 を参照
② イメージのビルド
docker build -t miro/centos7:1.0 .
※「-t」で名前を指定できる。上記の :1.0 の部分はタグ
③ ビルドできているか確認
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
miro/centos7 1.0 3a6a024637ef About a minute ago 859 MB
centos centos7 a8493f5f50ff 4 weeks ago 192 MB
■ コンテナの起動
① ホスト側(Mac側)に、共有ディレクトリを用意しておく
mkdir /Users/miro/docker/cent72/share
② 起動
docker run --privileged -it -d --name cent7test -v /Users/miro/docker/cent72/share:/docker-host/share miro/centos7:1.0 /sbin/init
※「-v」オプションで、ホスト側の共有ディレクトリをマウントしている。必須ではないが、これをやっておくと何かと便利。
※ポートフォワードする場合は、-p 80:80 などを指定する。今回はWebサーバー等を入れていないので指定していない。
③ 起動したか確認する
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3c8e288e9a0c miro/centos7:1.0 "/sbin/init" 6 seconds ago Up 9 seconds cent7test
■ コンテナに接続して確認
$ docker exec -it cent7test bash
[root@3c8e288e9a0c /]# ← つながった
[root@3c8e288e9a0c /]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core) ← CentOS7.3 がインストールされている
[root@3c8e288e9a0c /]# ls -a /docker-host/share/
. .. ← ホスト側のディレクトがマウントされている
■ コンテナの確認、停止、削除
・確認
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3c8e288e9a0c miro/centos7:1.0 "/sbin/init" About a minute ago Up About a minute cent7test
・停止、起動
docker stop cent7test ← コンテナ名、またはコンテナIDを指定
docker start cent7test ← 同上
・削除
docker rm cent7test ← 同上。停止している状態で削除すること
■ イメージの確認と削除
・確認
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
miro/centos7 1.0 3a6a024637ef 7 minutes ago 859 MB
centos centos7 a8493f5f50ff 4 weeks ago 192 MB
・削除
docker rmi 3a6a024637ef ← イメージIDを指定
■ 参考: Dockerfile の例
※以下は、CentOS7 本体と、一般的な開発ツール群を併せていインストールするDockerfileです。
適宜、足したり引いたりして使ってください。
FROM centos:centos7
# Import the Centos-7 RPM GPG key to prevent warnings
RUN rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7
RUN rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7
# system update
RUN yum -y update && yum clean all
# set locale
RUN yum reinstall -y glibc-common && yum clean all
RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
RUN unlink /etc/localtime
RUN ln -s /usr/share/zoneinfo/Japan /etc/localtime
# ===============================================================================================================
# BASE packages
# ===============================================================================================================
RUN yum --enablerepo=extras clean metadata
RUN yum install -y zlib zlib-devel make gcc gcc-c++ openssl openssl-devel readline-devel pcre pcre-devel
RUN yum install -y openssh openssh-server
RUN yum install -y net-tools wget sudo
RUN yum install -y tar zip unzip bzip2 which tree
RUN yum install -y git