👋

【環境構築】【Docker】Docker導入

2021/04/25に公開

Dockerとは

  • Dockerを使うと、開発環境がとても楽に作れるようになる

  • エンジニアは必須知識

目次

  • Dockerとは?

  • Dockerのメリット

  • インストール|Docker for Mac/Windows

  • Dockerイメージの入手とDockerHub

  • コンテナとビルド

  • 操作方法

  • Dockerfile

  • Docker compose

  • 容量に注意

Dockerとは?

仮想環境を動かす仕組み

仮想環境とは

macの上でWindowsOSやLinuxOSが動かせる

Dockerのメリット

  • コマンドを何行か打つだけで仮想環境が簡単にできるあがる

  • コードで管理できる

    • 環境を手に入れたり、人に配布したりするのがすごく楽
  • 誰のパソコンでも平等な環境が立ち上がる

    • A君の環境だけMysqlのバージョンが違うということが起きない
      • チーム開発ですごく便利
  • Dockerデプロイ

    • デプロイというとソースコードだけをデプロイすることが一般的だが、Dockerを使うとDockerの環境ごとデプロイすることも可能になる

インストール|Docker for Mac/Windows

ホストOS

  • Dockerをインストールする作業端末(Mac or win)をホストOSと呼ぶ

そのホストOSの上にDockerをインストールする

  • Mac:Docker for Mac

Dockerイメージの入手とDockerHub

Dockerイメージ

仮想環境の種類

MySQL環境を作りたい場合

  • MySQLのDockerイメージ

を手に入れる

Nginx環境を作りたい場合

  • NginxのDockerイメージを手に入れる

を手に入れる

どこで手に入れるの?

DockerHubというサイトなどで配布されている

  1. 左上の検索窓で必要なものの名前(MySQLなど)を検索する

  2. 検索結果にMySQLに関連するdockerイメージの一覧がでる

  3. 1つ選んで詳細ページに行く

  4. 必要なコマンドをコピペ

  5. ホストOS上のターミナルで実行

  6. MySQLのDockerイメージが手に入れる

コンテナとビルド

コンテナ

オブジェクト指向が分かる人用

イメージがクラス

コンテナがインスタンス

ゲーム

Dockerがプレステ

イメージがゲームソフト(どの環境か)

コンテナがセーブデータ(新規に立ち上げる)

ビルド

イメージからコンテナを作成すること

イメージ

↓ビルド

コンテナ作成

操作方法

コンテナのビル尾までの一連の流れ

基本ターミナルでコマンド操作
https://qiita.com/thirota/items/dcfc4...

1. Dockerイメージ取得

dockerhubからDockerイメージ取得

$ docker pull イメージ名

取得済みのイメージ確認

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
nginx               latest              319d2015d149        2 weeks ago         132.8 MB

2. コンテナの作成と実行(起動)

コンテナの作成と実行

$ docker run --name my-nginx -d -p 8080:80 nginx:latest

docker runは、以下2点のコマンドを内部的に実行している

  1. コンテナの作成
  • イメージの構築をする
  • 毎回ビルドする必要はない
$ docker build
  1. ビルド済みのコンテナを起動する
  • ビルド済みのコンテナを起動することで、MySQLのようなサービスがコンテナとして立ち上がる
$ docker start

3. コンテナの停止

$ docker stop my-nginx

4. コンテナの状態確認

起動中コンテナを表示

$ docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                           NAMES
ea496b1839ff        nginx:latest        "nginx -g 'daemon of   3 minutes ago       Up 3 minutes        443/tcp, 0.0.0.0:8080->80/tcp   my-nginx

すべてのコンテナを表示

  • -a オプションを付けると終了したコンテナも確認できる
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                          PORTS               NAMES
6337c95a1542        nginx:latest        "nginx -g 'daemon of   2 minutes ago       Exited (0) About a minute ago                       my-nginx  

各項目の意味は以下

項目 意味
CONTAINER ID コンテナIDの最初の12桁
IMAGE コンテナの元イメージ名
COMMAND 起動時に与えられたコマンド
CREATED コンテナの作成日からの経過
STATUS 起動してからの経過・または停止してからの経過
PORTS バインドしているポート
NAMES コンテナの名前

おまけ

「最後に起動したコンテナ」を表示

$ docker ps -l

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
d7f37176aa03        busybox             "sh"                7 minutes ago       Exited (0) 7 minutes ago                       grave_wozniak

最後に起動したコンテナから数えてn個のコンテナを表示する

$ docker ps -n=2

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
d7f37176aa03        busybox             "sh"                     19 minutes ago      Exited (0) 19 minutes ago                       grave_wozniak
8a18883e78a5        mysql               "/entrypoint.sh mysql"   3 days ago          Exited (0) 2 days ago                           testdb

コンテナ一覧表示docker psコマンドまとめ 参考(他にもある)

5. 停止したコンテナを再度実行

buildは毎回しなくて良い

docker start コンテナ名

6. コンテナの削除

停止ではなく完全に削除してしまいたい場合

  • もう一度使いたくなったらもう一度ビルドする必要がある
docker rm コンテナ名

Docker file

自作イメージ

  • 欲しいイメージが見つからない場合は自分で作ることができる

自分でイメージを作る場合はDocker fileというファイルを作る

Docker file

//どのOSを使うか
FROM どのOSを使うか 例えばUbuntuという
linuxOS


//メタ情報(このdockerfileはこういうものですよー )
LABEL version
LABEL discription

//パッケージ管理のコマンド(dockerで作りたい環境の操作)
RUN apt-get update
RUN apt-get install -y apache2 //apacheをインストール(スタート)

CMD ["apachectl", "-D", "FOREGROUND"] //apacheを起動

たったこれだけでapache環境を作るためのdocker fileを作ることができた

Docker compose

複数コンテナを一元管理してくれる

  1. docker composeインストール

  2. docker compose.ymlの設定

Docker compose詳細
http://docs.docker.jp/compose/toc.html

容量に注意

dockerはハードディスクの容量を何十GBも使う

dockerはイメージやコンテナの削除をしても、削除したはずの容量をdockerが掴みっぱなしになっていることがある

ハードディスクの何十GBもの容量が元に戻らない

ハードディスクの容量を元に戻す

ゴミ掃除コマンド

docker system prune

Docker for macにて

Docker for mac > 
preference > 
Reset > 
Reset to factory defaltsを開く

Discussion