【Docker】クラウドサーバーでLAMP環境構築してみたpart1

参考にさせていただいたページはこちら

PHP+Apacheを使う


・コンテナを作成、起動

[root@dev381 ~]# docker run -d php:5.6-apache

・イメージが作成されているか確認

[root@dev381 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/php 5.6-apache 2d4c03fc6240 5 days ago 376.8 MB
docker.io/centos centos6 30365b2e827c 8 weeks ago 194.7 MB

centos6のほうはあらかじめ入れていたので無視

・コンテナが起動しているか確認
[root@dev381 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
149b3d174530 php:5.6-apache “docker-php-entrypoin” 11 hours ago Up 11 hours 80/tcp jolly_wozniak

・一度アクセスしてみる
[root@dev381 ~]# wget localhost
–2017-06-08 13:14:49– http://localhost/
Resolving localhost (localhost)… 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:80… failed: Connection refused.

ダメなことを確認

コンテナを削除しておく

docker rm -f コンテナID

一気に全部消すならこれ

docker rm -f $(docker ps -a -q)

・ホスト側とコンテナ側のポートを対応させて再度コンテナを作成
[root@dev381 ~]# docker run -p 80:80 -d php:5.6-apache
7397ad3831a5ba64e4c253c7f9e5e82b66167967f1577271616ad4f0a65aac77

・コンテナが起動しているか確認
[root@dev381 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7397ad3831a5 php:5.6-apache “docker-php-entrypoin” 6 seconds ago Up 5 seconds 0.0.0.0:80->80/tcp hungry_payne
149b3d174530 php:5.6-apache “docker-php-entrypoin” 11 hours ago Up 11 hours 80/tcp jolly_wozniak

・もう一度アクセスしてみる
[root@dev381 ~]# wget localhost
–2017-06-08 13:15:41– http://localhost/
Resolving localhost (localhost)… 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:80… connected.
HTTP request sent, awaiting response… 403 Forbidden
2017-06-08 13:15:41 ERROR 403: Forbidden.

Connection refusedではなく403 Forbidenと来たのでとりあえずアクセスはできてるが

ファイル(index.php)がないので怒られている状態

apacheにアクセスできたという確認はできた

・コンテナのディレクトリとホストのディレクトリを結び付けるための準備

[root@dev381 ~]# mkdir /docker
[root@dev381 ~]# mkdir /docker/www
[root@dev381 ~]# vi /docker/www/index.php

以下記述して保存

<?php phpinfo();

・コンテナのディレクトリとホストのディレクトリを結びつけた状態でコンテナを作成・起動

以下ホスト側の/docker/wwwをコンテナ内の/var/www/htmlと対応させてコンテナを作る

コンテナ内に作ってしまうとコンテナを削除したときに再度index.phpファイルを作成しなければいけなくなります

なのでホスト側に作ってそのファイルがあるディレクトリとコンテナのディレクトリを対応させるようにしましょう

[root@dev381 ~]# docker run -p 80:80 -v /docker/www:/var/www/html –name php -d php:5.6-apache
2b8e578875959a16f60e45eec11f00431c9909c5bf731d20b5920789308d5831
[root@dev381 ~]# docker run –name mysql -e MYSQL_ROOT_PASSWORD=1212s360r180_ -d mysql:5.7
Unable to find image ‘mysql:5.7’ locally
Trying to pull repository docker.io/library/mysql …
5.7: Pulling from docker.io/library/mysql

10a267c67f42: Already exists
c2dcc7bb2a88: Pull complete
17e7a0445698: Pull complete
9a61839a176f: Pull complete
a1033d2f1825: Pull complete
0d6792140dcc: Pull complete
cd3adf03d6e6: Pull complete
d79d216fd92b: Pull complete
b3c25bdeb4f4: Pull complete
02556e8f331f: Pull complete
4bed508a9e77: Pull complete
Digest: sha256:2f4b1900c0ee53f344564db8d85733bd8d70b0a78cd00e6d92dc107224fc84a5
705916e8298e0d642ecb05538e70b64e75acd2f92f43ab55c790665420e03245

実際は上記の赤字の部分とホスト側にindex.phpファイルを作成する下準備だけで環境作成はオッケーです


次にMySQLイメージを使う


・コンテナを作成、起動

[root@dev381 ~]# docker run –name mysql -e MYSQL_ROOT_PASSWORD=pass-d mysql:5.7
Unable to find image ‘mysql:5.7’ locally
Trying to pull repository docker.io/library/mysql …
5.7: Pulling from docker.io/library/mysql

10a267c67f42: Already exists
c2dcc7bb2a88: Pull complete
17e7a0445698: Pull complete
9a61839a176f: Pull complete
a1033d2f1825: Pull complete
0d6792140dcc: Pull complete
cd3adf03d6e6: Pull complete
d79d216fd92b: Pull complete
b3c25bdeb4f4: Pull complete
02556e8f331f: Pull complete
4bed508a9e77: Pull complete
Digest: sha256:2f4b1900c0ee53f344564db8d85733bd8d70b0a78cd00e6d92dc107224fc84a5
705916e8298e0d642ecb05538e70b64e75acd2f92f43ab55c790665420e03245

・作成したコンテナの中に入る
[root@dev381 ~]# docker exec -ti mysql bash
root@705916e8298e:/#

・MYSQLの操作をできるようにする

root権限で実行しましょう

でないと怒られると思います

root@705916e8298e:/# mysql -ppass -u root -p
mysql: [Warning] Using a password on the command line interface can be insecure.
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.7.18 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql>

ここまでできたらもとのホストに戻ろう
mysql> exit
Bye
root@705916e8298e:

コンテナから抜けるにはCtr + Pを押してからCtr + Qと押す

root@705916e8298e:/# [root@dev381 ~]#

これでホストに戻れました


次回はPHPとMySQLの連携をしていきます

シェアする

  • このエントリーをはてなブックマークに追加

フォローする