Dockerの基礎知識
ここでは、簡単な Docker の使い方を説明します。 まずは慣れてみましょう。
基本的な使い方
簡単な例1: Hello world
なにはともあれ、"Hello world"してみましょう。Docker がまさしくインストールされていれば、下のコマンドが動くはずです。
docker run hello-world
それぞれのオプションの詳しい意味は、以下の通りです。
docker run:新しいコンテナを作成して起動するコマンドhello-world:使用するDockerイメージ名(「hello-world」イメージ)。このイメージは、Dockerの動作確認用で、実行すると「Hello from Docker!」などのメッセージを表示する
もし、以下のようなメッセージが出て、うまく起動できていなさそうな場合は、本ページの一番下のDockerを一般ユーザで実行するをやってみてください。
1 2 | |
初回実行時には以下のようなログが流れるはずです。"hello-world"の Docker イメージをダウンロードしてから実行しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | |
もう一度、同じコマンドを実行してみると少しログの内容が変わります。 最初の"Unable to find image 'hello-world:latest' locally"から始まる 5 行がなくなって、起動も速くなりました。 これは、"hello-world"のコンテナイメージが 1 回目の実行でダウンロードされており、2 回目の実行ではそれを再利用するからです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
簡単な例2: Webサーバの起動
次は、以下のコマンドで Web サーバを起動させてみましょう。
-d オプションは、デタッチドモードでコンテナを起動するオプションです。
これを利用した場合、そのイメージはバックグラウンドで常時動き続けます。
1 | |
仮想マシン上のブラウザで http://127.0.0.1:8080 にアクセスしてみてください。うまく行っていれば、Welcome to nginx! というページが表示されます。

コマンドの説明
このDockerコマンドでは、新しいコンテナをバックグラウンドで実行しています。
具体的には、nginxの最新版(nginx:latest)をバックグラウンド(-d)で実行し、ホストの8080ポートからコンテナの80ポートにアクセスできるように設定(-p 8080:80)し、コンテナが終了したら自動的に削除するように設定(--rm)しています。また、このコンテナはsono1という名前で識別されます(--name sono1)。
それぞれのオプションの詳しい意味は、以下の通りです。
docker container run: 新しいDockerコンテナを作成して起動-d: コンテナをバックグラウンドモードで実行--rm: コンテナが終了したときに自動的にコンテナを削除。これは停止したコンテナを残したくないときに付与する--name sono1: コンテナにsono1という名前を付ける-p 8080:80: ポートマッピングを行う。ホストの8080ポートをコンテナの80ポートにマッピング。これでホストマシンの8080ポート経由でコンテナのサービス(nginx)にアクセスできるようになります。nginx:latest: 実行するDockerイメージを指定。ここではnginxのlatestタグを持つイメージを使用しています。これは、nginxの最新版を意味します。
簡単な例3: 2つ目のWebサーバの起動
別の Web サーバを起動させてみましょう。新しくコンソールを起動して、以下のコマンドを実行してみてください。-pのあとの数字が違うことに気を付けてください。
1 | |
ブラウザで http://127.0.0.1:8081 にアクセスしてみてください。うまく行っていれば、Welcome to nginx! というページが表示されます。

