コンテナの作成
Apache のコンテナを作成します。
docker run --name apache -d -p 8080:80 httpd
docekr run コマンドは、コンテナを作成し、起動するコマンドです。イメージがない場合は、イメージのダウンロードも行います。
docker create、docker start、docker pullといったコマンドがありますが、一般的には、docker runを使います。
docker run コマンドで単一のApacheコンテナを自動起動させるには、以下のコマンドを実行します。
docker run -d --name apache -p 8080:80 --restart always httpd:latest
「 --restart always 」 が自動起動を設定する重要なフラグです。 Dockerデーモンが起動したとき、またはコンテナが終了したときに、常にコンテナを再起動させます。
「 httpd:latest 」は、最新の Apache の公式イメージを指定します。
ホストから接続する
http://<IPアドレス>:8080
※ VirtualBox に AlamLinux をインストールし、Apache のコンテナを作成しています。
コンテナ内に入って設定ファイルを確認・編集する
コンテナに入る(bash シェル起動)には、以下のコマンドを実行します。
docker exec -it apache bash
設定ファイルを開くには、以下のようにします。
cat /usr/local/apache2/conf/httpd.conf
Apache の公式イメージには、vi や nano などのエディタは入っていないのでローカルで編集 & マウントすることになります。
もし、コンテナにツールを入れて編集し内容を反映させたい場合は、Apache の再起動を行います。再起動するには、コンテナを再起動するか、もしくは、コンテナ内で httpd を再起動します。
# コンテナ再起動
docker restart apache
# bash
httpd -k restart
この方法では、コンテナを削除した場合、コンテナ内の変更はすべて消えます。「 docker restart(再起動)」なら設定は残りますが、再作成時にはリセットされます。
ここで説明したコンテナ内で直接編集する方法は、一時的な確認・テスト用に限ります。
設定の変更の永続化
設定の変更の永続化するには、設定ファイルをホスト側に保存してマウントします。
設定ファイルをコピーして編集します。
docker cp apache:/usr/local/apache2/conf/httpd.conf ./my-httpd.conf
コピーしたファイルを編集します。
編集したファイルをコンテナ起動時にマウントします。
docker run -d --name apache -p 8080:80 \
-v "$PWD/my-httpd.conf":/usr/local/apache2/conf/httpd.conf \
httpd
この方法なら、ホスト側でファイルを編集すれば内容は常に反映され、再作成しても消えません。
コンテナ内から抜ける
「 docker exec -it コンテナ名 bash 」のコマンドを実行し、コンテナのシェルに入った場合、コンテナ内から抜けるには、以下のコマンドを実行します。
exit
コンテナを停止する
docker stop apache
停止した後、再度起動するには、以下のコマンドを実行します。
docker start apache
コンテナ作成
Apache
docker run -d -p 8080:80 --name apache httpd
Nginx
docker run -d -p 8080:80 --name nginx nginx
MariaDB
docker run --detach --name mariadb --env MARIADB_ROOT_PASSWORD=password -p 3306:3306 mariadb:latest
ホストOSに mysql クライアントをインストールして接続します。
AlamaLinux に mysql クライアントをインストールするには、以下のコマンドを実行します。
sudo dnf install -y mariadb
コンテナの MariaDB に接続するには、以下のコマンドを実行します。
mysql -h 127.0.0.1 -P 3306 -u root -p
「 --env MARIADB_ROOT_PASSWORD=xxxxx 」は、MariaDB の root ユーザーのパスワードを設定するための環境変数です。
MARIADB_ROOT_PASSWORD を省略すると、MariaDB はセキュリティ上の理由で起動しません。