MacでDockerコンテナを使う方法まとめ【初心者向け入門/無料で試せる】
目次
こんにちは。🐳
今回は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/
自分の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サーバーにアクセスできることが確認できます。
というわけで、非常に簡単に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のきほんのきほん
▼中級者向け。