Docker超入門:初心者でも今から使える!基本的な使い方紹介

docker今日から始める超入門

Dockerの使い方について、「Docker Desktop」のインストールから「イメージ」「コンテナ」の作成、動作確認、コンソールでのコマンド操作方法まで、初心者でも基本的な使い方がわかるように順を追って実践しながら、詳しく紹介していきます。

実際の例としてpythonの実行環境を作る方法で紹介していきます。
Dockerで環境構築すると、ホストマシンの実行環境を荒らすことなく、新しい実行環境が作れて色々なバージョンの環境を試したり、簡単に削除して作り直したりできて便利なので、あまり難しく考えずにチャレンジしてみましょう♪

スポンサーリンク

1.Dckerとは

Dockerとは、Docker社が開発している、「コンテナ型」の「仮想環境」を作成、配布、実行するためのプラットフォームです。

「仮想環境」とは、1つの物理マシン上に複数の独立したコンピューターの実行環境を仮想的に構築したものです。

従来の「仮想(バーチャル)マシン」技術では、ホストマシン上で「ゲストOS」を動かし、その上でアプリやミドルウェアなどを動かしていました。
Dockerでは、アプリケーションを実行するために必要なソフトウェアや設定ファイルをまとめて「コンテナ」と呼ばれる単位にパッケージ化することで「ホストOS」のカーネルを共有して動作できるため「仮想マシン」と比較して軽量で高速に動作します。

Dockerの主な使用方法は以下の3つになります。

  • アプリケーションのコンテナ化
    「コンテナ」は、「Dockerfile」と呼ばれるテキストファイルにアプリケーションの実行に必要なソフトウェアや設定ファイル、操作内容を記述して実行することで「イメージ」を作成します。
    この「イメージ」を使用して実行条件や使用ポート番号、ホストマシンとの同期フォルダ等を指定して「コンテナ」と呼ばれる仮想環境を作成します。
  • コンテナの実行
    作成した「コンテナ」は、「Docker Desktop」アプリやコンソールで「dockerコマンド」を使用して起動します。
    「コンテナ」を起動すると独立した「コンテナ」環境の中で、ホストOSのカーネルを共有してアプリやミドルウェアなどを動作することができます。
  • コンテナの配布
    「Docker Hub」と呼ばれる「イメージ」の共有サービスを使用して「イメージ」を公開して配布することができます。
    「イメージ」を公開することで、他のユーザーが簡単に「イメージ」を取得して同じ環境を利用できたり、自分の別のパソコンでも同じ環境をすぐに構築できるようになります。

Dockerはアプリケーションの開発・運用を効率化するための有力な技術で、以下のようなメリットがあります。

  • 開発環境の構築と共有が容易になる。
  • アプリケーションの配布とデプロイが容易になる。
  • クラウド環境でのアプリケーションの運用が容易になる。
  • ホストマシンの実行環境を荒らすことなく、新しい実行環境の構築や削除ができる。

Dockerは、オープンソースソフトウェアであるため、無料(条件あり)で利用することができます。

現時点では以下の条件に当てはまる場合は無料で利用できます。→詳細はこちらを参照
・個人利用
・スモールビジネス(従業員数250名未満かつ年間売上高1000万ドル未満)
・教育機関
・非商用のオープンソースプロジェクト

Dockerのインストール方法や使用方法は、英文ですが以下の公式ドキュメントでも確認できます。

Home
Docker Documentation is the official Docker library of resources, manuals, and guides to help you containerize applications.
スポンサーリンク

2.Docker Desktopのインストール

Dockerを使用するには「Docker Desktop」をインストールして起動しておく必要があります。
まずは「Docker Desktop」のインストール方法について詳しく紹介します。


・インストール方法

以下のリンクをクリックしてインストールページへアクセスしてください。

Docker の入手
Home page for Get Docker

以下のページが表示されたら、ご自身のパソコン環境に合ったものをクリックしてください。
ここでは「Windows」環境を例に紹介していきます。

docker簡単インストール方法

以下のようなページが表示されたら[Docker Desktop for Windows]をクリックしてください。

docker簡単インストール方法

下画像のようにダウンロードが始まるので終わるまで待ちます。(画像はEdgeブラウザの場合です。)

docker簡単インストール方法

ダウンロードが終了したら[ファイルを開く]をクリックします。
下画像のように表示されない場合、ファイルはダウンロードフォルダに保存されているので、そちらからクリックして実行してください。

docker簡単インストール方法

ファイルを実行すると、下画像のようなウインドウが表示されるので[はい]をクリックします。

docker簡単インストール方法

以下のようにインストール画面が表示されるので順番にインスールしていきます。

docker簡単インストール方法

インストールが始まるのでしばらく待ちます。

docker簡単インストール方法

上画像の画面では2箇所のチェックマークが入っていることを確認して[OK]をクリックしてください。

docker簡単インストール方法

上画像のように表示されたらインストールは完了です。[Close and restart]をクリックすると「Docker Desktop」が起動します。

docker簡単インストール方法

上記のような「セキュリティソフト」の警告が出た場合は内容を確認して問題なければ許可してください。
ブロックするとインストールはできません。


以上でインストールは完了です。
初回起動時には以下のようなサブスクリプションに関する同意画面が表示されます。

docker簡単インストール方法

現時点では以下の条件に当てはまる場合は無料で利用できます。→詳細はこちらを参照

・個人利用
・スモールビジネス(従業員数250名未満かつ年間売上高1000万ドル未満)
・教育機関
・非商用のオープンソースプロジェクト

条件を確認して問題なければ[Accept]ボタンをクリックします。

次に以下のようなアカウント作成ページが表示されますが、後でも作成できます。
アカウントは作成しなくても使用できるので、今は閉じて終了しましょう。

docker簡単インストール方法

・起動時エラーの対処方法

初回起動時にはエラーが出て起動できない可能性があるので、それぞれの対処方法について紹介しておきます。

エラーが発生した場合は下画像のような画面のまま「Docker Desktop」は起動されないため、一旦閉じておきましょう。


エラー1:ハードウェアの仮想化機能が無効になっている

以下のエラーはパソコンハードウェアの仮想化機能が無効になっている場合に発生します。

docker起動時エラーHyper-Vの対処方法
最近のパソコンであれば、ほぼハードウェア仮想化機能を持っていますが、すべてのパソコンでこの機能が有効になっておらず、無効になっている場合には有効にする必要があります。

対処法は「BIOS設定」で仮想化機能を有効にする必要があります。

パソコン起動時にWindowsが立ち上がる前に「F2キー(Deleteキー等パソコンによって異なります)」を何度か押すと「BIOS設定」画面が表示されます。

その中でCPU に関連する項目を見つけます。
パソコンによって異なりますが、例えば 「 Processor 」「 Chipset 」または 「 Northbridge 」という見出しの下にあります。

さらに、その中にある仮想化を有効にします。
この設定は「 VT-x」「AMD-V」「 SVM」または「Vanderpool」となっている場合があります。
オプションが利用可能な場合は「Intel VT-d」または「AMD IOMMU」を有効にします。

以下は、私のパソコンの中で唯一仮想化が無効になっていた古いパソコンのBIOS画像です。
「Intel(R) Virtualization Technology」が「Disabled」で「無効」になっていたため「有効」にして、再起動するとエラーは発生しなくなりました。

