作成日:2020-10-20, 更新日:2021-05-28
イメージとコンテナ
「イメージ」と「コンテナ」が何を指すのかを理解するのが面倒だし、ニュアンスだけ分かればいい。
▼ニュアンス程度ならこの言葉が分かりやすい
イメージからコンテナを作成する
▼つまりこんな感じ(・・・推測レベルです)
・「.yml」のファイルや最初に用意するファイルやフォルダが「イメージ」。
・「.yml」から出来上がった環境が「コンテナ」
環境の元(イメージ?)
・「Docker LAMP環境を用意する」に諸々記載した。
でも、環境の元なら「Garyuten / dockker-lamp-php5.6」が使い勝手はいい。
→PHP5、7のどちらにでも変更できるようになっている(※PHP7にする場合は、mysql-dbをmaria-dbに変更する必要アリ)
「dockker-lamp-php5.6」で、PHP7にしたい
PHP7はmysqlじゃなくmariadbになる
▼「web/Dockerfile」の中にある「FROM php」ってトコをに書き換える
FROM php:7.1-apache
▼「web/Dockerfile」の中にある「apt-get -y install」ってトコの「mysql」のトコを「mariadb-client」に書き換える
apt-get -y install vim wget lsb-release libicu-dev mariadb-client
「dockker-lamp-php5.6」で、PHPでマルチバイト関連の関数
▼「web/Dockerfile」の中にある「docker-php-ext-install」ってトコに「mbstring」を追加
docker-php-ext-install pdo_mysql mysqli intl mbstring
「docker-compose up」
・コンテナの作成と開始をしてくれる。
・「作成のみ」「開始のみ」もあるけど割愛(※「docker-compose --help」で確認)
「docker-compose up」と「docker-compose up -d」
・「-d」をつけない入力状態に戻らず、ログ(?)がコンソール上で監視しているっぽい?
・「-d」をつけると入力状態に戻る
Dockerfileを修正→更新したい
初回に関しては「docker-compose up」でOKだけど、それ以降は「--build」をつけてやる
> docker-compose up --build
※「build」が「構築( or 再構築)」になる
コンテナの自動起動
Docker(or PC?)起動時に任意のコンテナを起動させたい
・「--restart」を使う
▼自動起動の解除
> docker update --restart=no コンテナ名
▼自動起動の設定
> docker update --restart=always コンテナ名
コンテナを探す
▼grepコマンドが使える場合
> docker inspect -f "{{.Name}} {{.HostConfig.RestartPolicy.Name}}" $(docker ps -aq) | grep always
▼grepコマンドが使えない場合(一覧を出力して目視)
> docker inspect -f "{{.Name}} {{.HostConfig.RestartPolicy.Name}}" $(docker ps -aq)
→「コンテナ名 always」となっているトコを探す
エラー:unknown shorthand flag: 'a' in -aq)
▼「docker inspect」を使うと下記のようエラーが出てくる
unknown shorthand flag: 'a' in -aq) See 'docker inspect --help'.
・原因は「CMD」で実行したため。
・解決策は「Windows PowerShell」で実行する。
雑記
私の場合「Docker Desktop for Windows」を使っているので開始・停止はGUI、作成・更新はコンソールと使い分けている
▼コンテナ作成+開始(コンソールで実行)
> docker-compose up -d
▼コンテナ作成済み+Dockerfileを修正+開始(コンソールで実行)
> docker-compose up --build -d
▼コンテナの起動(GUIで実行)
「Docker Desktop for Windows」のダッシュボード(?)より
▼コンテナの停止(GUIで実行)
「Docker Desktop for Windows」のダッシュボード(?)より