Pythonによるデータ分析・機械学習ブログ

Pythonによるデータの前処理・グラフ化、機械学習、統計解析、画像処理、Webスクレイピング、自然言語処理の基礎について紹介していきます。

MENU

Dockerのインストールとコンテナの起動~停止、保存について

はじめに

仮想化技術

 近年、IT業界では「仮想化」という言葉が頻繁に聞かれるようになり、ネットワークやサーバーの仮想化が進んでいます。仮想化技術の誕生によって、1台のサーバー上に複数のサーバー環境を構築することが可能になりました。サーバー環境を分けて構築することで、異なるOS上で構築したり、パッケージのバージョンに合わせてソフトの環境構築が可能となります。

Dockerとは

 このようなサーバーの仮想環境の構築で注目を浴びているのが、コンテナ型仮想化環境技術であるDockerです。Dockerを用いることでホストOS上にコンテナと呼ばれる仮想環境を用意することができ、そのコンテナ内でアプリケーション等を動作させることができます。Dockerの主なメリットは3つあります。

  1. 高速に動作する点です。Dockerコンテナはカーネル部分をホストOSと共有するため、リソース使用量も非常に少なく、高速に動作します。
  2. 動作環境構築の工数削減ができる点です。Dockerhubと呼ばれるリポジトリUbuntuDebian等のコンテナイメージが用意されており、そちらを取得してコンテナを作成することができ、比較的速く環境を用意できます。さらにDockerfileを用いるとapt install等のコマンドを手動で実行することなく、動作環境を自動的に構築してくれます。Dockerfileはコンテナイメージを管理するためのファイルで、動作環境を構築時に実行するコマンドを記述しておくことで、ビルド時に動作環境構築を自動的に実施してくれます。このDokcerfileを用いることで単純化・標準化することができます。
  3. 異なるマシン上への移行が可能な点です。一度作成したコンテナイメージを別のマシンに移して、コンテナイメージからコンテナを作成することができます。この利点により複数人で共同で開発する場合、開発から運用に移行する際などに非常に便利となります。

 本記事ではUbuntuでのDockerのインストール方法とDockerコンテナの起動、停止、保存方法までを簡単に紹介します。

 

 

 

1. UbuntuでのDockerのインストール

基本的にはDocker公式が公表している方法でインストールします。以下がそのページです。

docs.docker.com

これに従って以下のコマンドでDockerをインストールします。

 

2. Docker Hub

Docker HubはDockerイメージのリポジトリとなっています。一般的なOS等が公開されているリポジトリや各ユーザーが公表しているリポジトリなどがあります。例えば以下のリンクではUbuntuPythonmysqlなどの公式イメージが公開されています。

https://hub.docker.com/search?q=&type=image&image_filter=official

 

3. Dockerコマンド一覧

主なDockerコマンドを紹介します。細かい操作は第5章で紹介しますので、ここでは淡々とコマンドを羅列します。

コンテナイメージの取得例

コンテナイメージからコンテナ生成・起動例

コンテナとの接続を終了(コンテナ内で実行)

コンテナの一覧確認

コンテナの起動

稼働中のコンテナに接続

稼働中のコンテナ内でコマンド実行

コンテナの停止

コンテナの削除

コンテナイメージの削除

コンテナからコンテナイメージを作成

コンテナイメージをtarファイルで保存

tarファイルからコンテナイメージを読込

コンテナをtarファイルで保存

 

4. Docker Hubからコンテナイメージの取得

4.1 debianコンテナイメージ

それでは試しにDocker Hubからコンテナイメージを取得したいと思います。ここではdebianを取得します。

以下のリンクが公式ページになります。

https://hub.docker.com/_/debian

 

コンテナイメージでは「docker pull」コマンドを実行します。その際にイメージ名とタグ名を指定します。上記リンクのTagsのページを見るといくつかTAGがあると思います。今回は下図にあるようなdebianのタグ名「bullseye-slim」を取得したいと思います。

上図の右上端を見ると「docker pull debian:bullseye-slim」とありますね。このまま実行してあげればコンテナイメージを取得することができます。

コンテナイメージが完了すると以下のような状態になります。