docker BIOS 仮想化有効

詳細は、以下の公式のトラブルシューティングでご確認ください。

https://bce.berkeley.edu/enabling-virtualization-in-your-pc-bios.html

エラー2:WSL(Windows Subsystem for Linux)のバージョンが古い

以下のエラーはWSL(Windows Subsystem for Linux)のバージョンが古い場合に発生します。

docker起動時エラーWSL2の対処方法
WSLとは、Windows10/11上でLinuxの実行環境を提供する機能で、DockerではコマンドラインでLinuxコマンドを入力して使用することで効率の良い環境構築ができるため、この機能が必要です。

Docker Desktopでは「WSL2」が使用されます。Windowsのアップデートを日頃行っていれば「WSL2」が既にインストールされていると思いますが、インストールされていない場合は「PowerShell」を起動してインストールする必要があります。

「PowerShell」はWindowsの画面下ツールバーにある検索ウインドウに「power」と入力すると、下画像のように「Windows PowerShell」が表示されるのでクリックして起動します。

Power Shellの起動方法

「PowerShell」が起動されると下画像のようなアプリが起動するので、ここにコマンドを入力して操作していきます。

Power Shellの使用方法

まずはインストールされている「WSL」のバージョンを確認するために、以下のコマンドを入力してENTERを押します。

wsl --status

「既定のバージョン: 2」と表示されれば「WSL2」がインストールされているので、引き続き以下のコマンドを入力後ENTERキーを押すとアップデートが開始されます。

wsl --update

アップデートが開始すると以下のようなウインドウが表示されるので[ はい ]をクリックします。

Power Shellの使用方法

下画像のようにアップデートが実行されるのでしばらく待ちます。

Power Shellの使用方法

下画像のような画面が表示されたらアップデートは完了です。

Power Shellの使用方法

デスクトップにある以下のアイコンをクリックすることで、今度はエラーが発生せずに「Docker Desktop」が起動されるはずです。

docker desktopアイコン
もし同様のエラーが発生する場合は、パソコンを再起動して再度「Docker Desktop」を起動してみてください。

もし「WSL」がインストールされていない場合は、以下のコマンドを実行することでインストールできます。

wsl --install

「WSL」のインストール方法は以下のページで詳しく紹介されています。

Install WSL
Install Windows Subsystem for Linux with the command, wsl --install. Use a Bash terminal on your Windows machine run by your preferred Linux distribution - Ubun...
スポンサーリンク

3.Dockerデスクトップの使い方

「Docker Desktop」の基本的な使い方を公式チュートリアルを実行することで紹介していきます。
「Docker Desktop」を起動すると下画像のように読み込みが開始されるのでしばらく待ちます。

Docker Desktopの起動

しばらくすると下画像のような画面が表示されます。
この画面で「Docker」を操作することができます。

Docker Desktopの使い方

・公式チュートリアルで動作確認

公式のチュートリアルを使って、まずは「コンテナ」を作成して動作確認してみましょう。
下画像の[What is a container?]をクリックします。

Docker Desktopの使い方

チュートリアルが開始されると下画像のように「コンテナ」が作成されます。
画面右のウインドウにはチュートリアルの内容が表示されていますが英語なので不要であれば閉じておきましょう。

Docker Desktopの使い方

コンテナの中の「Port(s)」に「8088:80」というリンクがあるのでこれをクリックします。

「8088:80」とは、ローカルパソコンのポート「8088」をコンテナ側のポート「80」に接続するという意味です。これを「ポートフォワード」と言います。

すると、以下のようにブラウザが起動され「Congratulations!!!」という画面が表示されます。

Docker Desktopの使い方

あまり実感は湧かないと思いますが(私もそうでした・・・)、これで「イメージ」から「通信ポート」をローカル環境と接続した「コンテナ」が作成され、その中の仮想環境でサーバーを起動させてWebページが表示できるようになりました。

上画像ブラウザの検索バーには「Locallhost:8088」とありますが、「Localhost」の部分をこのパソコンの「IPアドレス」に変更して、自宅で同じLANに接続しているパソコンやスマホのブラウザの検索バーに入力してアクセスすると同じ画面が表示されます。

これはコンテナを起動しているパソコンがサーバーとして機能して、コンテナ内のWebページを返してくれるためです。

試しにスマホから接続してみましょう。
パソコンのIPアドレスの確認方法は「PowerShell」で以下のコマンドを入力します。

ipconfig

「Power Shell」で「ipconfig」を入力してENTERを押すと、下画像のようにIPアドレス(下画像では192.168.0.27)が確認できます。

IPアドレスの確認方法

スマホのブラウザのアドレスバーに確認したIPアドレス(今回は192.168.0.27 ですが環境によって異なります)の後にポート番号「:8088」をつけて「192.168.0.27:8088」のように入力してアクセスすると、下画像のように先ほどと同じ画面が表示されます。

Docker Desktopの使い方
上画像ではアドレスバーに「192.168.0.27」までしか表示されていませんが「192.168.0.27:8088」のようにポート番号「:8088」まで入力してください。

チュートリアルでは簡単なWebページだけですが、コンテナ内のフォルダに自分で作成したWebページのファイルを置くことで、そのページを表示することができます。

コンテナ内のフォルダはローカルパソコンのフォルダと同期させることができるため、ローカルパソコンの同期フォルダ内のファイルを編集しながら動作確認を行うこともできます。

コンテナを終了するには下画像の「Actions」にある[Stop]ボタンをクリックします。
その横の「ゴミ箱」アイコンをクリックすると削除することができます。

Docker Desktopの使い方

以上が「Docker Desktop」を使用した「Docker」の基本的な使用方法の流れです。

チュートリアルではいきなり「コンテナ」が作成されたように見えますが、実際は「イメージ」を準備して、その「イメージ」を使用して「コンテナ」を作成、起動して動作確認を行っています。

「Docker Desktop」では画面の左メニューの「コンテナ(Containers)」と「イメージ(Images)」を選択することで、それぞれの状態確認、操作を行うことができます。

次からはそれぞれの画面について詳しく紹介します。


・image(イメージ)画面の機能紹介

左メニューの[Images]をクリックすると、下画像のような画面で現在使用できる「イメージ」の確認と操作(「RUN」ボタンから「コンテナ」作成)ができます。

Docker Desktopの使い方

確認できる内容は以下になります。

  • Name:「イメージ名」です。「イメージ名」は「ホスト名/任意のイメージ名(リポジトリ名)」とすることが一般的で、管理もしやすくなります。
    「イメージ名」の下にある「イメージID」は「イメージ名」の代わりに指定することができます。
  • Tag:バージョン情報です。「latest」は最新バージョンを表す場合に使用します。
  • Status:イメージの使用状況です。コンテナで使用されているものは「in use」、使用されていないものは「Unused」となります。「in use」のイメージは「コンテナ」で使用されているため、削除することができません。(タグ付けというコピーされたものは削除できます。)
  • Created:どれくらい前に作成されたかを確認できます。
  • Size:イメージのデータサイズです。
  • Actions:[RUN]ボタンを押すことでそのイメージを使用して新たな「コンテナ」の作成ができます。[ゴミ箱]アイコンをクリックすると削除(Unusedの場合)できます。