今回は以下の部分を変更して、新しいコンテナをバックグラウンドで実行しています。
-p 8081:80: ポートマッピングを行う。ホストの8081ポートをコンテナの80ポートにマッピングnginx:1.18: 実行するDockerイメージを指定。ここではnginxの1.18タグを持つイメージを使用
起動しているコンテナの確認
docker ps コマンドで起動しているコンテナを確認してみてください。以下のように、2 つのコンテナが起動しているはずです。
これは、デタッチドモードでコンテナを起動しているためです。
IMAGEとPORTS、NAMESは一緒なはずですが、それ以外の項目の値は違っても問題ありません。
1 2 3 4 | |
チェックポイント:できたら見せてください
起動しているコンテナの停止
docker stop sono1とdocker stop sono2のコマンドでコンテナを停止します。
また、docker container rm sono1とdocker container rm sono2というコマンドでコンテナを破棄します。
ブラウザで http://127.0.0.1:8080 と http://127.0.0.1:8081 を開き、エラーになることを確認してみてください。
もしかすると、ブラウザのキャッシュの機能で、正しくエラーにならないかもしれません。
その際はプライベートモードでブラウザを起動し、アクセスしてみてください。
また、docker psコマンドで何もコンテナが起動していないことを確認してみてください。
ここまで、Docker とコンテナがなんとなく分かったかなと思います。 それでは、次に Docker とコンテナの概要をざっと説明します。
コンテナの基本的な話
ここでは、次に Docker とコンテナの概要をざっと説明します。
コンテナのライフサイクル
コンテナのライフサイクルと状態、それに関するコマンドの関係を示したものは以下の図です。(教科書 P.36 を少しいじったもの) コンテナはイメージという形で、Docker 社が提供するサーバに保管されています。このサーバを Docker Hub リポジトリと呼びます。
イメージを利用する典型的な手順は、以下のようなものです。
- Docker Hub リポジトリから、手元のマシンにイメージがダウンロードされる(ローカルイメージ化)
- イメージは
runコマンドにより実行される - 実行が終わったら、もしくは、停止させたい場合は、
stopコマンドで停止させる - イメージが不必要になったら、
rmやpruneコマンドで破棄する

ここでポイントなのは、Docker イメージはスナップショットである、ということです。
単に実行中のコンテナをstopするだけでは、実行データが消えてしまう、ということです。
イメージを変更するには、commitコマンドやmount機能などを利用し、新しいイメージを作成しなければなりません。
Dockerの基本的なコマンド
Docker にはいろいろなコマンドあります。以下に基本的なコマンドを列挙しますので、必要に応じて参照したり実行してみてください。
コンテナ操作
-
Docker コンテナの作成
docker container run --name sono1 nginx -
Docker コンテナでコマンドを実行
docker container run nginx date -
Docker コンテナの一覧の表示
docker container ls -
Docker コンテナ情報の確認
docker container stats --no-stream -
Docker コンテナの起動
docker container start sono1 -
Docker コンテナの停止
docker container stop sono1 -
Docker コンテナの破棄: コンテナ停止と同時にコンテナを破棄
docker container rm sono1
イメージ操作
-
ローカルの Docker イメージの一覧表示
docker image ls -
イメージの削除
docker image rm hello-world -
名前なしイメージの削除(あまり使わない)
docker image prune -f
コンテナへのアクセス
-
Docker コンテナをすべて表示
docker ps -a -
稼働しているコンテナへの接続(ログ確認など)
docker attach sono1 -
稼働しているコンテナへの接続
docker exec sono1 date
docker exec -it sono1 bash※docker start sono1などとして、コンテナを稼働させておくこと
Docker Hubとは
Docker Hubは Docker 社が提供しているクラウドサービスです。Docker Hub はクラウド上のレジストリ・サービスであり、アプリケーションやサービス・コンテナの構築と配信を行います。コンテナ化されたイメージを見付け足り、配布したり、変更の管理、ユーザーやチームのコラボレーション、開発パイプラインを通したワークフローの自動化といったことができます。
たとえば、プログラミング言語 (Python, Java)、Linux のディストリビューション (Ubuntu, Fedora)、Web サーバ (nginx, Apache)、ホームページ作成環境(Wordpress, drupal)、データベース (PostgreSQL, mongoDB)などが登録されています。
Docker Hubのイメージを探す
Docker Hub のページ上部にある、検索ボックスからイメージを検索をできます。"Python"や"CentOS"など気になるものを検索してみましょう。

また、コマンドを用いて、Docker Hub 上にあるコンテナイメージを検索したり取得できます。 タグの検索を行うコマンドはないので、少し不便ですが。
-
イメージの検索
docker search python -
イメージの取得
docker pull python
Docker Hubへのユーザー登録
-
- Docker ID: (好きなアカウント名)
- Email: (大学のとか、Gmail とか)
- Password: (わかりにくいやつ)

-
何もしなければフリープランになります。
-
登録したメールに確認メールが来ていることを確認して、リンクをクリックしたら登録完了です。