Dockerのインストール、pull、commit、push、Dockerfileからのbuildなど、一通りの事をDrupal環境を作ることを目的にやってみましょう。
環境:VMWarePlayer or VirtualBoxの仮想マシン上にCentOS7.1を初期インストール
事前にDokerHubのアカウントを作成しておきましょう。
Dockerのインストール
1.Dockerのインストール
コマンド
# yum -y install docker
2.Dockerの自動起動設定及びサービスの起動
コマンド
# systemctl enable docker.service
# systemctl start docker.service
3.コンテナーイメージへのディスク最適化設定追加
コマンド
# vi /etc/sysconfig/docker
OPTIONS='--selinux-enabled'
↓
OPTIONS='--selinux-enabled --storage-opt dm.no_warn_on_loop_devices=true'
:wq
4.Dockerサービスの再起動
コマンド
# systemctl restart docker.service
DockerfileからDrupal環境作成
1.build用のディレクトリを作成
コマンド
# mkdir ~/build_drupal
2.Dockerfileを作成
コマンド
# cd build_drupal
# vi Dockerfile
Dockerfileのソースは事項参照
:wq
Dockerfile
# centos6のイメージを取得
FROM centos:centos6
# Dockerfile作成者
MAINTAINER linaction
# タイムゾーンの設定
RUN /bin/cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# yumによる必要パッケージのインストール
RUN yum -y install httpd mysql-server mysql-client mysql-devel mysql-utilities php php-common php-mbstring php-gd php-xml php-xmlrpc php-devel php-cli php-pdo php-pgsql php-mysql php-odbc php-pear tar wget unzip
# tmpディレクトリに移動
WORKDIR /tmp/
# Drupalファイルのダウンロード
RUN wget http://ftp.drupal.org/files/projects/drupal-7.41.zip
# ダウンロードしたDrupalファイルの解凍
RUN unzip drupal-7.41.zip
# 不要ファイルの削除
RUN rm -f ./drupal-7.41.zip
# Drupalディレクトリのリネーム
RUN mv drupal-7.41 drupal
# Drupalディレクトリのリネーム
RUN mv drupal /var/www/html
# 日本語化対応ファイルのダウンロード
RUN wget http://ftp.drupal.org/files/translations/7.x/drupal/drupal-7.41.ja.po
# 日本語化対応ファイルを対象ディレクトリに移動
RUN mv drupal-7.41.ja.po /var/www/html/drupal/profiles/standard/translations
# drupalディレクトリの権限変更
RUN chown -R apache:apache /var/www/html/drupal
# mysqldの起動、DB作成、ユーザ作成および権限設定、mysqldの停止
RUN service mysqld start && mysql -u root -e "CREATE DATABASE drupal_db; GRANT ALL PRIVILEGES ON drupal_db.* TO 'drupal'@'localhost' IDENTIFIED BY 'drupal123'; FLUSH PRIVILEGES;" && service mysqld stop
# mysqld,httpdの起動スクリプトの作成
RUN echo -e "service mysqld start\nservice httpd start\n/bin/bash" > /startService.sh
# mysqld,httpdの起動スクリプトの権限設定
RUN chmod o+x /startService.sh
# 公開ポート
EXPOSE 80
# mysqld,httpdの起動スクリプトの実行
CMD /startService.sh
3.Dockerfileを実行
コマンド
# docker build -t DockerHubアカウント名/drupal:ver7.41 ~/build_drupal
・
・
Successfully built 0c4e45b86bcd
4.コンテナーを起動
コマンド
# docker run -itd -p 8000:80 --name drupal741 DockerHubアカウント名/drupal:ver7.41
3ce407416874308af370951ecf56c77b53e2aa405ba20aae51593fd3a0e2e108
コンテナーのcommit
1.ブラウザ確認
「http://VirtualBoxのIPアドレス:8000/drupal/」にアクセスし、Drupalの管理画面が表示されることを確認
2.コンテナーを停止
コマンド
# docker stop drupal741
3.コンテナーを保存
コマンド
# docker commit drupal741 DockerHubアカウント名/drupal:ver7.41
cf75652d0f8a1509a5ad132ecf1214416c2b8dbf9fe9f93830ab8b51e738db73
4.コンテナーイメージを確認
コマンド
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
DockerHubアカウント名/drupal ver7.41 cf75652d0f8a 56 seconds ago 474.9 MB
docker.io/DockerHubアカウント名/centos centos6 ce76491a3be1 2 hours ago 190.6 MB
コンテナーイメージをDocker Hubにpush
1.Docker Hubにログイン
コマンド
# docker login
Username:
Password:
Email:
Login Succeeded
2.Docker Hubにコンテナーイメージをpush
コマンド
# docker push DockerHubアカウント名/drupal
Do you really want to push to public registry? [y/n]: y
The push refers to a repository [docker.io/DockerHubアカウント名/drupal] (len: 0)
・
・
Digest: sha256:97e3bd8b7ed451163af7284513d398c426c796451d343400a9859156c1a8c021
3.リポジトリーを確認
コマンド
# docker search DockerHubアカウント名
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/DockerHubアカウント名/drupal
コンテナーイメージを再ダウンロード
最後に全てのイメージと停止コンテナを削除して、pushしたDrupalのコンテナーイメージをダウンロードして起動してみましょう。
1.停止コンテナの一括削除
コマンド
# docker rm `docker ps -a -q`
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2.イメージの一括削除
コマンド
# docker rmi イメージID
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
3.Drupalのコンテナーイメージをダウンロード
コマンド
# docker pull -a DockerHubアカウント名/drupal
4.コンテナーを起動
コマンド
# docker run -itd -p 8000:80 --name drupal741 DockerHubアカウント名/drupal:ver7.41
5.ブラウザ確認
「http://VirtualBoxのIPアドレス:8000/drupal」にアクセスし、Drupalの管理画面が表示されることを確認
DrupalのMySQL情報
DB名:drupal_db
アカウント:drupal
パスワード:drupal123