RUNボタンからのコンテナ作成方法

「Actions」の[RUN]ボタンを押すと以下のようなウインドウが表示されます。
ウインドウ内の[RUN]ボタンを押すことで「ランダムな名前」で「コンテナ」が作成されます。

docker desktopコンテナの作成方法

名前を指定したい場合やホスト側とコンテナ側のポートの接続やフォルダの同期が必要な場合は「Optional settings」の[下矢印]をクリックすると、下画像のような表示になり、詳細設定を行うことができます。

docker desktopコンテナの作成方法詳細設定

ここで設定できる内容は以下になります。

  • Container name:コンテナの名前を指定します。空白にするとランダムな名前が設定されます。
  • Ports:[Host port]に「コンテナ」側ポートと接続したいホストパソコン側のポート番号を指定します。「0」を設定するとランダムなポートが設定されます。
    (公式チュートリアルではここが「8088」でした。)
  • Volumes:ホストパソコン側(Host Path)とコンテナ側(Container Path)のフォルダを同期させたい場合に、それぞれのフォルダの場所を示す「パス(Path)」を指定します。
  • Environment variables:コンテナ側で使用したい「環境変数」を指定できます。[Variable]に変数名、[Value]に値を指定します。

設定完了後に[RUN]ボタンを押すことで、新たな「コンテナ」が作成できます。


・container(コンテナ)画面の機能紹介

左メニューの[Containers]をクリックすると、下画像のような画面で作成した「コンテナ」の稼働状況の確認と操作(「Start」ボタンの部分でコンテナの起動、停止)ができます。

Docker Desktopの使い方

確認できる内容は以下になります。

  • Name:「コンテナ名」でコンテナ作成時に指定した名前です。コンテナ作成時に指定しなかった場合はランダムな名前で表示されます。
  • Image:使用されている「イメージ名」です。
  • Status:コンテナの稼働状況です。コンテナが稼働している時は「Running」、停止している時は「Exited」となります。
  • CPU(%):CPUの使用率です。
  • Port(s):「パソコン側ポート」と接続している「コンテナ側のポート」が確認できます。
    「:」を挟んで左が「パソコン側ポート」、右が「コンテナ側のポート」です。
    コンテナ稼働中にクリックすると「パソコン側ポート」を通して「コンテナ側ポート」に接続されて通信することができます。
  • Last Started:コンテナが稼働してからどれくらい時間が経ったかを確認できます。
  • Actions:[RUN]ボタン部分を押すことでコンテナの稼働、停止を行うことができます。
    停止中に[ゴミ箱]アイコンをクリックすることでコンテナを削除できます。
同じ「イメージ」を使って、ポート等の設定が違うコンテナを作成して同時に稼働させることもできます。
不要になったり、変更が必要になった「コンテナ」は削除して、また作り直しましょう。

・container(コンテナ)詳細画面の機能紹介

コンテナ画面で各コンテナをクリックすると、詳細情報の確認やコンテナ内のコンソール操作、フォルダやファイルの確認、編集等ができます。

下画像のようにチュートリアルで作成した「コンテナ」をクリックしてください。

dockerコンテナの詳細操作

まずは下画像のような「ログ」の確認画面が表示されます。
画面右上には起動、停止、更新、削除ボタンがあります。

dockerコンテナの詳細操作

[Inspect]をクリックすると、コンテナの詳細情報がJSON形式で確認できます。

dockerコンテナの詳細操作

[Bind mounts]をクリックするとパソコン側とコンテナ側で同期されているフォルダの内容が表示されます。
今回のチュートリアルでは同期したフォルダは無いため何も表示されません。

dockerコンテナの詳細操作

[Exec]をクリックするとコンテナ内のコンソール画面が表示され、Linuxコマンドを入力して操作できます。

下画像では「ls」コマンドでルートフォルダ内のフォルダとファイルを表示しています。
次に「find」コマンドでWebページを表示させている「index.html」ファイルの場所を検索しています。「usr/share/nginx/html」フォルダ内に「index.html」ファイルがあることが確認できました。

dockerコンテナの詳細操作

[Files]をクリックするとコンテナ内のフォルダ構成が確認できます。
下画像では、先ほど検索した「index.html」ファイルを選択しています。
画面右上の[Hide file editor]を押すと、画面下にファイルの内容が表示されます。
フォルダ名で右クリックすると「編集、削除、保存、インポート」等の操作メニューが表示されます。

dockerコンテナの詳細操作

[Stats]をクリックするとコンテナの各稼働状況が確認できます。

dockerコンテナの詳細操作

ここまで「Docker Desktop」を使用した、視覚的に操作できる「GUIGraphical User Interface」環境での操作方法を紹介してきました。

一度作成した「コンテナ」の稼働、停止や、複数の「コンテナ」の稼働状況の確認には「GUI」環境は視覚的に確認できて便利ですが、「イメージ」の作成にはコマンド入力で操作する「CUICharacter User Interface」環境での操作が必要になります。

コマンド入力による操作は慣れるまでは大変ですが「Docker」を使いこなすには必要不可欠なため、次からは「CUI」を使用した「Docker」の使用方法を紹介していきます。

4.コマンド入力(CUI)で操作

ここからは「Docker」を使用する上で不可欠な「CUICharacter User Interface」環境(コンソール)での使用方法を詳しく紹介していきます。

「Docker Desktop」でもほとんどの操作は可能ですが、作成した「コンテナ」側の操作はコンソールで「Linuxコマンド」での操作が必要になります。

ここでは「Dockerコマンド」と合わせて、基本的な「Linuxコマンド」についてもまとめましたので先に確認しておきましょう。

慣れないうちは見るのも嫌になると思うので先に進んでいただいても大丈夫です。
ここは軽く目を通して必要に応じて見返してください。

・CUI環境の起動

「CUI」を使用する環境は、使用するOSやツールによって異なります。
ここでは基本的なものについて紹介します。

WindowsのCUI環境

WindowsのCUI環境は「Docker Desktop」インストール時にも使用した「Windows PowerShell」です。

「コマンドプロンプト」も「CUI」環境ですが一部のコマンドが異なるため、必ず「PowerShell」を使用してください。

起動方法はWindows画面下の「検索窓」または「虫めがね」アイコンから「power」と入力すると「PowerShell」が表示されるので、クリックして起動します。

Power Shellの起動方法

MacのCUI環境

MacのCUI環境は「ターミナル」を使用します。
「LaunchPad」または「Spotlight検索」に「ターミナル」と入力すると「ターミナル」アイコンが表示されるのでクリックして起動します。

Macターミナルの起動

VSCodeの拡張機能を使用したCUI環境

高機能エディタ「VSCode(Visual Studio Code)」の拡張機能の「Docker」を使用すると「VSCode」内の「ターミナル」でコマンド入力して操作するだけでなく「Docker Desktop」のような「GUI」環境に似た「コンテナ」の管理ができます。

さらに、その後のプログラム作成から動作確認まで1画面で完結できるため、最終的には「VSCode」を使用して開発することをおすすめします。


VSCodeのインストールや初期設定については以下のリンクで詳しく紹介しています。

