【環境構築】【Docker】Docker導入
Dockerとは
-
Dockerを使うと、開発環境がとても楽に作れるようになる
-
エンジニアは必須知識
目次
-
Dockerとは?
-
Dockerのメリット
-
インストール|Docker for Mac/Windows
-
Dockerイメージの入手とDockerHub
-
コンテナとビルド
-
操作方法
-
Dockerfile
-
Docker compose
-
容量に注意
Dockerとは?
仮想環境を動かす仕組み
仮想環境とは
macの上でWindowsOSやLinuxOSが動かせる
Dockerのメリット
-
コマンドを何行か打つだけで仮想環境が簡単にできるあがる
-
コードで管理できる
- 環境を手に入れたり、人に配布したりするのがすごく楽
-
誰のパソコンでも平等な環境が立ち上がる
- A君の環境だけMysqlのバージョンが違うということが起きない
- チーム開発ですごく便利
- 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というサイトなどで配布されている
-
左上の検索窓で必要なものの名前(MySQLなど)を検索する
-
検索結果にMySQLに関連するdockerイメージの一覧がでる
-
1つ選んで詳細ページに行く
-
必要なコマンドをコピペ
-
ホストOS上のターミナルで実行
-
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点のコマンドを内部的に実行している
- コンテナの作成
- イメージの構築をする
- 毎回ビルドする必要はない
$ docker build
- ビルド済みのコンテナを起動する
- ビルド済みのコンテナを起動することで、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イメージとして配布することができる
- docker fileは、この他にも様々な書き方がある
- Docker fileのコードリスト 参考
Docker compose
複数コンテナを一元管理してくれる
-
docker composeインストール
-
docker compose.ymlの設定
Docker compose詳細
容量に注意
dockerはハードディスクの容量を何十GBも使う
dockerはイメージやコンテナの削除をしても、削除したはずの容量をdockerが掴みっぱなしになっていることがある
ハードディスクの何十GBもの容量が元に戻らない
ハードディスクの容量を元に戻す
ゴミ掃除コマンド
docker system prune
Docker for macにて
Docker for mac >
preference >
Reset >
Reset to factory defaltsを開く
Discussion