Dockerややこしポイント
RUN? START? BUILD? 何で何してるかわからん
最初Dockerというものを知ったときに持っていた印象は
「なんか好き勝手遊ぶ環境が手に入るんだろうなぁ」でした
実際そうはそうなのですがその遊ぶ環境(コンテナ)を手に入れるために取る手順がよくわからず困ったので
それについて簡単に覚書を書いておきます。
とりあえず用語をまとめておく
- Image
コンテナを立ち上げるための情報が詰まったもの
こいつ自体はDockerHub とかからでも引っ張って来れるしDockerfileから作ることも可能
- Docker file
Imageを作るための定義書
DockerHubにあるイメージもみんなが自分の環境でBuildしたDockerfileのImageをあげてる
人のやつ使ったことないからわかんないけど多分すごいんでしょう
- Build
Docker FileからImageを作るためのコマンド
こいつを最初見た時からこのコマンドでコンテナを立ち上げると思ってしまってずっとDokcer FileとImageの関係性がわからなかった
こいつはコンテナの元になるImageを作るだけ!
- RUN
コンテナを立ち上げてスタートさせるコマンド
こいつもこいつでややこしい名前
このコマンドでやっとImageからコンテナを立ち上げて起動することができる
いきなりDocker File作ろうとするな
小生基本的にアプリケーションばかり作ってきた人間ですのであまりLinuxについて詳しくありませんでした。
最近になってコマンド打ちながら頭の中でPCの状態を思い描けるくらいの感じ
なのでいきなりDokcer FIle作って環境のImage作るぜ!ってなってもいまいちイメージが掴めずあたふたしちゃいました
なので初めてDocker FIle作るよ〜って人は一回基本のImageだけパクってきて
それでRUNしてコンテナの中入ってその中でわちゃわちゃインストールするのを試してみるのがいいと思います。
実際初めて作った時のコードまとめておきます。
# ポート開けたpython3のImageからpython_1stっていうコンテナを立てた
docker run -d -it -p 8080:80 --name python_1st python:3
# コンテナの中に入った
docker exec -it python_1st /bin/bash
# UbuntuだったのでaptをUpdate
apt update -y
# Djangoをインストール
pip3 install Django
# Nginxをインストール
apt install -y nginx
# HTML直接書くためにHTMLをインストール
apt install -y vim
# HTMLをvimで作ってHello Worldだけ書く
vim /var/www/html/test.html
# Nginxを起動させる
service nginx start
# HTMLがChromeで確認できたら閉じる
service nginx stop
こんな感じ
でも毎回こんなんするんだるいからこれらのupdateしたりinstallしたりした結果をImageとして
Docke Fileから作ってそのImageでコンテナを立ち上げることでこれらの処理をなくして毎回同じ環境を作れるようにするというのがDockerの魅力の一つっぽい
頭の中スッキリしたのでいったんここでまたオリジナルDockerFile作り終わったら続き書くかも