🛸

Dockerfileでコンテナ破壊しほうだい

2022/06/24に公開

目的

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