Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

開発環境用に手元に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
prgseek
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした