Docker 単語


ニコニコ動画でDockerの動画を見に行く

ドッカー

2.7千文字の記事
これはリビジョン 3048890 の記事です。
内容が古い・もしくは誤っている可能性があります。
最新版をみる

Dockerとは、コンテナ型の仮想環境ソフトウェアである。

概要

仮想マシンの問題点

通常の仮想マシンの場合、基盤(ハードウェアエミュレーター)・ゲストOS・ミドルウェア・アプリケーションをすべて兼ね備えた形で作成するが、これは非常に重厚である。また、ホストとゲストのOSが共通の場合、ホストと同じOSをゲストに重ねて持たせるのも無駄である。

また、アプリケーションのセットアップの手順も、通常はインストールマニュアルを書いてその通りインストールする、という流れをとるが、これが個人・環境ごとに差を生んでトラブルの原因となりやすい。一応、ChefやAnsibleのように、インストールを自動化するツールがあることにはあるが、依存するソフトウェアのバージョン違いまでケアすることが難しい。あるアプリケーションのためにミドルウェアをアップデートしたら、そのミドルウェアに依存していた別のアプリケーションが動かなくなったというのはよくある話である。

Dockerによる解決

一方、Dockerではコンテナという軽量の箱の中でアプリケーションを動かす。Dockerでは下図のように基盤(ハードウェアエミュレーター)部分に関しては原則一切面倒を見なくてよいし、OS部分もできる限り共有可能。ミドルウェアやアプリケーション部分にだけ専念すればよい。

Docker 仮想マシン方式
アプリケーション






アプリケーション
ミドルウェア ミドルウェア
Dockerによる
カーネルエミュレーション
ゲストOS
ハードウェアエミュレータ
ホストOS(カーネル) ホストOS(カーネル)
ハードウェア ハードウェア

上記のカーネルエミュレーションはほぼ命令をホストOSのカーネルに渡すという作業になるため軽量の処理で済む。一方で、ホストOSと全く違うカーネルを動かすのは難しいので、Linux上でLinuxカーネルをエミュレーションするのが基本である。ただ、WindowsカーネルのDockerというものも出てきている。

用途

GUI出力機能はデフォルトでは付属しないので、サーバー用プログラムをコンテナ内で動作させるという用途が一般的。というかGUIが必要なら素直にVMWareやVirtualBoxなどの仮想マシンを使う。

Dockerの使い方

インストール

Dockerのインストールであるが、各OSごとに異なるので簡単に説明すると、

  • WindowsおよびMac OSでは公式サイトからインストーラをダウンロードしてインストールする(個人使用、もしくは250人以下かつ年間売り上げ1000万ドル(約11億5000万円)以下の組織であればDocker Desktopは無料で使用可能)。docker-composeは初めから付属している
  • CentOS・Debian・Fedora・Ubuntuなどでは、レポジトリを追加してパッケージマネージャからインストールする。docker-composeはこの手順に従ってインストール可能である

といった具合である。

Dockerコンテナの動かし方

まずはdocker run --rm hello-worldとコマンドを打ってみよう。これで何が起きるかというと、

  1. ローカルにhello-worldというイメージがあるか確認する。なければ2へ、あれば3へ進む
  2. Docker Hubからhello-worldというイメージをダウンロードしてくる(pull)
  3. hello-worldというイメージをもとに、コンテナを立ち上げる
  4. 3で立ち上げたコンテナで、スクリプトを実行する
  5. スクリプトの実行が終了すると、通常はコンテナはそのまま残るが、--rmフラグをつけているので、コンテナを削除する

Dockerイメージの作り方

Dockerイメージを作るには、Dockerfileというファイルを作成する必要がある。簡単に言えば、設計図である。Dockerfileの構造は、

  1. どのDockerイメージをベースにするか
  2. どのようにコンテナにソフトウェアをインストールするか
  3. コンテナ起動時にどのソフトウェアを動かすか

という、大きく3つのパートに分けられる。先ほどのhello-worldイメージのDockerfileを解説すると、

  • scratchイメージをベースにする。このscratchイメージは、本当に何も入ってないイメージである。非常にシンプルなソフトウェアでない限りこれを基盤にすることはない。例えばUbuntu 20.04を基盤にしたいなら、FROM ubuntu:20.04と記述する
  • Dockerfileと同じディレクトリに置いてある、helloというファイルを、コンテナのルートディレクトリにコピーする。これでコンテナの構築は終わりである
  • コンテナ起動時には、/helloのプログラムを実行する

という意味になる。Dockerfileを作成したら、docker build -t [イメージ名]:[イメージタグ] .というコマンドを、Dockerfileのあるディレクトリで実行する。なお、イメージタグ部分は省略可能で、その場合は、latestタグが補完される。

Docker Hub

Dockerの開発元であるDocker社が運営するDocker Hubという公式サイトがある。このサイトでは各種(言語やミドルウェア)処理系の開発元が各自の処理系を既にインストールした公式イメージ(Docker公式のものと処理系開発元の公式のものがある)などが多数公開されている。実際の開発では素のOSコンテナイメージではなく、そういった処理系の公式コンテナイメージを基盤にイメージを作成することが多い。従ってイメージ名は処理系+OS名+処理系バージョンのような命名になっていることが多い。

ただし、Docker Hubは公式サイトとはいえ、公式イメージ以外に誰が作ったのか分からないイメージも多数アップされているので、使用は自己責任で。

ちなみに、Docker Hubを見ていると頻繁に出てくる"alpine"は、超軽量のディストリビューションAlpine Linuxをベースにしたコンテナイメージであることを示している。

関連動画

関連静画

Dockerのマスコットキャラはコンテナを背中に載せたクジラ。下記はDockerタグに引っかかってるが、クジラをモチーフにした潜水艦の絵という設定で直接の関係はない。

関連商品

ニコニコ市場は2023年11月に終了しました。

関連リンク

関連項目

  • ソフトウェア
  • サーバー / headless
  • 仮想マシン
  • Linux
  • プログラミング関連用語の一覧

おすすめトレンド

ニコニ広告で宣伝された記事

記事と一緒に動画もおすすめ!
ゼERO[単語]

提供: B級イレギュラー

もっと見る

急上昇ワード改

最終更新:2025/12/26(金) 23:00

ほめられた記事

最終更新:2025/12/26(金) 23:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP