Docker

Dockerイメージを取得してコンテナを作成・動作させる方法

Dockerイメージを取得してコンテナを作成・動作させる方法
naoki-hn

Docker イメージを取得してコンテナを作成し動作させる方法について解説します。例として Python 実行環境を作成する方法を用いて説明します。

Docker のインストール

Docker は、コンテナ型の仮想環境プラットフォームです。Windows で Docker 環境を使用する場合には、Docker Desktop for Windows をインストールするのが簡単です。以降の説明の実行前に Docker Desktop をインストールしてください。

Docker のインストール方法は「Docker Desktop for Windowsのインストール方法」を参考にしてください。

Docker イメージの取得と削除

注意点

以降の説明は記事執筆・更新時点でのキャプチャを使用しています。最新とは厳密には異なる可能性がありますのでご注意ください。

Docker イメージの取得

Docker では、Docker Hub に様々な便利な Docker イメージが公開されています。AI 関連 (tensorflow など)、Web サーバー (nginx など)、DBMS (postgres など) といった様々な環境のイメージがあるので色々と調べてみてください。

Python の Docker イメージを試す

今回は、Docker Hub 中から Python の Docker Official Image を使用して使い方を紹介したいと思います。Docker Hub で以下のようなリンクを探してみてください。見つからなければ検索で「python」と入力してもらえば見つけられると思います。

Docker Hub Python

イメージの情報の確認方法

リンク先の画面で「Tags」を見てみると以下のようにいくつかのタグ付けされたイメージを確認することができます。

Docker Hub Python Image

上記画像で示しているものは、Python 3.11.14 でベース OS は Alpine Linux 3.23 で環境が用意されている Docker イメージを表しています。

docker pull python:3.11.14-alpine3.23」がこのイメージを Docker にプルして取り込むためのコマンドです。

また、Digest としていくつか文字列がありますが、これはイメージの実体を表すハッシュで、同じタグでもアーキテクチャごとに Digest は異なります。docker pull の際に自身の環境に合ったイメージが選択されて取り込まれます。

Vulnerabilities は、Docker Scout という、Docker が提供している セキュリティ解析サービスの解析結果を表しています。左から順に「Critical」「High」「Medium」「Low」「Unknown」を表し、各レベルの脆弱性が何件見つかっているか表示されます。上記例では Midium の脆弱性が 1 件あるという意味です。Critical や High に数字がある場合、用途や環境(本番・検証)を考慮して慎重に使用を判断しましょう。

今回は、Newest で一番上に出てきたイメージを例に紹介しますが、必要に応じて異なるバージョンなどを調べて試してみてください。

docker pull によるイメージの取り込み

Docker イメージを環境に取り込むには「docker pull」コマンドを使用します。コマンドプロンプト または PowerShell を起動して、Docker Hub に表示されているコマンドを入力します。

今回は、以下の例で試してみます。 Docker Hub の Tag 一覧に表示されるコマンドはクリップボードへ簡単にコピーできるためそちらを活用すると簡単です。

docker pull python:3.11.14-alpine3.23

Docker イメージを取得することを「pull」と言います。実行すると取得してきた情報が表示されます。「Pull complete」と表示されれば環境は取得できています。

取得済みの Docker イメージの一覧の取得は以下のコマンドで確認できます。

docker images

取得してきたイメージが表示されれば、Docker イメージの取得は完了です。Docker Desktop の Images のところからも取得してきたイメージを確認できます。

Docker Desktop Images

実際に環境を実行する方法については、以降で説明します。

Dockerイメージの削除方法

取得した Docker イメージを削除するには以下のコマンドを実行します。

docker image rm リポジトリ名:タグ名

今回の例に当てはめると以下のようになります。

docker image rm python:3.11.14-alpine3.23

Docker Desktop の場合は、Images の画面の一覧から右側にあるゴミ箱ボタンで削除することも可能です。

Docker Desktop Images python

Docker イメージからコンテナを動作させる方法

コンテナを作成して動作させる

取得してきた Python の Docker イメージからコンテナを作成して動作させる方法について紹介します。以下のコマンドを実行してください。

docker run --rm -it python:3.11.14-alpine3.23

Docker のコンテナを作成し起動するには「run」を使います。オプションとして指定しているものについては以下の意味があります。

  • --rm:終了時にコンテナを削除する。
  • -it:標準入力でターミナルを有効化する

--rm の指定をしない場合は実行が終わった後でもコンテナが残り続けます。また、-itの方はホストとコンテナの入出力をつなぐオプションです。

