Mac に Docker で CentOS7.3 をインストール


開発環境用に手元に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!」 と出たら、起動完了。ターミナルで以下のコマンドで確認。

```bash
$ docker --version
Docker version 17.03.1-ce, build c6d412e
```

※VirtualBoxとか不要らしい。xhyveでVMを構築してくれる。
ちなみにVMは、↓ここにできるらしい。
~/Library/Containers/com.docker.docker



### ■ イメージの作成
---

① 任意のディレクトリにDockerfileを設置

```bash
mkdir -p /Users/miro/docker/cent72
cd /Users/miro/docker/cent72
vi Dockerfile
```
  ※Dockerfileの内容は、後述の [■ 参考: Dockerfile の例](#__dockerfile) を参照


② イメージのビルド

```bash
docker build -t miro/centos7:1.0 .
```
※「-t」で名前を指定できる。上記の :1.0 の部分はタグ

③ ビルドできているか確認

```bash
$ 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側）に、共有ディレクトリを用意しておく

```bash
mkdir /Users/miro/docker/cent72/share
```

② 起動

```bash
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サーバー等を入れていないので指定していない。

③ 起動したか確認する

```bash
$ 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
```


### ■ コンテナに接続して確認
---

```bash
$ 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/
.  ..   ← ホスト側のディレクトがマウントされている
```


### ■ コンテナの確認、停止、削除
---

・確認

```bash
$ 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
```

・停止、起動

```bash
docker stop cent7test   ← コンテナ名、またはコンテナIDを指定
docker start cent7test   ← 同上
```

・削除

```bash
docker rm cent7test   ← 同上。停止している状態で削除すること
```

### ■ イメージの確認と削除
---

・確認

```bash
$ 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
```

・削除

```bash
docker rmi 3a6a024637ef   ← イメージIDを指定
```


<a name="__dockerfile"></a>
### ■ 参考: Dockerfile の例
---

※以下は、CentOS7 本体と、一般的な開発ツール群を併せていインストールするDockerfileです。
適宜、足したり引いたりして使ってください。

```bash
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
```