LoginSignup
2
0

【保存必須】Dockerが全然わからなかった僕が出会った神書籍とそのまとめ

Posted at

Docker.png

はじめに

現在の仕事で、Dockerに関する業務がありました。

開始当初はDockerというものが全くわからず大変苦戦していましたが、本屋で出会った神書籍によってDockerについての理解がかなり深まり、自分でDocker環境を構築することができるレベルまでになりました。

その書籍の紹介とその本で学んだDockerについての知識をまとめたいと思います。

書籍紹介

本屋でDockerについての本をいくつか手に取って読んでみて、イラストが多く1番わかりやすそうだったので購入しました。大当たりでした。
色んな記事でもランクインしている書籍なのでぜひおすすめです。

8150qINEUjL.SL1500.jpg

下記Amazonリンクです。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん

概要

Dockerとは

一言で表すと、「データやプログラムを隔離できる仕組み」

コンテナという箱を用いて、その中に環境を構築して使う感じです。
本来であれば1つのPCで1つの環境しか構築できません。(Pythonのバージョンは1個しか入れられないのと同じ)

Dockerを用いてコンテナごとに環境を管理することで、同じPythonでも違うバージョンの実効環境を共存させることができます。

Dockerを使うメリット・デメリット

メリットとしては
・複数の環境を1つのPCで扱うことができる。
・仮想環境と比べて軽量(原理は後回しで良い)
・コンテナ技術を用いて、別のPCでも開発環境をすぐに構築できる

デメリットは
・Dockerを使いこなすためには学習コストがかかること
・複数環境を使わない場合はあまりメリットを感じられない

イメージとコンテナ

イメージ

コンテナを作る元のようなもの
イメージだけでは何もできない。コンテナになって初めて環境が構築できる。
レシピのようなDockerFileからイメージを作成する。

コンテナ

環境を構築する箱のようなもの
イメージからコンテナを作成することで環境が構築できる

イメージの作成方法

めちゃくちゃ簡単。
DokerFile作成→Docker buildコマンド
DockerFileの内容は、作りたい環境に合わせてChatGPTを使うと一瞬で書いてくれる。
それか「作りたい環境 DockerFile」で検索したら大抵出てくる

# ベースイメージの指定
FROM python:3.9

# 環境変数の設定
ENV PYTHONUNBUFFERED 1

# 作業ディレクトリの設定
WORKDIR /app

# ホストのrequirements.txtをコンテナにコピー
COPY requirements.txt /app/

# Pythonパッケージのインストール
RUN pip install --no-cache-dir -r requirements.txt

# コンテナ内にコピーしたファイルをすべてコピー
COPY . /app/

コンテナの作成方法

Docker run

イメージからコンテナを作るためのコマンド
コンテナは作成した瞬間から稼働する。(稼働させたくない場合はdocker create)

Docker compose

DockerFileからイメージを作るのと似ている。
環境に関する設定が書かれたYAMLファイルを作る→Docker compose
YAMLもChatGPTに聞いたら作ってくれる。下記がPython環境をお願いした場合。
YAMLファイルの書き方を調べるとお作法が学べる。

version: '3.8'

services:
  python_app:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ./app:/app
    ports:
      - "8000:8000"
    environment:
      - PYTHONUNBUFFERED=1

DockerHub

Dockerイメージを保存しておく場所。(Githubみたいな感じ!)
公式のイメージを持ってきてコンテナ作成したりもできる。
これのおかげで、Dockerイメージをチームで共有してすぐに環境構築したりできる。

Dockerの使い方

実際に実行したいファイルが格納されているフォルダとリンクさせることができるので、リンクさせた後にそのファイルを実行すると構築した環境で実行ができる。
使い方としてはリンクさせたサーバー上に実行したいファイルを置く→DockerHubからイメージを持ってくる→サーバー上に環境構築→サーバー上のファイルを実行

Kubernetesについて

こちらについては、応用なので今回は省略します。

まとめ

この本のおかげで、Dockerについての理解が大変深まった。
まだ自分のローカルでDockerを使った自動化実行は行っていないので、DockerHubを用いて自動実行を行ってみようと思う。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0