Dockerの概要を理解する
はじめに
はじめまして。
これが初投稿になります!よろしくお願いします。
インプットだけでなく、アウトプットも行うことで理解が深まるという話を聞きましたので
記事を書くことにしました。
内容はDockerについてです。
Dockerにした理由は、近年では必須技術にも関わらず、なんとなく調べたコマンドを打っていただけだったため
基礎から学ぼうと思い立ったことです。
Docker
Dockerはコンテナ型仮想化を用いてアプリケーションの開発や配置を行うためのプラットフォームです。
コンテナ型仮想化
ではコンテナ型仮想化とはなにか?
アプリケーションをパッケージ化して、それがどんな環境でも同じように動くようにする技術です。
例えば、アプリケーションと必要なファイルやライブラリを一緒に詰め込んで、その「コンテナ」と呼ばれる箱に入れるイメージです。
通常の仮想化とは違って、コンテナは、ホストOSにカーネルを共有しゲストOSの起動が不要なため軽くて高速です。
Dockerの基本の要素
コンテナ
アプリケーションやその周辺の必要なものを「箱」に詰めたものでホストマシン上の隔離された領域です。
コンテナの実体については参考にしたzennの本からそのまま引用させていただきます。
コンテナの実体はLinux のNamespace という機能によりほかと分離されたただの1プロセスでしかありません。
イメージ
イメージは、コンテナの「作り方のレシピ」や「設計図」のようなものです。
コンテナを作成するために必要なファイルや設定情報などが含まれています。
Dockerfile
Dockerfileは、イメージを作るための手順書です。
具体的には、「このプログラムをインストールして、この設定をする」などの命令が書かれています。
Dockerfileを使用すると既存のimageを自分用にカスタマイズできるようになります。
基本的な流れ
- Dockerfileの作成
- イメージのビルド
- コンテナの作成と起動
- コンテナの操作
1. Dockerfileの作成
ここでどんな環境でアプリケーションを動かすかを指定します。
例
# ベースとなるイメージを指定します
FROM ubuntu:20.04
# ソフトウェアをインストールします
RUN apt-get update && apt-get install -y curl
# コンテナ内で作業する場所を指定します
WORKDIR /app
# コンテナにファイルをコピーします
COPY . /app
# コンテナが起動する時に実行するコマンドを指定します
CMD ["bash"]
コマンドの意味
-
FROM
: どの基本イメージを使うかを決めます(ここでは「Ubuntu」)。 -
RUN
: 必要なソフトウェアをインストールします(ここでは「curl」)。 -
WORKDIR
: 作業ディレクトリを設定します(ここでは「/app」)。 -
COPY
: ホストのファイルをコンテナにコピーします。 -
CMD
: コンテナが起動したときに実行するコマンドを指定します。
2. イメージのビルド
Dockerfileを使って、Dockerイメージを作成します。このイメージを使ってコンテナを作ります。
例
docker build -t my-image .
コマンドの意味
-
docker build
: イメージを作るコマンドです。 -
-t my-image
: イメージに「my-image」という名前を付けます。 -
.
: 現在のディレクトリにあるDockerfileを使います。
3. コンテナの作成と起動
ビルドしたイメージを使って、コンテナを作成し実行します。
例
docker run -d --name my-container -p 8080:8080 my-image
コマンドの意味
-
docker run
: 新しいコンテナを作成して実行します。 -
-d
: バックグラウンドで実行します。 -
--name my-container
: コンテナに「my-container」という名前を付けます。 -
-p 8080:8080
: ホストのポート8080をコンテナのポート8080に接続します。 -
my-image
: 使用するイメージの名前です。
4. コンテナの操作
起動したコンテナを管理するための基本的な操作方法です。
コンテナの一覧表示
docker container ps
コンテナの停止
docker container stop my-container
コンテナの再起動
docker container start my-container
コンテナの削除
docker container rm my-container
Discussion