MacでDockerでHello Worldするまで

今更ながらDockerを使う機会が出てきたので、Hello World的なDokerfileを作って実行するまでの備忘録です。

環境

メイン機はWindowsで、MacはサブPCとして使っているので古めのスペックです。

  • PC : MacBook Air (13-inch, Early 2015)
  • OS : macOS Monterey 12.6.2
  • CPU : Intel Core i5 (x86)

Docker Desktopのインストール

MacにDocker Desktopをインストールしていきます。homebrewでもインストールできるようですが、とりあえずは公式ドキュメントに従ってインストールしていきます。(今回はDocker DesktopのGUIは使いませんが、一緒にDockerの実行環境もインストールできるので)

私の使っているMacはIntelのCPU搭載のものなので、以下公式ドキュメントの「Mac with Intel chip」ボタンからDocker.dmgをダウンロード、インストールするだけです。

Mac
Install Docker for Mac to get started. This guide covers system requirements, where to download, and instructions on how...

インストールしたDockerアプリを起動すると利用条件的なことが書いた画面が表示されますが、今回は個人利用が目的で無償利用できる範囲内なので「accept」ボタンを押します。

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

Dokerfileの作成

Dockerfileというファイル名のテキストファイルを作成します。とりあえず最小限の以下の内容を記述します。

# 必須項目。ベースとなるイメージ。今回はubuntuの20.04を選択
FROM ubuntu:20.04

# コンテナ起動後に実行するコマンド
CMD echo "Hello World!!"

今回はベースのイメージにはubuntuを利用します。

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

イメージの作成

作成したDokerfileを以下のコマンドでビルドします。

# カレントディレクトリのDockerfileからhelloworldという名前のイメージを作成する
$ docker build -t helloworld .

イメージ一覧を表示して、イメージが作成されていることを確認します。

$ docker images
REPOSITORY          TAG       IMAGE ID       CREATED        SIZE
helloworld          latest    bdc0073740d3   3 weeks ago    72.8MB

コンテナの作成

作成したイメージからコンテナを作成します。

# helloworldというイメージからecho_helloworldというコンテナを作成する
$ docker create --name echo_helloworld helloworld

コンテナ一覧を表示して、コンテナが作成されていることを確認します。

# -aオプションをつけることで、実行中のコンテナだけでなくすべてのコンテナを表示できる
$ docker container ls -a
CONTAINER ID   IMAGE        COMMAND                   CREATED         STATUS    PORTS     NAMES
7eaa2f8e2ec5   helloworld   "/bin/sh -c 'echo \"H…"   8 seconds ago   Created             echo_helloworld

コンテナの実行

作成したコンテナを実行します。

$ docker start -a echo_helloworld
Hello World!!

参考:

【図解】Dockerの全体像を理解する -前編- - Qiita
この記事は何かイメージやコンテナなどの基本からdocker-compose、docker-machine, docker swarmなどのDocker周りの様々な概念の全体像を整理して、Dock…
docker container ls
docker container ls: コンテナーを一覧表示します。
docker start
docker start: 停止しているコンテナーを起動します。

コメント