MacでDockerコンテナを使う方法まとめ【初心者向け入門/無料で試せる】

2022-05-16
Main Image

目次

こんにちは。🐳

今回はDockerを使ってみようということでMacでDockerを始める方法をまとめておきます。

この記事を読めば実際に操作しながら、Dockerのインストール、コンテナイメージのダウンロード、コンテナの起動・終了・削除といった基本的な操作方法を学ぶことができます。

例として、nginxサーバーとUbuntuマシンの起動をコンテナで試します。

Dockerとは

Docker https://www.docker.com/ とはDocker社の開発するOSSで「コンテナのアプリケーション実行環境を管理するソフト」です。

Dockerを使うことで、コンテナの元「Dockerイメージ」によって、アプリケーション実行環境の共有・複製・構築・デプロイ・削除といった操作が簡単にできます。「コンテナといえばDocker」というくらい業界では普及しているソフトです。

そもそもコンテナとは?がわからない方は、こちらのAWS試験対策の記事にまとめたので、ご参考に。仮想マシンとの違いなど含め詳しく書いています。【SAA試験対策】AWS認定ソリューションアーキテクト-アソシエイトの暗記用語のまとめ 〜 コンテナ編

他にもAWSの解説記事を色々書いているのでご参考に。Blog/cloud/

2022年、Dockerは古い? 他のコンテナサービスを使うべき?

2021年には今まで無料で使えていたデスクトップアプリ「Docker Desktop」の大規模な企業での利用が有償化されるということで話題になり、2022年には無料猶予期間も終了しました。また、最近はKubernetes(クーバネティス)という、簡単に言うと「複数のコンテナの配置やスケーリングを管理できるサービス」でDockerのサポートが終了されるといったことがありました。[*] この影響でKubernetesユーザー界隈ではDockerを他のどのサービスに移行するかなどという議論になっていました。

とはいえ、まずは手軽にコンテナを使いたい・個人や小規模な企業では無償で使える・学習するためのドキュメントがネット上に充実していて始めやすいといった理由で、これからDockerを学んでコンテナを使っていくのはよいと思います。

[*] 参考 : Publickey | ついにKubernetesからDockershimが正式に削除、Docker Engineのサポートが終了。今年最初のKuberenetes 1.24正式版がリリース

Docker Desktopのダウンロード

それでは早速Dockerを使ってみようと思います。まずはDocker Desktopというアプリをダウンロードします。

Docker Desktop for Macは以下からダウンロードできます。

https://docs.docker.com/desktop/mac/install/

Docker install画面

自分のMacに合わせて「Intel chip」か「Apple chip」かを選んでクリックしてダウンロードします。

アプリケーションが1.62GBありましたので、Docker Desktopだけでそれくらいの容量を必要とします。

注意書きされているように、「従業員が250人以上」または 「年間の収益が$10 million USD以上」という企業で商用利用するには有償サブスクリプションが必要になりますが、個人で使う場合は無料で使えます。

Commercial use of Docker Desktop in larger enterprises (more than 250 employees OR more than $10 million USD in annual revenue) now requires a paid subscription.

Docker Desptopのインストール

ダウンロードすると「Our Service Agreement has Changed」というクジラやペンギンがいるかわいい画面が出てきます。よく読んで「Accept」しましょう。

するとタスクバーに「クジラ背中に箱が積み上がったような形」をしたフラットアイコンが何やら動き始めます。しばらくすると、「docker」と書かれたwindowが起動します。

これでインストールが完了です。

ちなみにVersionは4.8.1でした。

Dockerクライアント(CLI)が使えることを確認する

ターミナルからDockerクライアントというCLI(Command Line Interface)が使えることを確認してみます。

% docker --version
Docker version 20.10.14, build a224086
% docker version  
Client:
 Cloud integration: v1.0.24
 ...

Server: Docker Desktop 4.8.1 (78998)
 Engine:
  Version:          20.10.14
  ...

DesktopだけでなくClientのバージョンを表示できました。

Dockerコンテナを起動してみる

無事にDockerのインストールが完了したので、早速使ってみます。

Dockerコンテナの起動方法

まずはチュートリアル用のDockerイメージdocker/getting-startedを使ってコンテナを起動してみます。

$ docker run -dp 80:80 docker/getting-started
  • docker runで実行
  • -dオプションはdetatched mode (バックグランド実行)
  • -pオプションはホストとコンテナのポート番号をマッピング
  • 1文字オプションは連結できる。-d -pでも-dpでもOK。

実行すると、「ローカルにイメージが見つからない」という文が一瞬出て、すぐにインターネットからイメージをダウンロード(pull)してきます。DockerイメージはDocker Hubで管理・配信されており、そこからインストールしてくることになります。

コマンドの実行によってdockerコンテナが起動します。

起動しているDockerコンテナの情報を確認する

起動しているコンテナ一覧はdocker psで確認できます。

% docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
...

起動しているコンテナを停止する

起動しているコンテナを終了するには、docker stop <NAMES or CONTAINER ID>で終了できます。docker killでも停止できます。NAMEとIDはpsコマンドで確認した値を入力しましょう。

