自分のなかで一段落したので Docker
についてまとめる
正直全然理解できていないけど
自分の感じたことが中心なので間違っているかもです
勉強させて頂いた教材は以下
Docker とは
・自分の中では環境構築の Github
というイメージ
・hub上 にイメージという雛形を上げることで他の人と環境が共有できる
・環境をコード化するのでチーム開発では必須
・開発環境と本番環境をほとんど同じ条件で実装できる
・故にモダンな企業ではほとんどの割合でつかわれているとのこと
参考 Docker超入門②〜Dockerの始め方〜【初心者向け】
流れは上の画像のとおり
① Dockerfile
という 環境の設計図からイメージを作成
②その後コンテナというものを作成
③コンテナ内に再現性のある環境が構築される
Dockerfile とは
・共有する環境の設計図
・共有したいフォルダと同じ階層に作成
・ビルドすることで共有するフォルダのイメージ(環境の雛形)が作成される
ソースコードの一例は以下
FROM ruby:2.7
ENV RAILS_ENV=production
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
&& apt-get update -qq \
&& apt-get install -y nodejs yarn
WORKDIR /app
COPY ./src /app
RUN bundle config --local set path 'vendor/bundle' \
&& bundle install
COPY start.sh /start.sh
RUN chmod 744 /start.sh
CMD ["sh", "/start.sh"]
参考 Docker超入門講座 合併版 | ゼロから実践する4時間のフルコース
イメージ コンテナとは
・Dockerhub
というサービス上からイメージをローカル上にインストールして使う
・ubuntu
などの OS
や postgresql
MySQL
などのミドルウェア
ruby
PHP
などのプログラミング言語などがイメージにある
・Dockerfile
からイメージをつくるということは
Dockerhub
からソフトウェアをインストールするということ
・そしてそのイメージからコンテナを立ち上げることで
作業環境をコンテナ内に再現する
コンテナと仮想マシンの違い
個人的にわかりやすいのは以下
参考 Docker超入門①〜Dockerってなに?〜【初心者向け】
・がっつりリソースをつかうのが VM
省エネなのが Docker
・VM
は windows
の pc
ゲームができる Docker
では mac
では window
の pc
ゲームができない
学習するメリット・デメリット
メリット
・インフラの知識がつく
・AWS
や heroku
が怖くなくなる
・インターネットの知識もつく
・将来的にテストの自動化とかするなら知識が必須
・つまり就職してからも必須となると思われる
・就活での評価が高いらしい
デメリット
・学習コストがかかる
・よくわからないことが多く、心が折れる
正直言うとこれが全て
その他
・Docker-machine
とか docker-compose
とか Docker-swarm
とかそのへんはまだよくわかっていない
・VPC
とかも本当によくわかっていない。インターネットの基本的な知識が不足している
・開発で実際使ってみてのメリットはまだよくわからない