①Dockerを初めて導入して基本操作する (2020.4時点)


雑食系オンラインサロンにてDockerの重要性を理解しましたので、
このたび、ポートフォリオづくりの流れで実装していきます。

本稿は、
DockerHubアカウント取得 → DockerDesktop(mac)インストール → 操作の練習
という流れです。

自分と同じように、
何していいかわからないゼロスタートの方になるべくわかるようにしたいと思っています。

前提

macOS : Catalina 10.15.3
ruby : 2.5.1
Rails : 5.2.4.1
ターミナル使用
Docker version 19.03.8

では、はじめましょう!

1.Dockerをインストールする

・Docker for Macをインストールする

・DockerHubのアカウントを作ってログイン、DockerHubからimageをダウンロードします。


・DockerHubのURLはこちら
  https://hub.docker.com/editions/community/docker-ce-desktop-mac

では、はじめに、ユーザ新規登録します。

サインインしたら、「Get Docker」ボタンを押します。

ダウンロードを終えると以下の指示がありますので、Dockerをアプリフォルダに移します。

アプリを起動したら、サインインを完了させます。

Dockerがインストール完了できたか、ターミナル上で docker version コマンドを実行します。

ターミナル
docker version

こんな感じになります。

2.Dockerコマンドでコンテナイメージを取得する

コンテナを作成する際、Dockerfileを作成しなくともコマンドだけでコンテナの起動が可能です。
Docker Hub上に存在する「Nginx(エンジンエックス)」 のコンテナイメージをローカルにPULLしてみます。

Nginx(エンジンエックス)は本番環境で使用するフリーWebアプリケーションサーバーです。
当方は、デプロイでよくお世話になっています。

・Docker Hub上で「Nginx」 を検索すると PULLコマンドが右の黒いボックスに出てきます。

コマンド「docker pull nginx」をターミナル上にコピペして実行してみます。

ターミナル
docker pull nginx

こんな感じになります。

docker imagesコマンドを実行してイメージを取得できているか確認します。

ターミナル
docker images

こんな感じです。

3.取得したコンテナイメージを「 runコマンド 」で起動する

コマンド
docker run -d -p[ホスト側ポート]:[コンテンナ側ポート][タグ名] 
コマンドの補足
-d :  バックグラウンドでコンテナ起動
-p :  ポートの指定 ホスト側は localhostポート番号 となります
       (railsでlocalhost:3000打ちますよね、ご存知の方は多いかと思います、それです)

タグ名 : nginx
       任意で、タグ名の前に「 test 」というコンテナネームをつけてみました。

ホスト側のポート番号を8081 →localhost:8081
コンテンナ側ポート番号を80 にして
「runコマンド」 を実行してみます。

ターミナル
docker run -d -p 8081:80 --name test nginx

こんな感じです。

ブラウザで URLに 「localhost:8081」 と入力しますと表示されました。起動してるっぽいけど?

では、以下のコマンドでコンテナの状態を見てみます。

コマンド
docker ps -a
  or
docker container ls

真ん中あたり 「STATUS が Up」 になっていますので、起動しています。

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

以下のコマンドでコンテナを停止させてみます。

コマンド
docker stop [コンテナID]
  or
docker container stop [コンテナ名]

今回は、コンテナ名で実行してみます。

ターミナル
docker container stop test

こんな感じです。

ぱっと見、よくわかりませんので、以下のコマンドで状態を確認します。

コマンド
docker container ls
   or
docker container ls -a

コマンド docker container ls -a を見ると、
STATUS が Exited(終了しました) なので、停止したようです。

ブラウザで localhost:8081 と入力しますと、こうなりました。

これでコンテナは停止していることがわかります。

5.停止したコンテナを削除する

今回は、もう必要ありませんのでコンテナを削除します。

コマンド
docker rm [ コンテナID ]  カッコは要りません

削除したいコンテナのIDを確認します。

ターミナル
docker container ls -a

実行するとこんな感じです。


削除したいコンテナのIDがわかったので、削除コマンドを実行します。

ターミナル
docker rm c6d60e5c8239
ターミナル
docker container ls -a

こんな感じです。

無事削除できたようです。

6.コンテナイメージを削除する

コンテナを削除できましたので、あとは残っているコンテナイメージまで削除します。

docker images を実行してコンテナイメージの状態を確認します。

ターミナル
docker images

こんな感じです。

イメージを削除するコマンドを実行します。

コマンド
docker image rm [ image名 or imageID ] カッコは不要です

今回はImageIDを使ってみます。

ターミナル
docker image rm ed21b7a8aee9

実行します。
続いて、削除できたか確認します。

ターミナル
docker images


こんな感じです。

無事、イメージを削除できました。

7.まとめ

1. DockerHub からimage(コンテナイメージ)を取得する
 ・image取得コマンド: docker pull [image名]
 ・オブジェクト指向で例えると、image は クラス (例:"くるま"という概念の設計図)
 ・コンテナの素になるもの

2. docker run コマンドを実行して、image(コンテナイメージ)からコンテナ(contaier)ができる
 ・オブジェクト指向で例えると、container は インスタンス (例:"くるま"概念から作った"トヨタ車"の設計図)
 ・コンテナはイメージから作られる実際の動作環境
 ・原則1コンテナ1アプリ
 ・コンテナでは環境変数やポートなどさまざまな設定ができるようになる

3.もし、いらなくなったら、コンテナを停止して削除 → コンテナの素のイメージも削除する
 ・コンテナの停止コマンド: docker container stop [コンテナID or コンテナ名]
 ・コンテナの削除コマンド: docker rm [コンテナID]
 ・イメージの削除コマンド: docker rmi [イメージID]

8.最後に

当方、
実務未経験+初学者+テッ○キャンプ卒業+転職活動中であります。
初めての投稿です。
この先のdocker実装を進めつつ、わかりやすい記事を寄稿していきたいと考えています。

・参考にさせていただいた記事です。
 **DockerをMacにインストールする(更新: 2019/7/13)
  本当にありがとうございました。

ローカル・Dockerで開発環境を整えるまでの続編

②Dockerを初めて導入してRails sする (2020.4時点)
③Docker MYSQLにデモデータ(seed_fu)を投入する!(2020.4時点)
④ローカルDocker環境でデータ永続化、entrypointでseed_fuをやり直しする(2020.4.時点)
⑤AWS仮想サーバを利用する、AWSアカウント作成 + EC2インスタンス作成(2020.4時点)
こちらも続けて見ていただけると流れがわかると思います。