はじめに
こんにちは!three_yagiです。
今回は自宅で使っているMacと会社で使っているWindows両方にDockerをインストールし、Docker Hubによるコンテナの共有を試してみたのでそちらの手順について説明してみようと思います。
Dockerってなに?
Docker社が提供しているコンテナ型の仮想環境を作成、配布、実行するためのプラットフォームです。
コンテナを作成することでOSなどの違いに左右されずに環境を構築することができます。
Dockerやコンテナについては過去の記事で詳しく解説されていますので、ぜひそちらをご覧ください。
Docker Hubってなに?
同じくDocker社がクラウドサービスとして提供しているDocker向けのコンテナ共有サービスです。
Docker Hubを利用することで他ユーザとのコンテナの共有を行うことができます。自分でコンテナイメージを作成する手間が省けたり、別の環境で同じコンテナを起動したりすることができます。
また、タグを利用してGitHubのようにバージョン管理を行うことも可能です。
利用にはユーザ登録が必要です。 以下の公式サイトのSign Upからユーザを登録しておきましょう。
WindowsでのDockerインストール
まずはWindowsへのインストールからです。
動作環境
Windows10 Pro (バージョン2004, OSビルド19041.572)
手順
まずは公式サイトからDocker Desktopをダウンロードしましょう。
Get Started with Docker | Docker
公式サイトからDownload for Windowsを選択してインストーラをダウンロードします。
ダウンロードした「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を押すとインストールが開始されます。
インストールが完了するとPCの再起動を求められます。
Close and restartをクリックして再起動します。
再起動し、晴れてDockerのインストール完了…となるはずでしたが、以下のようなアラートウインドウが表示されました。
どうやらWSL2のインストールが不完全なようです。 記載されているリンクからWSL2のLinuxカーネルを最新化する更新プログラムをダウンロードしましょう。
以前のバージョンの WSL の手動インストール手順 | Microsoft Docs
ダウンロードした更新プログラムを実行するとインストーラが立ち上がるので指示に従ってインストールします。 インストール自体は数秒で完了するはずです。
インストール後、再度先程のアラートウインドウに戻り、RestartをクリックするとDocker Desktopが起動しました!
設定を確認すると、WSL2もちゃんと使われていることが確認できます。
これでWindowsへのDockerインストールは完了です。
MacでのDockerインストール
次にMacへのDockerインストールについて説明します。
動作環境
MacOS Mojave (10.14)
手順
Windowsと同様、公式サイトからDocker Desktopをダウンロードします。
Get Started with Docker | Docker
ダウンロードした「Docker.dmg」を実行すると以下のウィンドウが表示されます。DockerアイコンをApplicationフォルダにdrag and dropしてDockerをアプリケーションに追加しましょう。
Launchpadに追加されたDockerアイコンをクリックするとDocker Desktopが起動します。
初回起動時にはDockerの機能がネットワークを使用することに対しての許可を求められます。"OK"を選択し、OSユーザーのパスワードを入力してこれを許可します。
Docker Desktopの初期画面が表示されました。
これでMacへのDockerのインストールは完了です!
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にログインするとプッシュしたコンテナイメージが存在することを確認できました。
コンテナイメージを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で起動したときと同じ結果が出力されました。
これでMacとWindowsの間でコンテナの共有ができました。簡単ですね!
----Windows---- >docker run -it --rm xxxxxxx/cheers2019 ~~結果略~~
おわりに
Docker Hubを利用してWindowsとMacの両者間でコンテナを共有することができました。
Docker Hubを活用することで別PC、別OSでも簡単に同じ環境を構築できます。複数台のPCをまたいでの開発でも環境構築に頭を悩ませることなく快適に開発できそうです。もちろん他の人とも共有できるので、複数人の開発でも効力を発揮しそうですね。
エンジニア中途採用サイト
ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
ご興味ありましたら是非ご確認をお願いします。
https://career-recruit.rakus.co.jp/career_engineer/カジュアル面談お申込みフォーム
どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
以下フォームよりお申込みください。
forms.gleイベント情報
会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください! rakus.connpass.com