改めてdocker psすると、起動中のコンテナがなくなったことが確認できます。停止したコンテナも含めて確認したい場合は、docker ps -aとして確認できます。

コンテナを削除する

停止しただけではまだリソースが残っているので毎回docker ps -aで出てきます。不要になったコンテナはdocker rm <NAMES or CONTAINER ID>でリソースを削除しましょう。

Dockerイメージを確認・削除する

コンテナを削除しても、Dockerイメージはまだ残っています。このイメージを使ってdocker run <IMAGE> --name <NAME>で再度コンテナを起動することができるわけですが、不要になったイメージは削除しましょう。

まずdocker imagesでイメージファイルを確認できます。

% docker images
REPOSITORY     TAG       IMAGE ID       CREATED          SIZE
...

イメージの削除はdocker rmi <IMAGE ID or REPOSITORY>です。

Dockerコンテナでnginxサーバーを起動する

次に、試しにnginxサーバーを立ててみます。

nginx(エンジンエックス)は広くwebサーバーとして使われているフリーのOSS(Open Source Software)です。静的コンテンツの配信だけでなく、リバースプロキシ機能による動的コンテンツ配信、ロードバランサ、HTTPキャッシュとしても使うことができます。

nginxのDockerイメージもDocker Hubで配信されています。

参考 : Docker Hub | nginx

nginxのDockerイメージを実行する

以下のコマンドでnginxのコンテナが起動できます。名前は適当にMyWebServerとしておきます。最後のnginxはDockerイメージの名前です。

% docker run -d -p 80:80 --name MyWebServer nginx

一瞬Unable to find image 'nginx:latest' locallyと出ますが、先程のチュートリアルの例と同じで、ローカルになくてもDocker Hubからpullして起動してくれます。ダウンロードして起動するまで少し待ちましょう。

nginxサーバーの起動を確認する

コマンドを実行し終えたら、コンテナが起動しているはずです。docker psコマンドで確認できます。

また、ブラウザのURL欄にlocalhostと入力してアクセスすると、nginxサーバーにアクセスできることが確認できます。

screenshot of nginx on localhost

というわけで、非常に簡単にnginxサーバーを起動することができました。

Dockerで起動したnginxサーバーを停止・削除する

停止はdocker stop MyWebServerコマンドです。localhostにアクセスして、接続エラーとなっていれば停止されたことが確認できます。

後片付けとして、不要なコンテナの削除はdocker rm <Container>でした。なので今回はdocker rm MyWebServerで削除できます。docker ps -aで出てこなくなったら削除成功です。

DockerコンテナでUbuntuマシンを起動する

次にDockerコンテナにUbuntuマシンを起動してみます。

参考 : https://hub.docker.com/_/alpine

% docker pull ubuntu

pullはDocker Hubからイメージをローカルにダウンロードするコマンドです。

Ubuntuのコンテナを起動してshellコマンドを実行する

Ubuntuを使うにはbashのようなshellスクリプトで操作するので、まずはshellを起動したいと思います。

% docker run -it ubuntu /bin/bash

-itは疑似ターミナルに接続するよう命令するコマンドオプションです。

これを実行するとbashで操作できるようになるので、lsコマンドなどshellスクリプトを実行できるようになります。

参考 : Docker コマンド

起動中のコンテナの中に入ってshellコマンドを実行する

すでにコンテナが起動中であれば以下のコマンドでターミナルに接続できます。

% docker exec -it <Container> <Shell>

DockerコンテナのShellを終了して出る

Dockerコンテナのshell操作を終了して元のターミナルに戻るにはexitを入力すればOKです。

まとめ

というわけで今回はDockerコンテナを使ってみよう!という入門記事でした。

Dockerのインストールから基本的な使い方を試すことができました。

今回紹介したnginxとUbuntu以外にも、LinuxやMySQL、PostgreSQL、Redis、Node.jsといった色々なコンテナイメージがDocker Hubで配布されています。お手軽に環境構築できて気兼ねなく弄り倒せるので、色々試してみたいですね。

それではー。

参考

Docker-docs-ja | Docker ドキュメント日本語化プロジェクト

▼初心者向けのイラスト・ハンズオン多めの入門書。クジラが可愛い。

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

▼中級者向け。

Docker実践ガイド 第2版

ads【オススメ】未経験からプログラマーへ転職できる【GEEK JOBキャンプ】
▼ Amazonオススメ商品
ディスプレイライト デスクライト BenQ ScreenBar モニター掛け式
スマートLEDフロアライト 間接照明 Alexa/Google Home対応

Author

Penta

都内で働くITエンジニアもどき。好きなものは音楽・健康・貯金・シンプルでミニマルな暮らし。AWSクラウドやデータサイエンスを勉強中。学んだことや体験談をのんびり書いてます。TypeScript / Next.js / React / Python / AWS / インデックス投資 / 高配当株投資 More profile

Location : Tokyo, JPN

Contact : Twitter@penguinchord

Recommended Posts

Copy Right / Penguin Chord, ペンギンコード (penguinchord.com) 2022 / Twitter@penguinchord