Visual Studio Code (VSCode)のインストールと日本語化から基本設定まで紹介
簡単高機能エディタ「VS Code(Visual Studio Code)」のインストールから初期設定まで紹介。 様々なプログラム言語に対応。プログラミング初心者にもおすすめ、現役最強エディタを使いこなしていきましょう。

VSCodeを起動したら、下画像のように、左ツールバーの[拡張機能]アイコンをクリックして、検索窓に「docker」と入力します。
クジラのアイコンが表示されたらクリックしてインストールするだけで使用できます。

VSCode拡張機能dockerの使い方

インストールが完了したらVSCodeを再起動すると、下画像のように左ツールバーにクジラのアイコンができているのでクリックします。

VSCode拡張機能dockerの使い方

画面内の各機能の配置は環境によって異なると思いますが、上画像のように拡張機能「Docker」によって「コンテナ」や「イメージ」の状態確認や操作、コンソールでのコマンド操作、ファイルの作成、編集が1画面でできます。

「コンテナ」名を右クリックすると基本的な操作メニューが表示され、ログの確認やコンソール操作、ブラウザ表示等をすぐに実行できます。

上画像では公式チュートリアルの「index.html」ファイルを開いて編集できる状態です。

使用するエディタによって開発スピードは大きく異なります。
「VSCode」は様々な拡張機能があり、ほとんどのプログラム言語に対応しているため、使ったことがない方は今のうちに導入して使い方に慣れておくことをおすすめします。

・Dockerの基本コマンド集

「Docker」の基本コマンドについて、主なものを以下にまとめました。

# 基本コマンド
docker —-help          # ヘルプ
docker <コマンド名> —-help   # 指定したコマンドのヘルプ
docker images    			  # イメージのリスト表示
docker ps  				      # 起動しているコンテナの表示
docker ps -a  			      # 起動していないコンテナも表示
docker stop コンテナ名  	  # コンテナの停止
docker start コンテナ名  	# コンテナの起動
docker rm コンテナ名  	    # コンテナの完全削除
docker rmi イメージ名(タグ)  # イメージの完全削除(コンテナで使用されているものは削除不可)
docker system prune      # 使っていないコンテナ、イメージ、ネットワークを全て削除
docker container prune    # 停止コンテナを全て削除
docker image prune        # 未使用のイメージを全て削除
docker volume prune       # コンテナから参照されていないVolumeを全て削除

# イメージ、コンテナの作成、操作 ※イメージ名は ホスト名/リポジトリ名:タグ(バージョン)
docker search イメージ名                      # 取得できるイメージの検索
docker pull イメージ名                        # イメージの取得
docker build -t イメージ名 作業フォルダパス      # オリジナルのイメージを作成(Dockerfile使用)
docker run --name 任意の名前 -it -d イメージ名  # イメージからコンテナを作成して起動
docker exec -it コンテナ名 bash               # コンテナのコンソールに接続
                                # -it コンテナを起動させたままにするオプション (インタラクティブ:相互作用)
                                # -d  バックグラウンドで実行するオプション(デタッチ:切り離す)

# Docker Hubへ イメージをアップロード
docker login                           # dockerhubにログイン
docker tag 既存のイメージ名 新しいイメージ名 # イメージ名(タグ)を付け直す(コピーされる)
dockder push イメージ名                  # dockerhubにイメージをアップロード
docker commit コンテナ名 イメージ名        # コンテナからイメージを作成

・Linuxの基本コマンド集

「Linux」の基本コマンドについて、主なものを以下にまとめました。

ls                # 現在のフォルダのリストを表示
pwd               # 現在のフォルダパスを表示
cd フォルダ名       # ディレクトリの移動
cd ..             # 1つ上の階層のディレクトリへ移動
cd ~              # ユーザーのホームディレクトリへ移動
cd /               # ルートディレクトリへ移動
mkdir フォルダ名    # フォルダの作成
touch ファイル名     # 空のファイルを作成
echo ‘Hello’ > ファイル名 # 指定ファイルに「Hello」を書き込む
cat ファイル名      # ファイルの内容を表示
less ファイル名     # ファイルの内容をページで表示
mv ファイル名 新規ファイル名  # ファイル名の変更
rm ファイル名              # ファイルの削除
find / -name “検索文字”   # 検索
find / -type f -name “検索文字” # ファイル、ディレクトリを指定して検索(f:ファイル、d:ディレクトリ)
キーワード —help           # ヘルプの表示
キーワード —version        # バージョン確認(インストールされているか確認)

5.Dockerコマンドでの基本的な使い方

dockerコマンドを使用して「Docker Hub」から「イメージ」を取得して「コンテナ」を作成する方法を、pythonの実行環境を作成する方法を例に紹介します。

コマンド操作が苦手な方も基本コピペで完結できるので、ぜひチャレンジしてみてください。


・イメージの検索(search)

「イメージ」は自分でも作成できますが「Docker Hub」に既に作成されてものが用途ごとに公開されているので、それを利用することで目的の環境を素早く作成することができます。

まずは目的の「イメージ」を検索してみましょう。今回は「python」で検索してみます。
「イメージ」を検索するには以下のコマンドを実行します。

docker search python

実際に「PowerShell」に入力して実行すると、以下のように検索されます。

docker search イメージの検索

一番上に「python」が見つかったので、今回はこれを使用します。

検索された「python」の「OFFICIAL」の項目が「OK」になっています。
これは公式の「イメージ」であることを表しています。公式のものなので安心して使用できます。

公式でないものはできれば使用を避け、使用する場合は内容をよく確認してから使用するようにしましょう。

公開されている「イメージ」については以下の「Docker Hub」のページで確認できます。

Docker Hub Container Image Library | App Containerization
Welcome to the world's largest container registry built for developers and open source contributors to find, use, and share their container images. Build, push ...

「Docker Hub」のページを開くと、下画像のようにページ上の検索窓から検索ができて、詳細情報が確認できます。

docker search イメージの検索
「Docker Hub」にはフィルター機能があり、公式等で限定して検索することもできます。

dockerコマンドで公式の「イメージ」を検索する場合は以下のように入力します。

docker search python -f is-official=true

目的の「イメージ」が見つかったら自分のパソコンのDocker環境に取得していきます。


・イメージの取得(pull)

イメージを取得するには以下のコマンドを実行します。
今回は「python」の「イメージ」を取得します。

docker pull python

取得された「イメージ」を確認するには、以下のコマンドを実行します。

docker images

実際に「PowerShell」に入力して実行すると、以下のように表示されます。

docker imageイメージリストの確認

公式チュートリアルで使用された「イメージ」と、今取得した「python」が表示されるのが確認できます。

「TAG」はバージョン情報で今回特に指定しなかったので、最新版の「latest」で取得されました。「IMAGE ID」は「イメージ」に対する一意の識別子で「イメージ」を指定する時に使用できます。

・コンテナの作成(run)

「イメージ」を使用して「コンテナ」を作成するには、以下のようなコマンドを実行します。
(このコマンドを実行すると「python」が実行できるコンテナが起動します。)

docker run --name pytest -it -d python:latest

このコマンドの詳細は以下になります。

docker run – -name コンテナ名 -it -d イメージ名: タグ(バージョン)

