- 更新日: 2020年01月17日
- 公開日: 2020年01月09日
【Mac版】Dockerのコンテナを作成、起動、停止、削除する方法
今回は Mac PC で Docker のコンテナを作成・起動・停止・削除する方法をご紹介。
Docker のコンテナを操作する方法は色々ありますが、今回は一つずつ作業を進めていくやり方。
文末には作業風景の動画も紹介していますので、本稿と合わせてご参照下さい。
【Mac版】Dockerのコンテナを作成、起動、停止、削除する方法
コンテナについて
Dockerコンテナを作成・起動する前に、コンテナについて少し復習しておきたいと思います。
Dockerコンテナは、 Dockerイメージを元に作成されるアプリケーションの実行部分で、 Docker の肝ともいえる部分。 AWS にアプリを Docker でデプロイする際もコンテナを使用します。
そんな Docker において重要な要素のコンテナですが、どうも Docker をはじめたばかりの段階では分かりにくいもの。分かりにくい原因はいろいろあると思いますが、多くの場合で
- コマンド操作に慣れていない
- コマンドのオプションが多すぎる
- イメージとかコンテナ、イマイチ違いが分からない
などが。
今回はこうした Docker初学者にとって取っつきにくいところを考慮し、コンテナ操作をご紹介していきたいと思います。
まず Docker のコンテナを操作するにあたって、以下のような操作パターンがあります。
今回は比較的分かりやすいパターンの
- ① コンテナの元となるイメージは Docker Hub から
- ② コンテナ作成はコマンドから
を選択。また必要最低限のコマンド入力で、コマンドに慣れていない方でも Docker に親しんで頂けるように本テキスト、工夫しました。
Macでコンテナを作成
画像クリックで拡大
docker pull httpd
今回は Docker コンテナの元となるイメージを Docker Hub から引用しますので、まずは元となる Docker イメージをダウンロードするコマンドを実行(上記)。 Docker のイメージは、 Apacheサーバー機能を搭載した httpd を選択しました。
イメージがダウンロードできたかどうかは、 docker image ls
もしくは docker images
をコマンド実行すると確認できます(上図参照)。
画像クリックで拡大
docker container create httpd
もしくは
docker create httpd
次は今ダウンロードした Docker イメージを元にコンテナを作成。コンテナの作成方法はいくつかありますが、今回は順序立てたやり方の docker container create 〇〇
を実行。 〇〇はコンテナの元となる Docker イメージになります。
そしてコンテナが正しく作成できたかどうかは、 docker container ls -a
もしくは docker ps -a
で確認可能(上図参照)。 docker ps
の方は、インスタンスのリストを表示し、結果的には docker container ls -a
も docker ps -a
も同じ内容を出力。 ps の方が短くて手間が省けそうですが、自分でナニをコマンド入力しているかわからなくなる時もあるので、最初の内は docker container ls -a
と多少面倒でも入力することをオススメします。
作成されたコンテナリストの右の方に NAME 欄があって、上図の場合では lucid_brattain と記載されています。これはコンテナ作成時に NAME を指定しなかったために、作成したコンテナに適当な NAME が付けられた結果に。今回は極力コマンドのオプションを使わずにいこうと思いますので、 NAME も気にせず進めていきます。
Macでコンテナを起動(スタート)
画像クリックで拡大
docker container start lucid_brattain
もしくは
docker start lucid_brattain
次は作成したコンテナを起動。コンテナの起動は、 docker container start コンテナ名
もしくは docker container start コンテナID
。コンテナ起動後、コンテナリストを表示させると PORTS の部分に数字が表示されています(上図参照)。
試しにブラウザで localhost:80 にアクセスすると、上図のようにエラー。 ホストを localhost から 172.17.0.2 や 0.0.0.0 などに変えても結果は同じ。これは Mac 特有の問題で、 port 80 がデフォルトでは利用できないため。この問題を解決する簡単な方法としては、コンテナのポート番号を指定してあげることがベストでしょう。
画像クリックで拡大
コンテナのポート番号を指定する方法は、以下の 2通り。
- コンテナ作成時にポート番号を指定する
- コンテナの元となるイメージを作った Dockerfile を編集する
今回は簡単な「コンテナ作成時にポート番号を指定」して、再度コンテナを起動してみます。
【コンテナにポート番号を指定するDockerコマンド】
docker container create -p 8000:80 httpd
もしくは
docker create -p 8000:80 httpd
または
docker run -p 8000:80 httpd
ポート番号の指定は、 --publish の省略形 -p を使うと解決。 8000:80 の 8000 は自分のパソコンのポート番号、 80 はコンテナ側のポート番号を意味します。 -p 8000:80 とすると、自分のパソコンで 0.0.0.0:8000 にアクセスすると動かしているコンテナの出力内容を確認できますね。
改めて docker container ls -a
を実行してみると、指定したポート番号が割り当てられていることが確認できます(上図参照)。
そしてコンテナリストに書かれている 0.0.0.0:8000 もしくは localhost:8000 にアクセスしてみると It works! と イメージ httpd 製のコンテナが起動していることが確認できます。
Macでコンテナを停止
画像クリックで拡大
docker container stop コンテナ名
もしくは
docker container stop コンテナID
あるいは
docker stop コンテナ名(コンテナID)
コンテナを止めたい時は、上記コマンドでOK。止める場面としては、ポート番号を他のコンテナで使いたい時、コンテナを削除したい時など。コンテナが止まったかどうかの確認は、コンテナをリストを表示させて PORTS の有無を確認するか、 docker container ls
or docker ps
で起動中のコンテナをリストを表示。
コンテナを止めると、先程まで表示されていた It works! も表示されなくなります。
Macでコンテナを削除
画像クリックで拡大
docker container rm コンテナ名(コンテナID)
もしくは
docker rm コンテナ名(コンテナID)
コンテナの削除は基本的に上記コマンドでOK。コンテナリストを docker container ls -a
で表示させても、コンテナが削除されていることが確認できます。
以上が Mac で Docker コンテナを作成・起動・停止・削除する方法のご紹介でした。
コンテナの作成・起動を同時に行うdocker run
画像クリックで拡大
Docker のチュートリアルを見ていますと、よく docker run ・・・・
というコマンドを見かけると思います。この docker run、 これを実行するとコンテナの作成から起動を一度に行うことが可能。試しにコンテナのない状態で docker run httpd
とすると、コンテナが作成・起動されます。
Mac の場合は、ポート番号を指定する方がいいので docker run -p 8000:80 httpd
で実行(上図参照)。そして localhost:8000 もしくはログに書かれている 172.17.0.2:8000 にアクセスすると、httpd製のコンテナが起動していることが確認できます。
画像クリックで拡大
一旦 Ctrl + C でコマンドを終了し、コンテナリストを確認するとコンテナが新しく作成されていることが確認できます。
このように Docker コンテナの生成には、いくつかの方法があることが確認できますね。
【Dockerコンテナを作成する方法】
1. docker container create イメージ名
2. docker create イメージ名
3. docker run イメージ名
同じ結果を得るにも、いくつかの種類がある点が Docker の難しい点といえるでしょう。そしてこれに docker-compose.yml でのコンテナ生成方法も学習すると、頭の中がグチャグチャになり易いでしょう。
少しでも Docker 操作のストレスを軽減するために、一つ一つ理解と実践していくことをオススメします。
MacでDockerコンテナを作成・起動・停止・削除する様子の動画
本テキストと合わせて動画、ご参照下さい。
\Webサイト担当者としてのスキルが身に付く/
まとめ
Docker の公式チュートリアルは、 Mac PC との親和性が高いといえども、はじめの内は難儀しますよね。 Docker を学習するモチベーションはいろいろあると思いますが、もし就職や転職のために Dockerスキルが必用ということであれば、手っ取り早くスキルアップできる「プログラミングスクール」、どうでしょう。
CodeCampGATE では、 4か月間の短期集中レッスンの中で Docker を指導。プログラミング初心者でエンジニア志望の方、参考になると思いますよ。
尚、 CodeCampGATE はオンライン形式のレッスンとなっており、受講者の不安や要望は事前の無料相談で解消。仮に「お金」や「時間」のことで受講を悩み、自己解決で「断念」を選ぶなら、一度「無料相談」で本当に諦めるべきか確認してみませんか。 今後ますます ITリテラリーは、生活の豊かさと直結してくると思いますので、これからの人生、後悔しないためにもチョット頑張ってみませんかね。
無料相談については随時オンラインで受付していますので、ご興味ある方は 公式ページ より確認してみて下さい。
- この記事を書いた人
- オシママサラ