RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

MacとWindowsにDockerをインストールしてDocker Hubを使ってみた

f:id:tech-rakus:20201022151800p:plain

はじめに

こんにちは!three_yagiです。

今回は自宅で使っているMacと会社で使っているWindows両方にDockerをインストールし、Docker Hubによるコンテナの共有を試してみたのでそちらの手順について説明してみようと思います。

Dockerってなに?

Docker社が提供しているコンテナ型の仮想環境を作成、配布、実行するためのプラットフォームです。

コンテナを作成することでOSなどの違いに左右されずに環境を構築することができます。

Dockerやコンテナについては過去の記事で詳しく解説されていますので、ぜひそちらをご覧ください。

tech-blog.rakus.co.jp

tech-blog.rakus.co.jp

Docker Hubってなに?

同じくDocker社がクラウドサービスとして提供しているDocker向けのコンテナ共有サービスです。

Docker Hubを利用することで他ユーザとのコンテナの共有を行うことができます。自分でコンテナイメージを作成する手間が省けたり、別の環境で同じコンテナを起動したりすることができます。

また、タグを利用してGitHubのようにバージョン管理を行うことも可能です。

利用にはユーザ登録が必要です。 以下の公式サイトのSign Upからユーザを登録しておきましょう。

Docker Hub

f:id:three_yagi:20201022103903p:plain

WindowsでのDockerインストール

まずはWindowsへのインストールからです。

動作環境

  Windows10 Pro (バージョン2004, OSビルド19041.572)

手順

まずは公式サイトからDocker Desktopをダウンロードしましょう。

Get Started with Docker | Docker

公式サイトからDownload for Windowsを選択してインストーラをダウンロードします。

f:id:three_yagi:20201022091004p:plain

ダウンロードした「Docker for Windows Installer」を起動すると以下の画面が表示されます。

Windows10のバージョン2004からWSL2が正式に導入され、Dockerのバックエンドとして利用できるようになりました。

以前まではWindowsでDockerを利用する場合はVirtual BoxやHyper-V を利用する必要がありましたが、WSL2を利用することでより軽量かつ高速にDockerを使用することができます。

ということで、今回はWSL2でDockerの環境を構築します。「Install required Windows components for WSL2」にチェックをいれてOKを押すとインストールが開始されます。

f:id:three_yagi:20201022085701p:plain


インストールが完了するとPCの再起動を求められます。

Close and restartをクリックして再起動します。

f:id:three_yagi:20201022094026p:plain


再起動し、晴れてDockerのインストール完了…となるはずでしたが、以下のようなアラートウインドウが表示されました。

どうやらWSL2のインストールが不完全なようです。 記載されているリンクからWSL2のLinuxカーネルを最新化する更新プログラムをダウンロードしましょう。

f:id:three_yagi:20201022095938p:plain

WSL 2 Linux カーネルの更新 | Microsoft Docs

f:id:three_yagi:20201022095011p:plain

ダウンロードした更新プログラムを実行するとインストーラが立ち上がるので指示に従ってインストールします。 インストール自体は数秒で完了するはずです。

f:id:three_yagi:20201021200714p:plain

インストール後、再度先程のアラートウインドウに戻り、RestartをクリックするとDocker Desktopが起動しました!

設定を確認すると、WSL2もちゃんと使われていることが確認できます。

f:id:three_yagi:20201022101604p:plain

これでWindowsへのDockerインストールは完了です。

MacでのDockerインストール

次にMacへのDockerインストールについて説明します。

動作環境

  MacOS Mojave (10.14)

手順

Windowsと同様、公式サイトからDocker Desktopをダウンロードします。

Get Started with Docker | Docker

f:id:three_yagi:20201022091203p:plain

ダウンロードした「Docker.dmg」を実行すると以下のウィンドウが表示されます。DockerアイコンをApplicationフォルダにdrag and dropしてDockerをアプリケーションに追加しましょう。 f:id:three_yagi:20201022085745p:plain

Launchpadに追加されたDockerアイコンをクリックするとDocker Desktopが起動します。

初回起動時にはDockerの機能がネットワークを使用することに対しての許可を求められます。"OK"を選択し、OSユーザーのパスワードを入力してこれを許可します。 f:id:three_yagi:20201022085806p:plain

Docker Desktopの初期画面が表示されました。

これでMacへのDockerのインストールは完了です! f:id:three_yagi:20201022032419p:plain

Docker Hubでコンテナを共有

