[Docker] CentOS7の構築メモ

2019年4月20日

テクノロジー

WEBシステムを構築する時の開発環境をローカルPCに構築するのにDockerは最適です。 もはやVirtualBoxやVMwareなどは、メモリ食い過ぎ、CPU専有しすぎ、重すぎ、遅すぎ・・・ ノートPCにでもサクサク動いてくれるDockerを使ったらもう他の仮想OSは使えませんね。 LAMP環境だけなら、MAMPでも良いんですが、Linuxモジュールなどの連携が必要な場合も多いし、そもそもnodejsに十分に対応できないので、やはりdockerですね。

docker下準備

Macに対してDockerアプリケーションのインストールは過去記事を参考にしてください。 Mac版Dockerを使って開発環境の構築 そして、Dockerには、起動時に一括処理してくれるDockerfileというファイルを作って、コマンド実行するだけでいいという便利な機能があります。 今回はこちらを使って、ソースダウンロードから基本環境起動までを一発で行えるDockerfileを作ってみたいと思います。

Dockerfile

今回はCentOS7に対してapache,php70,mysqlを最初にインストールしてイメージを作成してみます。 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 # ===== # Modules # ===== # Apache RUN yum install -y httpd RUN systemctl enable httpd.service # PHP RUN yum install -y epel-release RUN rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm RUN yum install -y --enablerepo=remi,remi-php71 php php-cli php-common php-devel php-mbstring php-pdo php-gd php-mysqlnd php-xml php-pecl-apc php-intl php-pear php-zip # MySQL RUN yum localinstall -y http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm RUN yum -y install mysql-community-server RUN systemctl enable mysqld.service 任意ディレクトリに上記の「Dockerfile」を作成して、設置しておきます。 次にターミナルで上記のDockerfileが追いてあるディレクトリに移動して、下記コマンドでビルド実行。 $ docker build -t eccube/eccube3:0.1 . 今回はEC-CUBE3の環境構築を目的としていたので、イメージ名は「eccube/eccube3」として、タグ名を「0.1」にしています。 ビルドコマンドを実行する時は、一番最後に「.」(ピリオド)の付け忘れに注意しましょうね。 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE eccube/eccube3 0.1 4d972fd907b6 2 minutes ago 2.49GB centos centos7 9f38484d220f 4 weeks ago 202MB

起動してアクセスして調整

OSインストールが管理したら、イメージを起動してみましょう。 $ docker run --privileged -it -d --name eccube3 eccube/eccube3:0.1 /sbin/init この時点でエラーがでるようであれば、これまでの設定になにかしらの不備があるので、dockerイメージを削除してやり直しをしなければいけません。 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5bec97064214 eccube/eccube3:0.1 "/sbin/init" 6 minutes ago Up 6 minutes 0.0.0.0:80->80/tcp eccube3 とりあえず、不具合が起きる要因はたくさんあるので、そちらは割愛して、起動に成功したら、次は、OSにアクセスします。 $ docker exec -it eccube3 bash [root@5bec97064214 /]# この状態までいけば、あとはCentOSに対して、必要なモジュールをインストールしていきます。

運用に使うコマンド

ターミナル操作をしている時に、dockerコンテナを抜けたい時は、「control + P + Q」を押すと抜けられます。 その後再アクセスしたい場合は、初回にアクセスした同じコマンドを実行しましょう。 $ docker exec -it eccube3 bash [root@5bec97064214 /]#

最後にイメージを保存しておきましょう

各種インストール操作など完了したら、イメージデータを保存しておきましょう。 1. [control] + P + Qでコンテナを抜ける 2. $ docker commit -m "setting-fix" eccube3 eccube/eccube3:0.2 sha256:3459ead389fcd442f40921efd0a750b2f9ea7274b793ddb4e0455e85199629a8 成功したら、imagesで確認してみましょう。 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE eccube/eccube3 0.2 3459ead389fc 29 seconds ago 2.63GB eccube/eccube3 0.1 4d972fd907b6 17 minutes ago 2.49GB centos centos7 9f38484d220f 4 weeks ago 202MB 無事に0.2タグが作成されているので、dockerアプリを再起動しても、同じ環境でOSを復活することが出来るようになりました。 ちなみに、このOSイメージを他のPCに端末でも使いたい場合は、ファイルとしても書き出すことができます。 起動しているコンテナをファイルにエクスポートする方法 $ docker export eccube3 -o eccube3.tar 出力されたファイルからコンテナインポート docker import eccube.tar 自分の環境構築ができたら、プロジェクトチーム内で共有して、同じ環境での開発を行なうことで、チームの作業効率アップできるといいですね。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。