実行すると Python のターミナルが起動します。「print("Hello Python")」のように Python コードを入力して実行することができますので試してみてください。

また、実行しているターミナルとは別ターミナルで以下のコマンドを実行すると、現在実行中のコンテナ一覧を確認できます。

docker ps

Python ターミナル上で「exit()」と入力するとターミナルが閉じるとともに –rm オプションを指定しているためコンテナも停止します。

なお、以下のコマンドで Docker コンテナを指定して停止もできます。コンテナ ID は上記で紹介した「docker ps」で確認できます。

docker stop コンテナID

Docker コンテナを起動したまま終了する方法と再接続方法

Docker コンテナは起動したままで終了させることもできます。その場合は、実行しているターミナル上で「Ctrl + p + q」を実行してください。Ctrl を押しながら pq と順に押します。こうすることでコンテナが起動した状態のままになります。

起動しているコンテナに再度接続したい場合は、以下のコマンドで接続できます。コンテナIDは「docker ps」で確認したコンテナ ID を指定してください。

docker attach コンテナID

Docker コンテナとローカルフォルダをマウントする方法

Docker のコンテナは削除してしまうと作業していた内容が失われてしまいます。そのため、Docker コンテナと実行しているホストマシンのフォルダをマウントして Docker コンテナ上で作成したファイルをローカルフォルダへ保存できます。

フォルダをマウントすることで、コンテナを削除してもデータはローカルフォルダに残ります。これにより、複数コンテナ間でファイル共有することも可能になります。

マウントの説明をする前に、コンテナの Linux のシェルを起動する方法について説明します。起動時に「/bin/sh」を指定して以下のように実行してみてください。

docker run -it python:3.11.14-alpine3.23 /bin/sh

実行すると、シェルが起動されて「#」表示がされます。例えば、「ls」を実行してみると、以下のようにディレクトリ一覧が表示できます。上記で紹介してきた Python のコンテナ起動では、このシェル上で「python」コマンドを実行して Python インタプリタが起動された状態になっていたわけです。

# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

ディレクトリ階層を持っているため、指定したディレクトリとローカルフォルダをマウントすることで Docker 環境とローカル環境を紐づけることができます。

Docker コンテナとローカルフォルダをマウントするには「docker run」を起動する際に「-v」オプションを指定して以下のように記載します。

docker run --rm -it -v C:\docker\test:/work python:3.11.14-alpine3.23 /bin/sh

上記例は「C:\docker\test」と「/work」をマウントするという意味になります。ローカルのパス部分は利用環境に応じて変更してください。

上記のようにしてコンテナを起動し、ls でディレクトリを確認してみると「work」というディレクトリが確認できます。

# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  work

この work ディレクトリ内で任意のファイルやフォルダを作成してみてください。マウントされているローカルの「C:\docker\test」配下に格納されることが確認できるかと思います。

まとめ

Docker イメージを取得してコンテナを作成し動作させる方法について解説しました。例として Python 実行環境を作成する方法を紹介しています。

また、コンテナとローカルフォルダをマウントして、コンテナ上で作成したデータをローカルフォルダにも格納し、コンテナ削除後にも残った状態にする方法について説明しました。これにより複数コンテナで領域を共有することができて便利です。

今回の例は Python 環境でしたが、他の環境についても各ソフトウェアにより細部の使い方は変わってきますが、基本的な環境の起動方法やマウント方法などは同様です。

Dockerは使わなくなったらコンテナを削除すればよいので、自分の PC 環境をきれいな状態に保ったまま様々な環境を使えるのが大きなメリットです。Dockerイメージには今回紹介した Python 以外にも様々なイメージがあるため Docker Hub で色々と調べて使ってみてください。

あわせて読みたい
【Python Tech】プログラミングガイド
【Python Tech】プログラミングガイド
ABOUT ME
ホッシー
ホッシー
システムエンジニア
はじめまして。当サイトをご覧いただきありがとうございます。 私は製造業のメーカーで、DX推進や業務システムの設計・開発・導入を担当しているシステムエンジニアです。これまでに転職も経験しており、以前は大手電機メーカーでシステム開発に携わっていました。

プログラミング言語はこれまでC、C++、JAVA等を扱ってきましたが、最近では特に機械学習等の分析でも注目されているPythonについてとても興味をもって取り組んでいます。これまでの経験をもとに、Pythonに興味を持つ方のお役に立てるような情報を発信していきたいと思います。どうぞよろしくお願いいたします。

※キャラクターデザイン:ゼイルン様
記事URLをコピーしました