MacとWindowにDockerがインストールできたので、Docker Hubを使って両者間でコンテナを共有してみます。

コンテナイメージをPushする

まずMac側で共有するコンテナイメージを作成します。GitHubチュートリアルを参考にコンソール上にアスキーアートを表示するコンテナを作成します。

ターミナルを開いたら任意の作業ディレクトリに移動して、git cloneでDockerリポジトリをクローンします。

----Mac-----
$ git clone https://github.com/docker/doodle.git
Cloning into 'doodle'...
remote: Enumerating objects: 73, done.
remote: Total 73 (delta 0), reused 0 (delta 0), pack-reused 73
Unpacking objects: 100% (73/73), done.
docker build

次にコンテナイメージをビルドします。

ビルドは「docker build」コマンドで実行できます。「-t」オプションには作成するコンテナイメージのイメージ名を指定します。今回は"xxxxxxx(DockerHubアカウント名)/cheers2019"をイメージ名としてビルドしました。

----Mac----
$ cd doodle/cheers2019 
$ docker build -t xxxxxxx/cheers2019 .
[+] Building 66.4s (12/12) FINISHED                                             
 => [internal] load build definition from Dockerfile                       0.0s
〜〜中略〜〜
 => => naming to docker.io/xxxxxxx/cheers2019
docker run

ビルドが完了するとコンテナを起動することができます。

「docker run」コマンドでコンテナを起動します。「-it」は対話的な操作を可能にするオプションで、「--rm」はコンテナ終了時にコンテナを自動的に削除するオプションです。

起動に成功すると"Cheer"のアスキーアートが出力されます。ぜひご自身の端末で試してみてください。

----Mac----
$ docker run -it --rm xxxxxxx/cheers2019
docker push

作成したコンテナイメージをDocker Hubにプッシュしてみます。

「docker login」でDocker Hubにログインします。先程登録したログインIDとパスワードを入力して自分のアカウントにログインします。

「docker push」で自身のアカウントのDocker Hubのレポジトリにコンテナイメージをプッシュできます。 "Pushed"と表示されたら成功です。

----Mac----
$ docker login
Username: xxxxx
Password: 
Email: XXXXXX@XXXXXXX
Login Succeeded
$ docker push xxxxxxx/cheers2019
The push refers to repository [docker.io/xxxxxxx/cheers2019]
1e2fa4a93dd1: Pushed 
latest: digest: sha256:7be1af3fac3de80eac34491a7e031123ba5488d92a8f2e563c2a3b057d3253b7 size: 527


ブラウザのDocker Hubにログインするとプッシュしたコンテナイメージが存在することを確認できました。

f:id:three_yagi:20201022120336p:plain

コンテナイメージをPullする

ではDocker Hub上にあるコンテナイメージをWindows側でPullしてみましょう。

docker pull

コマンドプロンプトを起動し「docker login」でDocker Hubにログインします。

「docker pull」でGit Hubのレジストリからコンテナイメージをローカルにもってきます。 "Pull complete"と表示されたら成功です。

----Windows----
> docker pull xxxxxxx/cheers2019
Using default tag: latest
latest: Pulling from xxxxxxx/cheers2019
3b5197dd02a5: Pull complete
Digest: sha256:7be1af3fac3de80eac34491a7e031123ba5488d92a8f2e563c2a3b057d3253b7
Status: Downloaded newer image for xxxxxxx/cheers2019:latest
docker.io/xxxxxxx/cheers2019:latest

「docker images」でローカルにあるコンテナイメージを確認できます。

Pullしたコンテナイメージがローカルにあることを確認できました。

----Windows----
>docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
xxxxxxx/cheers2019   latest              b0d6c9e01637        37 hours ago        4.01MB

「docker run」でコンテナの起動も実行してみたところ、Macで起動したときと同じ結果が出力されました。

これでMacWindowsの間でコンテナの共有ができました。簡単ですね!

----Windows----
>docker run -it --rm xxxxxxx/cheers2019
~~結果略~~

おわりに

Docker Hubを利用してWindowsMacの両者間でコンテナを共有することができました。

Docker Hubを活用することで別PC、別OSでも簡単に同じ環境を構築できます。複数台のPCをまたいでの開発でも環境構築に頭を悩ませることなく快適に開発できそうです。もちろん他の人とも共有できるので、複数人の開発でも効力を発揮しそうですね。

Copyright © RAKUS Co., Ltd. All rights reserved.