ラボ > サーバ:Docker

Docker 諸々のメモ

コンテナを探したり、自動起動の絡みだったり・・・そもそもイメージとコンテナって何?だったり。

作成日: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」のダッシュボード(?)より