– -name コンテナ名を指定するためのオプション
コンテナ名 自分でわかりやすいコンテナ名を指定
-it コンテナを起動させたままにするオプション (インタラクティブ:相互作用の意味)
-d
 
バックグラウンドで実行するオプション(デタッチ:切り離すの意味)
イメージ名: タグ(バージョン) 
「イメージ名」は今回はpython、タグ(バージョン)は今回はlatestです。使用するイメージ情報を確認して指定してください。

-it は指定しないと「コンテナ」を実行してすぐに終了します。「イメージ」内で何かを実行するように設定していないと、何も起こらず終了します。
今回は「python」の実行環境があるだけなので、終了しないように指定しています。

-d は指定しないと直接「コンテナ」に接続されます。
今回は指定しないと、いきなり「python」の「REPL」が使える状態になりますが、終了するとコンテナが停止してしまいます。
「python」の実行は後でコンテナ内のLinuxコンソールに接続して使用したいため、-d を指定しています。

イメージ名は、個人で「Docker Hub」に公開する時は、登録したアカウントごとに「リポジトリ」として管理されます。
この時のイメージ名は「ホスト名/リポジトリ名:タグ(バージョン)」となり、私が「python」という「イメージ」を公開する場合は「logikara/python:latest」のようになります。

・コンテナ内のコンソールに接続(exec)

「python」が実行できる「コンテナ」が起動したので、早速コンテナ内のコンソールに接続して「python」を実行してみましょう。

コンテナ内のコンソールに接続するには以下のコマンドを実行します。

docker exec -it pytest bash

実際に「PowerShell」に入力して実行すると、以下のように表示されます。

docker コンテナ内コンソールに接続

これでコンテナ内のコンソールに接続されました。
Linuxコマンドを入力することで操作できます。

試しに以下のコマンドを入力して「python」のバージョン確認をしてみましょう。

python -V

これで「Python 3.11.5」のようにバージョンが表示されて「python」がインストールされていることが確認できます。

続けて以下のコマンドを実行して「python」を1行づつ実行できる「REPL」を操作してみましょう。

python

以下のように表示され「>>>」に続けて「python」プログラムを入力すると1行づつ実行できます。

Python 3.11.5 (main, Sep 20 2023, 10:36:57) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

「Hello」と表示させる以下の簡単な「python」プログラムを実行してみましょう。

 print("Hello")

「Hello」と表示されるのが確認できたと思います。

「REPL」を終了するには「Ctrl + D」を押します。

以下のようになり「python」の「REPL」が終了します。

>>> print("Hello")
Hello
>>>
root@e4542acbfb3f:/#

「コンテナ」のコンソールから抜けるには以下のコマンドを実行します。

exit

以上までの操作を実際に「PowerShell」で実行したものは下画像のようになります。
最後に「exit」を入力して、コンテナを抜けています。

dockerコンテナへの接続

以上で「コンテナ」から抜けましたが、バックグラウンドで「コンテナ」は起動したままです。
次ではコンテナの「起動/停止/削除」コマンドについて紹介します。


・コンテナの起動/停止/削除(start/stop/rm)

コンテナの停止(stop)

「コンテナ」を停止するにはコンテナ名(ここではpytest)を指定して、以下のコマンドを実行します。

docker stop pytest

以下のコマンドで現在起動している「コンテナ」を確認できます。

docker ps

以下のコマンドでは起動していない「コンテナ」も表示できます。

docker ps -a

以上の操作を実際に「PowerShell」で実行したものは下画像のようになります。

docker stop コンテナの停止

「コンテナ」停止後「docker ps」を実行すると起動中の「コンテナ」は何も表示されないのが確認できます。
「docker ps -a」で「コンテナ」は存在しているのが確認できます。

コンテナの起動(start)

「コンテナ」を起動するにはコンテナ名(ここではpytest)を指定して、以下のコマンドを実行します。

docker start pytest

コンテナの削除(rm)

「コンテナ」を削除するにはコンテナ名(ここではpytest)を指定して、以下のコマンドを実行します。削除してもすぐにまたすぐに作成できるので一度削除してみましょう。

docker rm pytest
「コンテナ」を削除するには「コンテナ」を停止しておく必要があります。
削除実行後[docker ps -a]を実行後すると「pytest」は表示されないため、削除されたことが確認できます。

・ローカルフォルダとの同期

ここまでで「python」を実行できる「コンテナ」の作成はできましたが「python」が実行できるのは「コンテナ」の中だけでした。

次は「コンテナ」内のフォルダをパソコン側のフォルダと同期させて、パソコン側のフォルダ内の「python」プログラムを実行してみましょう。

パソコン側のフォルダを同期させたコンテナを作成するには、以下のコマンドを実行します。

以下コマンド内の*****は私のパソコンのユーザー名です。
ここは、ご自身の環境に合わせて変更してください。
docker run --name pytest -v C:/Users/*****/Documents/docker:/python -it -d python:latest

「-v」がフォルダを同期させるオプションです。
続けて同期させたいパソコン側のフォルダのパスを指定「:」で区切って「コンテナ」側のフォルダのパスを指定します。

あとは上で紹介した「コンテナ」の作成方法と同様に「-it -d」オプションを指定して「イメージ名」を指定するだけです。

今回パソコン側の同期フォルダには「Docments」フォルダ内に「docker」というフォルダを作成して指定しています。

今回パソコン側のフォルダは事前に作成していますが、フォルダがない場合は自動で作成されます。
このため、コンテナ側のフォルダ「python」は自動で作成されます。

パスの確認方法はフォルダを「右クリック」して「プロパティ」で以下のように確認できます。

フォルダパスの確認方法

パスの指定方法

「パス」の指定方法はいくつかあるので以下で紹介しておきます。
今回指定したパスは「フルパス」と呼ばれ最初から最後まで全て指定するものです。

ユーザーのホームディレクトリから指定する場合は「~(チルダ)」を使って以下のように指定します。

~/Users/*****/Documents/docker
パスの「*****」は私のユーザー名です。ここは、ご自身の環境に合わせて変更してください。

現在の作業フォルダ以下のパスを指定する場合は「.」を指定します。
「Documents」フォルダで作業している場合は以下のように指定します。

./docker

ちなみに、コンテナ内のLinux環境でのフォルダ(ディレクトリ)の移動コマンドは以下のようになります。(パスの指定方法と似ているので合わせて覚えましょう)

cd /    # ルートディレクトリへ移動
cd ~    # ユーザーのホームディレクトリへ移動
cd .    # 現在のディレクトリのまま移動しない
cd ..   # 1つ上のディレクトリへ移動
Linuxのディレクトリの移動コマンドを見るとわかるように「/」はホームディレクトリ「~」はホームディレクトリ「.」は現在のディレクトリ「..」は1つ上のディレクトリを表します。

同期フォルダの確認

パソコン側とコンテナ側の同期フォルダについて確認していきます。
まずは、以下のコマンドを実行して「コンテナ」のコンソールに接続しましょう。

docker exec -it pytest bash

以上の操作を実際に「PowerShell」で実行したものは下画像のようになります。

docker ローカルパソコンとのフォルダ同期

次に、以下のコマンドを実行してコンテナ内のフォルダの一覧を表示します。

ls

