■ はじめに
https://dk521123.hatenablog.com/entry/2022/01/14/102719
の続き。 今回は、DockerコマンドからWebサーバ(Nginx, Apache)を起動してみる。
目次
【0】今回で学べること 【1】Nginx 1)nginx起動 2)コンテナ停止 【2】Apache 1)コンテナの作成と実行 2)実行状態の確認 3)動作確認 4)コンテナの停止 5)コンテナの再開 6)後片付け
【0】今回で学べること
Items | Explanation |
---|---|
docker container run | コンテナ起動 |
docker container ps | 作成したコンテナの実行状態を確認 |
docker container stop | コンテナの停止 |
docker container start | コンテナの開始 |
docker container rm | コンテナの削除 |
docker image ls | コンテナイメージの確認 |
【1】Nginx
* Dockerコマンドを使用して、nginxサーバを構築する
1)nginx起動
# 以下の一行だけ(!!?) docker container run -p 8080:80 nginx # 以下のURLをブラウザで表示してみる
解説:docker container run [サービス]
... 対象サービスのコンテナを起動する * docker container run nginx => nginx起動 * -p 8080:80 => ポート80を8080として公開
2)コンテナ停止
docker container stop nginx docker container rm nginx
【2】Apache
1)コンテナの作成と実行
* コンテナを作成して実行する => docker container runコマンドを使う => docker run でも同じ意味
構文
docker container run --name <ContainerName> <ImageName> <実行したいコマンド>
コマンド例
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 <ホストのポート>:<コンテナのポート> * ホストのポートとコンテナのポートを指定 => 詳細は、後述「補足:コンテナとの通信」を参照 * -v マウント先やボリューム名:コンテナのディレクトリ * コンテナのディレクトリを、特定のディレクトリにマウント * --volume でもいい
補足:コンテナとの通信
* Apacheが設定されているコンテナに対して、 ブラウザでアクセスするには、外界と接続する設定が必要。 => 母体となる物理マシンのポートとコンテナのポートを紐づけるために 「-p <ホストのポート>:<コンテナのポート> (e.g. -p 8080:80)」を指定する
2)実行状態の確認
* 作成したコンテナの実行状態を確認する => docker container psコマンド を使う => docker ps / docker container lsでも同じ意味
コマンド例
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
オプション
* -a オプション: 停止中のコンテナも含めて表示する
3)動作確認
[1] /tmp配下に、任意のHTMLファイルを置く => 以下「例」参考 [2] ブラウザでそのファイルにアクセスしてみる => 例の場合、http://localhost/hello.html
例
vi /tmp/hello.html ~~~~ <html> <body> <h1>Hello, Docker Container</h1> </body> </html> ~~~~
4)コンテナの停止
構文
docker stop <ContainerName>
コマンド例
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)コンテナの再開
構文
docker start <ContainerName>
コマンド例
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)後片付け
コンテナ廃棄
* コンテナを破棄する => docker container rmコマンドを使う
コマンド例
# 停止させてから削除する docker container stop hello-apache docker container rm hello-apache
イメージ破棄
* 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 ~ 基本編 / docker network ~
https://dk521123.hatenablog.com/entry/2022/04/30/000000
Docker ~ 基本編 / Data Volume ~
https://dk521123.hatenablog.com/entry/2018/09/08/222100
Docker ~ 基本編 / Dockerfile ~
https://dk521123.hatenablog.com/entry/2020/04/14/000000
Docker ~ 基本編 / dockerコマンド ~
https://dk521123.hatenablog.com/entry/2020/04/13/000000
Docker ~ 基本編 / docker container コマンド ~
https://dk521123.hatenablog.com/entry/2022/01/20/000000
Docker ~ GO言語 ~
https://dk521123.hatenablog.com/entry/2022/01/14/102719
Docker ~ WordPress ~
https://dk521123.hatenablog.com/entry/2022/04/29/000000
Docker ~ docker-compose ~
https://dk521123.hatenablog.com/entry/2020/04/11/000000
学習用クラウドサービス ~ katacoda ~
https://dk521123.hatenablog.com/entry/2021/07/15/211044