コンテナイメージが取得できたかを確認するには「docker images」コマンドで確認することができます。実行すると以下のようにREPOSITRY、TAG、IMAGE_ID、CREATED、SIZEの5列の表が表示され、そこに先程ダウンロードしたdebain:bullseye-slimがあるのが確認できると思います。

ここまでのコマンドとアウトプットをまとめると以下のようになります。

 

4.2 Ubuntuコンテナイメージ

Ubuntuのコンテナイメージをダウンロードしたい場合には「docker pull ubuntu」となります。公式ページは以下のリンクになります。

https://hub.docker.com/_/ubuntu/

Ubuntu:20.04の場合は以下のようダウンロードします。

ダウンロード後に「docker images」を実行すると以下のようになっており、ダウンロードできたことが確認できます。

 

5. コンテナの操作例の紹介

5.1 コンテナの起動、停止

それではコンテナイメージを用いてコンテナを起動したいと思います。ここではubuntu:20.04のコンテナイメージを用いてコンテナを作成、起動したいと思います。

まずはコンテナの一覧を表示しておきましょう。コンテナ一覧の確認には「docker ps -a」コマンド用います。下図がその結果ですが、まだ何もないのが確認できます。

次に、本題のubuntu:20.04のコンテナイメージを用いてコンテナを作成、起動したいと思います。コンテナの作成・起動には「docker run」コマンドを用います。

ここでは、「docker run -it --name=<コンテナ名> <コンテナイメージ>:<タグ> bin/bash」のようなコマンドの構成となります。-itを引数に与えることでコンテナ内で操作可能にします。実行すると下図のように、「root@70c48b86fbb2:/#」が出てきます。これでコンテナ起動ができ、コンテナに接続することができました。

ここからのコマンドはコンテナ内でコマンドを実行していることになります。試しに「apt-get update」を実行してみてください。それがうまくいきましたら、開発に必要なパッケージをインストールしてみてください。普段通りのコマンド実行で問題ありません。

それでは、コンテナの外に出るには「exit」コマンドを実行します。

ここで、再度コンテナ一覧を確認しましょう。「docker ps -a」コマンドでコンテナの一覧を確認します。先程作成したtestという名前のコンテナが作成されているのが確認できますね。

 

さて、再度コンテナに接続したいと思います。上図のコンテナ一覧を見ると、STATUSが「Exite ...」とあり、コンテナが停止している状態です。これは「docker run」コマンド後に「exit」でコンテナの外に出た場合、コンテナも停止してしまいます。再度起動する必要がありますので、「docker start <コンテナ名>」コマンドでコンテナを起動して、「docker exec -it <コンテナ名> bin/bash」で稼働中のコンテナで操作ができます。

再度「exit」コマンドでコンテナの外に出て、「docker ps -a」コマンドでコンテナの状態を見てみます。STATUSを見ると「Up ...」とあり、コンテナが稼働中であることが確認できます。「docker exec」で稼働中のコンテナで操作した後で「exit」コマンドを実行してもコンテナは停止しないことが確認できます。

 

5.2 コンテナからコンテナイメージの作成

ご自身でコンテナ内の操作でパッケージ等をインストール後、そのコンテナの環境をコンテナイメージとして保存できます。コンテナからコンテナイメージを作成する方法は「docker commit」コマンドを用います。ここでは、testという名前のコンテナからコンテナイメージ名test-image、タグ名v1のコンテナイメージを作成します。

 

5.3 コンテナイメージをtarファイルで保存

コンテナイメージを共有する際などはtarファイルとして保存することができます。コンテナイメージをtarファイルとして保存する方法は下図のように「docker save」コマンドを実行します。

 

5.4 tarファイルからコンテナイメージの読み込み

tarファイルをコンテナイメージとして読み込む方法は下図のように「docker load」コマンドを実行します。

 

オススメ書籍

仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん

Docker実践ガイド第2版 コンテナ環境の構築・運用・活用

たった1日で基本が身に付く! Docker/Kubernetes超入門

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

本記事ではUbuntuでのDockerのインストール方法とDockerコンテナの起動、停止、保存方法までを簡単に紹介しました。Dockerの操作としては基本的な操作になりますので、ぜひ覚えましょう。