表示されたフォルダ一覧の中に「python」フォルダが確認できると思います。
確認できたら、以下のコマンドを実行して「python」フォルダへ移動しましょう。

cd python

「python」フォルダに移動してから再度「ls」コマンドを実行すると何も表示されないのが確認できると思います。

以上の操作を実際に「PowerShell」で実行したものは下画像のようになります。

docker ローカルパソコンとのフォルダ同期
これで、パソコン側の同期フォルダ「docker」に何かデータを入れて、「コンテナ」側で「ls」を実行するとパソコン側のデータが表示されるようになり、同期が完了したことが確認できます。

次からは、実際にパソコン側の同期フォルダに簡単なpythonプログラムを置いて、「コンテナ」側のコンソールから実行していきます。


・ローカルフォルダのサンプルプログラム実行

ここからはパソコン側の同期フォルダのpythonプログラムを「コンテナ」側のコンソールから実行していきます。
まずは、パソコン側の同期フォルダに「Hello!」と表示させるだけの簡単なpythonプログラムを準備します。

お好きなエディタで作成して準備していただければ良いですが、ここでは超入門ということで、念の為テキストファイルから準備する方法で紹介します。

その前に、ファイルの「拡張子」が表示されていない方は以下の手順で、パソコンのファイルエクスプローラーで[表示]→[ファイル名拡張子]にチェックマークを入れて、拡張子を表示できるようにしておいてください。

docker ローカルパソコンとのフォルダ同期

続けて、コンテナとの同期フォルダ内で、右クリックから[新規作成]→[テキストドキュメント]をクリックしてください。

docker ローカルパソコンとのフォルダ同期

下画像のように「新しいテキストドキュメント.txt」が作成されるのでダブルクリックして開きます。

docker ローカルパソコンとのフォルダ同期

テキストファイルが開いたら、以下のように「print(“Hello!”)」と入力して保存して閉じます。

docker ローカルパソコンとのフォルダ同期

次に、テキストファイルの拡張子を変更してpythonのファイルに変更します。
ファイルを右クリックして[名前の変更]をクリックして、ファイル名を以下のように「hello.py」に変更します。
以下のような警告ウインドウが表示されますが[はい(Y)]をクリックします。

docker ローカルパソコンとのフォルダ同期

下画像のように、pythonファイルが作成されたら完了です。

docker ローカルパソコンとのフォルダ同期

コンテナ側の同期フォルダでこのファイルが表示されるか確認してみましょう。
コンテナ側に接続するには以下のコマンドです。

docker exec -it pytest bash

コンテナ側のコンソールで「ls」を入力すると、以下のようにパソコン側の同期フォルダの内容がコンテナ側で表示され「hello.py」があるのが確認できます。

docker ローカルパソコンとのフォルダ同期

このまま以下のコマンドを入力して、コンテナ側で「hello.py」を実行してみましょう。

python hello.py

以下のように「Hello!」が表示されるのが確認できると思います。

docker ローカルパソコンとのフォルダ同期

以上が、コンテナ内のフォルダをパソコン側のフォルダと同期させて、コンテナ側からパソコン側のフォルダの「python」プログラムを実行する方法です。

これで「パソコン側」のpython実行ファイルを編集しながら、「コンテナ側」のpython実行環境で実行できるようになりました。

パソコン側の環境には影響が無いため設定がおかしくなったり、間違えたりしても、コンテナを消去して再度作り直せば良いだけです。パソコン側の環境が荒れることもありません。
いろいろなバージョンのコンテナを準備しておけば、バージョンごとの動作確認も簡単に行えます。

最近では、自然言語処理AIを利用した「Open Interpreter」等で、全ての作業を丸投げにしたい時に、思いもしないライブラリ等を複数インストールされたり、パスや環境変数を作られたりしますが、コンテナ内で実行すれば、パソコン側には何も影響がないため、安全にいろいろな処理を試すことができて便利です。

次は公開されている「イメージ」を使って「コンテナ」を作成するのではなく、自分オリジナルの「イメージ」を作成するための方法を紹介します。

6.オリジナルのイメージ作成

ここでは「Doker hub」で公開されている「イメージ」をそのまま使うのではなく、自分で必要な環境を準備した「イメージ」を作るための方法を紹介します。

自分オリジナルの「イメージ」を作るためには「Dockerfile」というものを使用します。

例として「Ubuntu」環境で「Python」のバージョンを指定した「python」の実行環境の「イメージ」を作成する方法を紹介します。(今回はpythonのバージョン3.10の実行環境を準備します。)


・Dockerfileの作成

「Dockerfile」とは「イメージ」を作成する時に使用される「テキストファイル」で、コンテナ内で実行されるコマンドや設定、環境変数などが記述されています。

「Dockerfile」には構築したい実行環境の「イメージ」を作成するための過程が記述されており、自分好みの再現性のある「コンテナ」を作成することが簡単にできるようになります。

「Dockerfile」と言ってもただのテキストファイルです。
「VSCode」等の高機能エディタを使用した方が効率よく作成できますが、今回は簡単なものなので引き続き「メモ帳」を使用して作成していきます。


・Dockerfileからイメージ作成(build)

ここからは、オリジナルのイメージを作成するための設計図とも言える「Dockerfile」を使ってイメージを作成(build)していきます。

「Dockerfile」はただのテキストファイルなので、お好きなエディタで作成してください。
ここでは「メモ帳」を使って作成していきます。

「Dockerfile」を作成する場所はどこでもいいですが「Dockerfile」を実行するときに「パス」を指定する必要があるため、作業フォルダを決めてそこに作成すると後々わかりやすいです。
今回はpython環境のコンテナを作るときに作成した「docker」フォルダ内に作成します。

「docker」フォルダ内で右クリックして[新規作成]→[テキストドキュメント]をクリックします。

docker ローカルパソコンとのフォルダ同期

以下のようにテキストファイルが作成されるので「メモ帳」で開きます。

docker ローカルパソコンとのフォルダ同期

テキストファイルを開いたら以下をコピペで貼り付けて保存します。
以下が「Dockerfile」の内容になり、イメージ作成時に実行するコマンドが記述されています。

# Ubuntu 22.04イメージを使用
FROM ubuntu:22.04

# パッケージリストを更新しPython 3.10のインストール
RUN apt update            
RUN apt install -y python3.10

# /pythonディレクトリを作成し、作業ディレクトリに設定
RUN mkdir /python
WORKDIR /python

# python3.10をpythonで実行できるようにシンボリックリンクを作成
RUN ln -sfn /usr/bin/python3.10 /usr/bin/python

メモ帳に貼り付けたものは以下のようになります。

Dockerfileの作成

今回の「Dockerfile」で使用したコマンドについて紹介します。
(ここで使用したものはほんの一部で他にもたくさんあります。)

コマンド機能
FROM「Docker Hub」から指定したイメージを取得。
RUNあらかじめ実行しておきたいLinuxコマンドを指定。
WORKDIRコンテナのワーキングディレクトリを指定。
コンテナのコンソールに入った時に
ここで指定したフォルダに入った状態ではじまる。
今回作成した「Dockerfile」ではベースのイメージとして「Ubuntu」を取得し、パッケージリストを更新したあと「python3.10」をインストールしています。
次に「python」フォルダを作成して作業フォルダに設定しています。
最後に、このままではpythonを実行する時に毎回「python3.10」と入力する必要があるため「python」だけで実行できるようにシンボリックリンクを設定しています。

