【Docker】Docker ~ 入門編 / Apache ~

■ はじめに

https://dk521123.hatenablog.com/entry/2022/01/14/102719

の続き。

今回は、DockerコマンドからApacheを起動してみる。

目次

【1】コンテナの作成と実行
 1)構文
 2)コマンド例
 3)補足:コンテナとの通信
【2】実行状態の確認
 1)コマンド例
 2)オプション
【3】動作確認
【4】コンテナの停止
 1)構文
 2)コマンド例
【5】コンテナの再開
 1)構文
 2)コマンド例
【6】後片付け
 1)コンテナ廃棄
 2)イメージ破棄

【1】コンテナの作成と実行

* コンテナを作成して実行する
 => docker container runコマンドを使う
 => docker run でも同じ意味

1)構文

docker container run --name <ContainerName> <ImageName> <実行したいコマンド>

2)コマンド例

docker container run --name hello-apache -d -i -t -p 80:80 -v /tmp:/usr/local/apache2/htdocs httpd

-d

* デタッチモード (バックグラウンドで実行)

-i

* インタラクティブ(--interactive)
 => 標準入出力/標準エラー出力をコンテナに連結する

-t

* 疑似端末を割り当てる(--tty)
 => 疑似端末(pseudo-tty)とは、
  カーソル移動や文字削除などの文字入力をサポートする端末

-p <ホストのポート>:<コンテナのポート>

* ホストのポートとコンテナのポートを指定
 => 詳細は、後述「3)補足:コンテナとの通信」を参照

-v マウント先やボリューム名:コンテナのディレクト

* コンテナのディレクトリを、特定のディレクトリにマウント
* --volume でもいい

3)補足:コンテナとの通信

* Apacheが設定されているコンテナに対して、
 ブラウザでアクセスするには、外界と接続する設定が必要。
 => 母体となる物理マシンのポートとコンテナのポートを紐づけるために
  「-p <ホストのポート>:<コンテナのポート> (e.g. -p 8080:80)」を指定する

【2】実行状態の確認

* 作成したコンテナの実行状態を確認する
 => docker container psコマンド を使う
 => docker ps / docker container lsでも同じ意味

1)コマンド例

docker container ps

CONTAINER ID   IMAGE     COMMAND              CREATED         STATUS         PORTS                               NAMES
2c97a8027ebc   httpd     "httpd-foreground"   9 minutes ago   Up 9 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   hello-apache

2)オプション

「-a」オプション

停止中のコンテナも含めて表示する

【3】動作確認

[1] /tmp配下に、任意のHTMLファイルを置く
 => 以下「例」参考
[2] ブラウザでそのファイルにアクセスしてみる
 => 例の場合、http://localhost/hello.html

vi /tmp/hello.html
~~~~
<html>
<body>
<h1>Hello, Docker Container</h1>
</body>
</html>
~~~~

【4】コンテナの停止

1)構文

docker stop <ContainerName>

2)コマンド例

docker stop hello-apache

$ docker container ls
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

$ docker container ls -a <= 停止含めて表示
CONTAINER ID   IMAGE         COMMAND              CREATED          STATUS                      PORTS     NAMES
2c97a8027ebc   httpd         "httpd-foreground"   24 minutes ago   Exited (0) 14 seconds ago             hello-apache
22d971fb7ad4   hello-world   "/hello"             24 hours ago     Exited (0) 24 hours ago               flamboyant_hertz

【5】コンテナの再開

1)構文

docker start <ContainerName>

2)コマンド例

docker start hello-apache

$ docker container ls
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS         PORTS                               NAMES
2c97a8027ebc   httpd     "httpd-foreground"   30 minutes ago   Up 8 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   hello-apache

【6】後片付け

1)コンテナ廃棄

* コンテナを破棄する
 => docker container rmコマンドを使う 

コマンド例

# 停止させてから削除する
docker container stop hello-apache

docker container rm hello-apache

2)イメージ破棄

コマンド例

# イメージの確認 ... docker image lsコマンド
$ docker image ls
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
httpd         latest    a8ea074f4566   4 weeks ago    144MB
hello-world   latest    feb5d9fea6a5   5 months ago   13.3kB

docker image rm httpd

参考文献

https://codezine.jp/article/detail/12831

関連記事

Docker ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/24/160044
Docker ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2017/09/23/235818
Docker ~ Linux / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2018/04/10/234030
Docker ~ 入門編 / GO言語 ~
https://dk521123.hatenablog.com/entry/2022/01/14/102719
Docker ~ 入門編 / WordPress
https://dk521123.hatenablog.com/entry/2022/04/29/000000
Docker ~ 基本編 / docker network ~
https://dk521123.hatenablog.com/entry/2022/04/30/000000
Docker ~ 基本編 / Dockerfile ~
https://dk521123.hatenablog.com/entry/2020/04/14/000000
Docker ~ 基本編 / dockerコマンド ~
https://dk521123.hatenablog.com/entry/2020/04/13/000000
Docker ~ 基本編 / docker-compose ~
https://dk521123.hatenablog.com/entry/2020/04/11/000000
Docker ~ Data Volume ~
https://dk521123.hatenablog.com/entry/2018/09/08/222100
学習用クラウドサービス ~ katacoda ~
https://dk521123.hatenablog.com/entry/2021/07/15/211044