LoginSignup
1
1

More than 3 years have passed since last update.

【技術書まとめ】『Docker/Kubernetes 実践コンテナ開発入門』を読んだまとめ

Posted at

第1章 Dockerの基礎

  • 構成ファイルとコマンドだけで環境が作れる。
  • アプリケーションと実行環境を同梱したデプロイがDocker流
  • Dockerを利用するメリット
    • 環境起因のトラブルを最小限にできる
      • 冪等性が保てる
      • いつなんど実行しても同じ結果が保証される
  • Docker Compose
    • yamlファイルで起動順を制御したりできる

第2章 Dockerコンテナのデプロイ

  • Dockerイメージとは
    • コンテナを具現化するためのテンプレート
$ docker image pull gihyodocker/echo:latest # イメージを取ってくる

$ docker container run -t -p 9000:8080 # コンテナ実行

$ curl http://localhost:9000/ # アクセスしてみる

$ docker stop $(docker container ls -q) # 停止
$ docker container stop $(docker container ls --filter "ancestor=example/echo" -q) # 停止

$ docker image build -t example/echo:latest . # dockerイメージを作成

$ docker image ls # dockerイメージを確認

$ docker container run -p 9000:8080 example/echo:latest # ポートフォワーディング
  • Dockerに対する操作
    • イメージとコンテナの2つに大別される。

Dockerイメージ

  • 「Dockerイメージをビルドする」
$ docker image --help # ヘルプを見る

$ docker search --limit 5 mysql # 検索する
  • imaegeIDはバージョン番号としての役割もある
  • latestはGitでいうこところのmasterブランチ
$ docker image tag example/echo:latest example/echo:0.1.0 # 特定地点をバージョン名などでタグ付けしておく

Dockerコンテナ

  • 実行・停止・破棄の3つの状態
$ docker container run -t -d --name gihyo-echo example/echo:latest # 名前付きコンテナをつくる(開発時に便利)
$ docker container run -it alpine:latest # ターミナルが表示されて文字が入力できる。仮想環境にログインしたように使える。

$ docker container ls -q # コンテナIDだけ抽出する
$ docker container ls --filter "name=echo1" # 名前でフィルターする
$ docker container ls -a # 終了したコンテナを含める

$ docker container rm f66f6f2013da # コンテナを破棄する
$ echo '{"version":100}' | docker container run -i --rm gihyodocker/jq:1.5 '.version' # そのときだけ必要なコンテナは --rm で即時破棄する

$ docker container logs -f &(docker container ls --filter "ancestor=jenkins" -q) # ログを見る

$ $ docker container exec -it echo sh # コンテナ内でコマンド実行する

$ docker container cp echo:/echo/main.go . # コンテナ内のものをコピーしてくる
$ docker container cp dummy.txt echo:/tmp # コンテナへコピーする

運用管理向けコマンド

  • prune
    • 実行していないコンテナを一括削除
$ docker container prune # 実行していないコンテナを一括削除
$ docker image prune # 実行していないイメージを一括削除

$ docker container stats # コンテナ単位でのリソース使用状況を見る
  • Docker Compose
    • docker同士を連携する
    • Jenkinsの例
docker-compose.yml
version: "3"
services:
  echo:
    image: example/echo:latest
    ports:
      - 9000:8080

$ docker-compose up -d # 起動
$ docker-compose down # 停止
$ docker-compose up -d --build # 毎回ビルドして裏で起動
$ docker-compose ps # 起動を確認
  • volumeはコピーでなく共有する

第3章 実用的なコンテナの構築とデプロイ

  • Dockerはアプリケーションとインフラをコンテナ単位で分離したもの
  • 1コンテナに1つの関心事
    • 「1分置きにHello!を出力する」など
    • レプリカとして複製された場合に副作用がないか
  • Dockerのポータビリティの限界
    • CPUアーキテクチャやOSの前提
    • ダイナミックリンクの課題
  • アプリケーションの挙動を環境変数で制御する

第4章 実践的なアプリケーション構築

SwarmでTODOアプリをつくる

$ docker container run -v ${PWD}:/root ch04/tododb:latest

とりあえずここまで。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1