Dockerを何度か使用する機会があったのですが、イメージとコンテナの違いが自分の中ではっきりしないまま使用していました。
なので、これを機にイメージとコンテナの違いをまとめました。
Dockerとは
そもそもDockerとは、アプリケーションをコンテナという独立したパッケージにまとめて、それを動かすためのプラットフォームです。
Dockerのイメージは下の図のような感じです。
1つのホストOS上で他のアプリケーションとの競合を意識することなく実行できるという特徴があります。
また、パソコンのプログラミング環境を汚すことなく、他の様々な開発を行うことができます。
Dockerイメージとは
簡単に言えば、コンテナの設計図です。
Dockerイメージをもとにして、Dockerコンテナを作成します。
Dockerイメージには、アプリケーション実行に必要な、設定ファイル・ライブラリ・アプリケーションがまとまっています。
Dockerコンテナとは
Dockerコンテナは、Dockerイメージをもとに作成される仮想環境のことです。
コンテナは、コード・ランタイム(プログラムの動作に必要なソフトウェア)・システムツール・ライブラリなど、必要なすべてのものを含んでいるので、どの環境でも同じように動作します。
また、各コンテナは独立しているため、互いに影響を受けずにプログラムを動作させることができます。
Docker起動までの流れ
基本的には、以下の流れでDockerを起動します。
1. DockerHubなどのリポジトリからイメージを取得(pull) 2. イメージからコンテナを作成(create) 3. コンテナを起動(start) |
---|
しかし、手順2.3.はまとめて行うこともできます(run)
1. DockerHubなどのリポジトリからイメージを取得(pull)
DockerHubからコンテナのイメージを取得します。
$ docker pull イメージ名
以下が実行例です。
//例
$ docker pull nvidia/cuda:11.3-cudnn8-devel-ubuntu20.04
2. イメージからコンテナを作成(create)
Dockerイメージからコンテナを作成します。
$ docker create --name コンテナの名前 イメージ名
以下が実行例です。
//例
$ docker create container nvidia/cuda:11.3-cudnn8-devel-ubuntu20.04
3. コンテナを起動(start)
コンテナを起動します。
$ docker start コンテナの名前
以下が実行例です。
//例
$ docker start container
2.3.コンテナを作成して起動(run)
Dockerイメージからコンテナを作成してコンテナを起動します。
$ docker run イメージ名
以下が実行例です。
//例
$ docker run nvidia/cuda:11.3-cudnn8-devel-ubuntu20.04