Dockerが全くわからないので調べたメモ
Dockerのことが全くわからないので、少し調べたことをまとめてみました。
Dockerをインストール
Macの場合はInstall Docker for Macからインストールします。
アプリケーションのDockerを起動。
dockerコマンドが利用できるようになります。
docker
初心者の初期設定
使いこなせるようになるまでは以下の設定で良さそうです。
Dockerの構成
いまだによく仕組みがわからないのですが、正しくはないと思いますがこんな感じでしょうか。
原則として、1コンテナに1プロセス(nginx、phpなどなど)にしたほうがよいらしいです。
イメージはどこから入手するのか?
よく使われるイメージは Explore Official Repositories に揃っているようです。
Dockerコンテナを作成&起動
イメージからdockerコンテナを作成&起動してみたいと思います。
//docker run -d --name {コンテナの名前} {イメージ名} docker run --name sample nginx
docker ps
で起動中のコンテナを表示すると以下のようになりました。
-d
をオプションとしてつけた場合、バックグラウンドで実行することができます。
つけない場合は、その後コマンドの実行が同じターミナルでできなくなります(別窓でターミナルを立ち上げれば実行か可能)。
localhostでアクセスする
nginxのコンテナを起動してもlocalhostで表示することはできません。
だたし、作成時に-p
オプションでポートを転送するように指定することができるようです。
下はホストの80番ポートを、コンテナの80番ポートに転送した場合の表示です。
run -d -p 80:80 --name test nginx
localhostを表示すると以下のようになります。
8080のポートでアクセスしたい場合は、↓になります
run -d -p 8080:80 --name test nginx
コンテンナの中に入る
docker exec -it コンテナ名 /bin/bash
-i
はホストの入力をコンテナの標準出力をつなげる。
-t
はキーボードから入力した文字をコンテナ内のプロセスに送る
-it
のオプションは、シェル(bash)を起動して使えるようにするというイメージになるのでしょうか。
/bin/bash
は実行するコマンド。
必ずしも↑になるわけではないようです。
↓のようなエラーが出た際に/bin/sh
を実行すると起動できました。
exec: "/bin/sh": stat /bin/sh: no such file or directory
出るときは
exit
ホストのディレクトリをマウントする
コンテナ側のファイルをホスト側のファイルに同期します。
-v
オプションを利用します。
run -d -p 80:80 -v ホストのフォルダ:コンテナのフォルダ --name test nginx
Dockerfileでイメージを作成する
①Dockerfileを作成
Dockerfileを作成する(手動でもOK)
tocuh Dockerfile
以下のような感じにする。
# どのイメージを基にするか FROM php:7.2.7-apache # 作成したユーザの情報 MAINTAINER Admin <admin@admin.com> # RUN: docker buildするときに実行される RUN echo "now building..." # CMD: docker runするときに実行される CMD echo "now running..."
②ビルドする
docker build -t sample/php .
-t
はビルド成功時のメッセージを表示させる。
docker images
で作成したイメージを確認できる。
③イメージからコンテナを作成する
コンテナを作成する際に、ポートの指定と、ファイルのマウントも行います。
$(pwd)
はカレントディレクトリになります。
docker run -d -p 80:80 -v $(pwd):/var/www/html --name sample_php sample/php
④indexファイルを作成
カレントディレクトリにindex.phpを作成します。 このファイルが、コンテナの/var/www/html
にマウント(同期)されます。
<h1>ハローワールド</h1>
⑤localhostでアクセスする
↓の画面が表示される。
コマンド
コマンド | 説明 |
---|---|
docker version | バージョン情報 |
docker info | 動作状況 |
docker search {イメージ名} | イメージを探す |
docker pull {イメージ名} | イメージを取得 |
docker rmi {イメージ名} | イメージを削除 |
docker images | 取得済みのイメージ一覧 |
docker run {イメージ名} | コンテナの作成&起動 |
docker stop {コンテナ名} | コンテナの停止 |
docker start {コンテナ名} | コンテナの起動 |
docker restart {コンテナ名} | コンテナの再起動 |
docker ps | 実行中のコンテナ一覧 -aのオプションで停止中のコンテナも全て表示 |
docker rm {コンテナ名} | コンテナを削除 |
docker log {コンテナ名} | コンテナのログをみる |
参考
初心者による初心者のためのDocker入門 その1 dockerコマンド編
Dockerの開発環境構築 (Mac + Docker + PHP + Apache)