windowsでdockerをインストールして、LAMP環境を構築。WordPressをインストールしてみる。
仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん
1, windowsにdockerをインストール
https://docs.docker.jp/docker-for-windows/install.html
2, dockerでコンテナ(webサーバ)を、生成・動作・確認・削除してみる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# httpd(apacheサーバのimage)からコンテナ生成&起動。-dはバックグラウンド実行 docker run --name apa000ex1 -d httpd # 動作しているコンテナを表示 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 86ac0d391e56 httpd "httpd-foreground" 19 seconds ago Up 17 seconds 80/tcp apa000ex1 # コンテナを名指しで停止 docker stop apa000ex1 # もう動作しているコンテナが無い事を確認 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES # 動作していないコンテナ一覧で、生成されている事を確認 docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 86ac0d391e56 httpd "httpd-foreground" 3 minutes ago Exited (0) About a minute ago apa000ex1 # 生成したコンテナを破棄 docker rm apa000ex1 apa000ex1 # 動作していないコンテナ一覧で、削除されている事を確認 docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
3, コンテナと通信(ブラウザでapacheを見てみる)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# httpd(apacheサーバのimage)からコンテナ生成&起動。-dはバックグラウンド実行 -pで外部ポート:内部ポートを指定 docker run --name apa000ex2 -d -p 8080:80 httpd # ポートを確認。http://localhost:8080/ で It works!が表示されればOK docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 46da513fe489 httpd "httpd-foreground" 22 seconds ago Up 21 seconds 0.0.0.0:8080->80/tcp apa000ex2 # コンテナ停止。http://localhost:8080/ で「このサイトにアクセスできません」 docker stop apa000ex2 #コンテナ削除 docker rm apa000ex2 apa000ex2 |
4, Webサーバを3台同時に立ち上げてみる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# コンテナ生成&起動 docker run --name apa000ex3 -d -p 8081:80 httpd docker run --name apa000ex4 -d -p 8082:80 httpd docker run --name apa000ex5 -d -p 8083:80 httpd # 起動確認 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ff424098670f httpd "httpd-foreground" 6 seconds ago Up 4 seconds 0.0.0.0:8083->80/tcp apa000ex5 c871cbf3e1ee httpd "httpd-foreground" 6 seconds ago Up 5 seconds 0.0.0.0:8082->80/tcp apa000ex4 fbdc39846de2 httpd "httpd-foreground" 7 seconds ago Up 5 seconds 0.0.0.0:8081->80/tcp apa000ex3 # ポート別にWebサーバが3台起動している。 # http://localhost:8081/ # http://localhost:8082/ # http://localhost:8083/ #コンテナ停止 docke stop apa000ex3 docke stop apa000ex4 docke stop apa000ex5 # コンテナ削除 docker rm apa000ex3 docker rm apa000ex4 docker rm apa000ex5 apa000ex3 # nginxでも、名前が変わるだけで、全く同じ操作でOK! # 最初はイメージが無いのでDocker Hubからダウンロードしてくる docker run --name nginx000ex6 -d -p 8081:80 nginx Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx .... |
5, DBサーバのMySQLを立ち上げてみる。rootのパスワードは必須。
1 2 3 |
docker run --name mysql000ex7 -dit -e MYSQL_ROOT_PASSWORD=myrootpass mysql Unable to find image 'mysql:latest' locally latest: Pulling from library/mysql |
6, 不要なイメージはディスク容量を圧迫するので、必要に応じてイメージを削除する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# ローカルにあるDockerイメージ一覧を表示 docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 92b11f67642b 4 weeks ago 187MB mysql latest 019814493c7a 7 weeks ago 632MB httpd latest ac45b24b92cc 8 weeks ago 167MB ...... # コンテナが起動していると、参照されている!とエラーになるので、コンテナ停止&コンテナ削除 docker stop nginx000ex6 docker rm nginx000ex6 # 先ほどダウンロードされたnginxイメージを削除 docker image rm nginx |
7, WORDPRESSコンテナ・MySQLコンテナ・Dockerネットワークを作ってみる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# 適当な名前で、ネットワーク生成 docker network create wordpress000net1 be98f6e4f32803ab68353305c68d56061b6992a31eec50c5f1306a07946767be # ネットワーク一覧 docker network ls NETWORK ID NAME DRIVER SCOPE be98f6e4f328 wordpress000net1 bridge local # MySQLコンテナ生成&起動(ネットワーク指定、ユーザ生成&DBインスタンス生成してDB接続情報、文字コードなどを指定) docker run --name mysql000ex11 -dit --net=wordpress000net1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=wordpress000db -e MYSQL_USER=wordpress000kun -e MYSQL_PASSWORD=wkunpass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password docker run --name mysql000ex11 -dit --net=wordpress000net1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=wordpress000db -e MYSQL_USER=wordpress000kun -e MYSQL_PASSWORD=wkunpass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password # 次はWORDPRESSコンテナ生成&起動(ネットワーク指定、DB指定、DBインスタンス指定、DB接続情報、などを指定) # apacheとphpも、一緒に入っている docker run --name wordpress000ex12 -dit --net=wordpress000net1 -p 8085:80 -e WORDPRESS_DB_HOST=mysql000ex11 -e WORDPRESS_DB_NAME=wordpress000db -e WORDPRESS_DB_USER=wordpress000kun -e WORDPRESS_DB_PASSWORD=wkunpass wordpress docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1c53a7277ced mysql "docker-entrypoint.s…" 6 seconds ago Up 6 seconds 3306/tcp, 33060/tcp mysql000ex11 c7298793809f wordpress "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:8085->80/tcp wordpress000ex12 |
オプションがハイフンが1つだったり2つだったり、イコールで結んだり、スペース区切りだったり、ややこしい!!
http://localhost:8085/
Error establishing a database connection
ブラウザでアクセスしたらDB接続できないエラー(WORDPRESS_DB_PASSWORDT=wkunpassと、最後に大文字のTが入っていた…。エラーにならないのか!?)
wordpressコンテナを停止&削除して、作り直したらWordPressのインストール画面まで行けた!