ファイルを保存したら閉じて、以下のようにファイル名を「Dockerfile(拡張子なし)」に変更します。
拡張子についての警告ウインドウが出ますが[はい]をクリックします。

Dockerfileの作成

以上で「Dockerfile」の作成は完了です。


早速「Dockerfile」からイメージを作成(build)していきましょう。

まずは「PowerShell」を起動して「Dockerfile」を作成したフォルダに移動します。
ここでは「ドキュメント」フォルダ内の「docker」フォルダに作ったため、以下のコマンドで移動しす。

cd ~/Documents/docker

移動した「docker」フォルダ内に「Dockerfile」があるかどうか確認したい場合は「ls」コマンドを実行すると確認できます。

「Dockerfile」が確認できたら以下の「docker build」コマンドを実行してイメージを作成しましょう。

docker build -t python3.10 .

「docker build」コマンドの詳細は以下になります。

docker build -t イメージ名 Dockerfileのパス

-t イメージ名を指定するオプション
イメージ名 
自分でわかりやすいイメージ名を指定します。
Dockerfileのパス 
Dockerfileのパスを指定します。(「 . 」は現在の作業フォルダを表します)

これで「Dockerfile」に指定した内容で「イメージ」が作成されましたので、この「イメージ」を使用した「コンテナ」を作成することができます。

上で紹介した「ローカルフィルダとの同期→こちら」の時と同様に、パソコン側との同期フォルダを指定して「docker run」コマンドを実行します。コンテナ名は「python3.10」としました。

docker run --name python3.10 -v C:/Users/*****/Documents/docker:/python -it python3.10:latest
パソコン側の同期フォルダのパスはご自身の環境に合わせて書き換えてください。
また、今回はバックグラウンド実行のオプション -d は指定していません。

「コンテナ」が作成されたら、上で紹介した「ローカルフォルダのサンプルプログラム実行→こちら」と同様にpythonファイルを実行してみましょう。

以上で「Dockerfile」を使用して、オリジナルの「イメージ」を作ることができました。

作成した「イメージ」は「DockerHub」を使用して配布することもできるため、チームで同じ環境を共有したい場合や、自分の他のパソコンで同じ環境を使いたい場合に便利です。

次は「DockerHub」を使用したイメージの配布方法を紹介します。

7.Docker Hubの使い方

「Docker Hub」とは、Dockerの「イメージ」の共有、保存、管理を行うためのオンラインプラットフォームです。ここでは、この「Docker Hub」の使用方法を紹介します。

・Docker Hubでできること

「Docker Hub」でできる主な機能は以下になります。

  1. イメージの検索とダウンロード :Docker Hubでは、公開されている「イメージ」を検索し、取得することができるため、自分でイメージを作成(ビルド)する手間を省くことができます。
  2. イメージのアップロードと共有 :Docker Hubを使用すると、作成した「イメージ」をアップロードして、他の人と共有することができます。
    これにより、チームで協力して開発することが容易になります。
  3. タグ付けとバージョン管理 :Docker Hubでは「イメージ」にタグを付けてバージョン管理することができます。
    この機能を使うと、異なるバージョンの「イメージ」を簡単に切り替えたり、特定のバージョンを使用したりすることができます。
他にも、GitHub等のソースコード管理システムと統合することで、ソースコードの変更を検知して自動的に「イメージ」をビルドし、指定した場所にデプロイすること等もできます。

・アカウント登録と最初のリポジトリの作成

「Docker Hub」を使用するためにはアカウント登録が必要です。
アカウントを登録するには、以下リンクの「Docker Hub」のページへアクセスします。

Docker Hub Container Image Library | App Containerization
Welcome to the world's largest container registry built for developers and open source contributors to find, use, and share their container images. Build, push ...

以下のように「Docker Hub」のページが表示されます。

Docker Hubの使い方

ページ右側の「Create your account」に[Email][Username][Password]を以下のように入力して[Sign up]ボタンをクリックします。

Docker Hubの使い方アカウントの作成
「Username」は「Docker Hub」のアカウント名で、アップデートする「イメージ名」の一部になるため、できるだけ短くてわかりやすいものにすると良いと思います。
すでに使われているものは登録できません。

[Sign up]ボタンをクリックすると、以下のような「Sign in」画面が表示されるので、それぞれ情報を入力して[Continue]ボタンをクリックしていきます。

Docker Hubの使い方アカウントの作成

「Sign in」すると、以下のようにプランを選択するページが表示されます。
無料で使用する場合は「Personal」の欄の[Choose Personal]ボタンをクリックします。

Docker Hubの使い方

プランを選択すると以下のようなページが表示されます。

Docker Hubの使い方

メールを確認するように促されるのでメールを確認しましょう。

Docker Hubの使い方

メールの中に[Verify Email Address]というリンクがあるのでクリックします。

以下のようなページが表示されたら登録完了です。
[Create a Repository]をクリックしましょう。

Docker Hubリポジトリの作成

以下のように「イメージ」をアップロードするリポジトリの登録画面が表示されます。

Docker Hubの使い方リポジトリの作成

早速最初のリポジトリを作成してみましょう。
以下のように[Repository Name]に「test」と入力し、[Visiblity]は[Private]を選択して[Create]ボタンをクリックします。

Docker Hubの使い方リポジトリの作成
[Visiblity]の[Private]は自分にしか公開されないリポジトリです。
今回は練習なのでこちらを選択しました。一般に公開するには[Public]を選択します。
[Private]は無料のプランでは1つしか作れません。[Private]で違うリポジトリをアップロードしたい場合は削除してアップロードしなおしましょう。
有料のプランへアップグレードすることで増やすこともできます。

以下のようなページが作成され、最初のリポジトリが作成できました。

Docker Hubの使い方リポジトリの作成
リポジトリの登録画面では「イメージ」をアップロードする場所を作成しただけで、このままでは内容がありません。このため、バージョンを管理する[Tags]には何も表示されていません。
ここに[Docker commands]に書かれている「docker push イメージ名」コマンドを使用してアップロードすると使えるようになります。

次からは、リポジトリをアップロードする方法について紹介していきます。


・イメージのアップロード(push)

最初の「リポジトリ」が作成できたので、自分のオリジナルの「イメージ」をアップロードしてみましょう。
その前に、「イメージ」と「リポジトリ」の違いについて混乱しそうなので、先に整理しておきます。

