Dockerfileでコンテナ破壊しほうだい
目的
Dockerfileでコンテナイメージを作成、管理し、破壊しても同じ環境が構築できるようにします
環境
OS:Windows 10 Pro
Docker Desctop:4.9.1
Docker:20.10.16
※Docker Desctopの起動をお忘れなく。
コンテナ起動状況、イメージ確認
docker ps -a
docker images
コンテナは何も動いていません。イメージはamazon linuxのlatestバージョンがあります。
Dockerfileを作ってみる
Dockerfileはコンテナイメージを自分でつくる。テキストファイルの設計図です。
コンテナイメージを改造して新しいイメージを作成することができます
公式のDockerfileはこちら
Dockerfileは拡張子がありません。ファイル名はDockerfileとなります
amazon linux + nginxのコンテナイメージを作るコマンドをDockerfileに記載します。
FROM amazonlinux:2
# install amazon-linux-extras
RUN amazon-linux-extras install -y
# install nginx
RUN amazon-linux-extras install nginx1 -y
# open port 80
EXPOSE 80
# container cmd Nginxを起動します
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
Dockerfileのコマンド
FROM amazonlinux:2:改造する基のコンテナイメージです。
RUN amazon-linux-extras install -y:FROMの中でコマンドを実行します。
RUN amazon-linux-extras install nginx1 -y:FROMの中でコマンドを実行し、Nginxをインストールします。
EXPOSE 80:公開するポートを指定 ※Nginxへ接続したいので80ポートを公開します
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]:FROMで指定されたコンテナを起動する時に実行するコマンドです。 ※バックグラウンドでNginxを起動します。
Dockerfile.txtになった
windowsのメモ帳でDockerfileを作成すると「Dockerfile.txt」で保存される場合があります。この場合.txtを削除してください。
Dockerfileからコンテナイメージをbuildします
作成したDockerfileが保存されているフォルダでコマンドを実行し、buildしてコンテナイメージを作成します。
docker build --no-cache -t al2_nginx:latest .
新しいal2_nginx:latestのコンテナイメージが出来上がりました
docker buildコマンド
build:コンテナイメージを作成します
--no-cache:コンテナイメージを作成する際、前回の情報(cache)を利用しません
-t:コンテナイメージの名前:タグを指定する「コンテナイメージ:latest」
al2_nginx:latest:コンテナイメージ名を「al2_nginx:latest」と名付ける
.:Dockerfileを指定する。「.」はdocker buildコマンドを発行するディレクトリにDockerfileが存在します。に、なります。
al2_nginxコンテナを起動します
docker run -d --name al2_nginx -t -p 80:80 al2_nginx:latest
無事、al2_nginx:latestが起動できました
※コマンドのoptionについてはこちらの記事にまとめました
http://localhost/へアクセスします
ブラウザに
正常に接続できました。
コンテナを抹殺します
コンテナを抹殺します
docker stop al2
docker rm al2
を実施すれば抹殺できます。前回紹介した記事DockerでNginxを起動する(amazon linuxバージョン)では、コンテナを抹殺したらインストールしたNginxはなくなり、新たにコンテナを作成したらNginxをインストールしなければなりませんでした。
Dockerfileを作成し、amazon linuxにNginxをインストールしたコンテナイメージを作成しておけば、# al2_nginxコンテナを起動しますからコマンドを叩くだけでNginxがインストールされたamazon linuxのコンテナを起動することができます。
これで破壊し放題です。
最後までお読みいただき、ありがとうございます。
今回はDockerfileを作って、自分だけのコンテナイメージを作成しました。
コンテナイメージを作成しておけば、起動したコンテナを何度でも抹殺できますね。
別の記事でdocker-composeを紹介する予定です。
よろしければ「***の説明、下手っぴ」や「***の言い回し変」など
ご意見、ご批判頂ければ幸いです。
Discussion