「リポジトリ」とは「イメージ」を区別するための名前で、「アカウント名」「タグ(バージョン情報」と組み合わせて、以下のような構成で「イメージ名」として使用されます。

イメージ名アカウント名リポジトリ名タグ(バージョン情報)
個人が公開しているイメージ名は上記の構成ですが、公式のものは「アカウント名」無しで「python」なら「python:タグ」、「ubuntu」なら「ubuntu:タグ」のように公開されているものがたくさんあります。
「タグ」を指定しない場合は「latest(最新バージョン)」が選択されます。

それでは、作成したリポジトリに「イメージ」をアップロードしていきましょう。

まずは「PowerShell」を使用して以下のコマンドを入力し「Docker Hub」にログインします。

docker login

すでに「Docker Hub」に「Sign in」していれば、そのままログインは完了しますが、「Sign in」していない場合は以下のように「Username(メールアドレスまたはユーザー名)」と「Password」を聞かれるので入力すると「ログイン」が完了します。

Docker Hubへログイン

「ログイン」が完了したら、アップロードしたいイメージに「タグ付け」を行います。
この作業は、アップロードしたい「イメージ」をコピーし「イメージ名」を「Docker Hub」で作成した「リポジトリ名」に合わせて変更するために行います。

以下のコマンドを実行して「タグ付け」を行います。

docker tag python3.10:latest アカウント名/test:latest

今回は以前作成した「python3.10」のイメージを「Docker Hub」で作成したリポジトリ「test」に変更しています。

バージョン管理をする場合は「タグ付け」する時に「アカウント名/test:1.0」のように設定します。

このコマンドの詳細は以下になります。

docker tag アップロードしたいイメージ:タグ  アカウント名/リポジトリ名:タグ(バージョン)

実際にこのコマンドを実行した後に「docker images」コマンドを実行して「イメージ」のリストを表示すると、以下のようにイメージ「python3.10」がコピーされて、新しいイメージ「アカウント名/test」が作成されているのが確認できます。

Docker Hubリポジトリのアップロード

新しいイメージ「アカウント名/test」を「Docker Hub」へアップロードするには、以下のコマンドを実行します。

docker push アカウント名/test:latest
「アカウント名」の部分はご自身のアカウント名に置き換えてください。

これで「Docker Hub」に「イメージ」をアップロードすることができました。
「Docker Hub」に「Sign in」して確認してみましょう。

アカウント登録後に「Docker Hub」に「Sign in」した時は以下のような画面が表示されます。
アップロードした「イメージ」が表示されているので「アカウント名/test」をクリックします。

Docker Hubリポジトリのアップロード

「アカウント名/test」をクリックすると以下のように「リポジトリ」の詳細が表示されます。

Docker Hubリポジトリのアップロード

[Tags]の部分で[latest(最新バージョン)]として「6分前」にアップロードされたことが確認できます。

以上でイメージのアップロードが完了しました。
あとは、必要な時に以前紹介した「イメージの取得(pull)→こちら」のように「docker pull」コマンドで取得するだけで、この環境がどこでも使用できます。

今回はお試しなので、自分しかアクセスできない「Private」な「リポジトリ」として作成しました。

次は、誰でもアクセスして共有できる「Public」な「リポジトリ」を作成する方法を確認していきます。


・オリジナルイメージの公開

オリジナルのイメージを誰でも共有できるように一般公開する「リポジトリ」の作成方法も確認しておきましょう。

「Docker Hub」のページを開いて、以下のように表示されたら、ページ右上の[Create repository]ボタンをクリックします。

Docker Hubリポジトリの公開

以下の「リポジトリ」作成ページが表示されたら「リポジトリ名」を入力(ここでは「test2」)します。

一般公開する場合はどういう用途で作成したものなのかを[Short description]の欄に記入しておきましょう。

[Visibility]を[Public]の方にチェックマークを入れて[Create]ボタンをクリックします。

Docker Hubリポジトリの公開

以下のようなページが表示されたら一般公開する「リポジトリ」の作成は完了です。
あとは「イメージのアップロード(push)→こちら」と同様に、イメージをアップロード(push)するだけです。

[Docker commands]の欄にはアップロードするためのコマンドが生成されています。
(「tagname」にはバージョン情報を記入しましょう。)

Docker Hubリポジトリの公開

作成した「リポジトリ」で「イメージ」が公開されているかを確認してみましょう。

以下のコマンドで自分の「Docker Hubのアカウント名」を指定すると確認できます。

docker searck アカウント名

実際に「PowerShell」で確認すると以下のようになります。

Docker Hubリポジトリの公開

「アカウント名/test2」が表示されれば「イメージ」は公開されています。

これでチームで共有する場合等に「イメージ名」を伝えるだけで同じ環境で作業を行うことができるようになりました。


リポジトリの削除方法

「リポジトリ」を削除する方法も紹介しておきます。

「Docker Hub」の「リポジトリ」の情報確認ページで以下のように[Settings]をクリックして表示されるページの一番下にある[Delete repository]ボタンをクリックします。

Docker Hubリポジトリの公開

以下のようなウインドウが表示されたら「リポジトリ名」を入力して[Delete]ボタンをクリックすると削除できます。

Docker Hubリポジトリの削除

・コンテナからイメージを作成(commit)

コンテナからイメージを作成することもできるため、この方法について紹介します。

コンテナから「イメージ」を作成するには、以下のコマンドを実行します。

docker commit コンテナ名 イメージ名:タグ(バージョン)
コンテナ内で行った変更や設定などを反映させた、新しいイメージを作成して公開することができるため、共有する環境の更新も簡単に行うことができます。

8.まとめ

「Docker」のインストール方法から使い方を実践形式で詳しく紹介しました。

「Docker」は従来の「バーチャルマシン」とは違い「ゲストOS」をインストールする必要がなく、ソフトウェアや設定ファイルをパッケージ化した「コンテナ」という隔離環境の中で「ホストOS」を共有して動作させることができるため、軽量で高速、安全な仮想環境を実現できます。

使用するには「Docker Desktop」をインストールするだけで、仮想環境の「コンテナ」管理も視覚的に簡単にできます。

「コンテナ」の作成は公開されている「イメージ」を使用することで「Ubuntu」「python」「Nginx」「BusyBox」等の開発環境を簡単に構築することができます。

作成された「コンテナ」は起動、停止や削除が簡単にでき、ローカルマシンの環境に影響を与えないため、ローカルマシンの環境が荒れることもありません。

「コンテナ」を作成するための「イメージ」は、環境設定を記述した「Dockerfile」というテキストファイルから作成(build)したり、編集した「コンテナ」から作成(commit)でき「Doker Hub」を使用することで公開し共有することができます。

「Docker」はアプリケーションの開発・運用を効率化するための有力な技術で、現在では欠かせないものとなってきています。

今回は「超入門」ということで基本的な使い方の紹介のため、まわりくどい表現も多々あったかもしれません・・・
自分の理解の範囲内で、最初におさえておいた方が良いと思う内容をまとめた結果、ちょっと長くなり過ぎた気もしますが(汗)一つづつ順番に実践していただければ、基本はマスターできるように書いたつもりですので、これから「Docker」に挑戦する人の参考になれば嬉しいです。


今回の記事は、当ブログの趣旨とはちょっと異なるような気がしましたが、当ブログで扱う「IoT」対応デバイスを扱う上で必要な技術と思い、自分の技術習得も兼ねて書くことにしました。

私も今回 0から始めたので、理解するのに時間がかかりましたが、使えるようになると「IoTデバイス」を使った遠隔操作やデータ監視を行うためのサーバー管理に便利に使えそうです。(さよならMAMP!)

「Docker」の「コンテナ」で構築したサーバー環境で「IoT」デバイスを使用した遠隔操作、データ監視をする方法も今後紹介していければと思います。

コメント

タイトルとURLをコピーしました