3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【イベントレポート】Docker×さくらのクラウド~開発環境構築ハンズオン

Last updated at Posted at 2019-06-26

みなさんこんにちは!
今回は、6/22(土)に開催されたOthloTechイベントのレポートを書きたいと思います。参加できなかった人にもDockerについて少しでも理解していただけることを本稿の目標としたいと思います。

とはいえ、イベント中に取ったメモを参考に本稿を作成しておりますので、間違った情報・分かりにくい表現等ございましたらご意見いただけますと幸いです。

※イベントの詳細についてはこちらをご覧ください。

OthloTechについて

OthloTechは東海圏の学生エンジニア/デザイナー界隈のコミュニケーションの活性化やスキルアップを目標に、月2回のペースで勉強会「OthloEvent」を開催している学生団体です。

毎年10月にはOthloHackという非常に大きなハッカソンイベントも開催しています。
私自身も去年参加しましたが、東京や大阪など全国各地から噂を聞きつけ参加する学生も多く、自分の実力を試したり全国にエンジニア友達を広げるのにはうってつけの場だと思います!
また、スポンサー企業の多さも特徴の1つだと思います。人気Web系企業さんのエンジニアの方がメンターについたり、アウトプットへの評価をして下さいます!

エンジニア/デザイナーを目指す学生クリエイターのみなさんには是非利用していただきたいコミュニティですので、一度HPやconnpassページを覗いてみてください!

HP: https://www.othlo.tech/
OthloHackイベントレポート: https://nagoyastartupnews.jp/hackathon-othlohack2018/
connpass: https://othlotech.connpass.com/

本イベントのサポート企業と講師の方について

本イベントはさくらインターネットさんのご協力の元イベントが開催されました。今回のイベント用に、無料でさくらのクラウドをご用意いただいたりと、ものすごく太っ腹なご対応をいただきました。

講師情報: さくらインターネット株式会社 テクノロジー・エバンジェリスト 前佛 雅人さん(Twitter:@zembutsu)


コンテナ技術とは?

コンテナ技術を使用しない場合

  • コンピュータの基本システム(CPU,メモリ,記憶装置)に依存する
    • OSの領域でファイルを定義
    • Linuxカーネル場でプロセスが走る

コンテナを使った場合

✨それぞれのプロセスを隔離できる

  • セットアップ・・・Dockerイメージ
  • プロセス管理・・・Dockerコンテナ
  • 名前空間を利用してisolate(分離)

仮想化とコンテナ化は異なる

  • 仮想化はコンピュータ資源の中に仮想的に拡張できる
  • コンテナ化はただ隔離するだけ

コンテナ技術概論

  • コンテナ・・・Dockerイメージの中にあるプログラムをプロセスで走らせる
    • 名前空間のisolate
    • cgroupでリソース制限
  • 一つのホスト上にありながら、いくつものバージョンを共存させることができる
  • コンテナごとに分離されているので、他のコンテナからは見えなくさせることができる

コンテナが流行った理由

  • クラウドが発達してきた
  • ネットにある全てのサービスを止めたくない
    • アップデートが必要
      • バージョンをあげたりするときにもサービスを止めたくない
      • 従来はロードバランサーを使っていた↔︎高価
  • 仮想化により横にスケールさせることができるので、多くのトラフィックを捌けるようになった
  • これまでは新しいサーバーを立てたりといったコストがかかっていた
  • 現存のコンピュータ資源だけでバージョンアップやバージョンダウンを実現できる
  • 世界に流行した理由
    • 会社の趣味で使っていた物をGitHubに公開したから
    • オープンソースは素晴らしい

Dockerとは?

  • 上記に挙げたコンテナ技術のうちの1つ
  • サーバ・クライアント型モデル
    • Dockerエンジンが立ち上がっていなければ動かすことはできない

実践Docker入門

  • 上記に挙げたコンテナ技術のうちの1つ
  • サーバ・クライアント型モデル
    • Dockerエンジンが立ち上がっていなければ動かすことはできない

IMG_4464.JPG

Dockerイメージはイメージレイヤの積み重ね

  • プログラムやライブラリとメタ情報(実行するプログラムやポート)といったようにイメージレイヤをいくつも積み重ねられる
    • 変更分だけをサーバ場にコピーしたりすることができる
      • 高速に移動できる
      • 開発を高速化できる
    • イメージレイヤごと他のDockerイメージに派生できる
# イメージレイヤーは1行につき1イメージレイヤーとなる
# image layer1
FROM scratch
# image layer2
ADD rootfs.tar.xz /
# image layer3
CMD ["/bin/sh"]

Dockerイメージを作るためのコマンド

docker image build -t hello:v1 .
  • v1, v2・・・といったバージョン指定も可能
  • docker-alpineもあるよ

DockerイメージをDockerHubから引っ張ってくるコマンド

docker pull [イメージ名]
docker pull hello-world
  • Dockerイメージ自体はRead-only
    • コンテナを実行するときに追加されるイメージレイヤーは読み書き可能となる
    • Pullしてきたイメージを起点として独自にアレンジしていける
      • 追加されるイメージレイヤーを書き換えても1つのアプリケーションのように振る舞うため

✨DockerコンテナはDockerイメージを実行する

IMG_4465.JPG

Dockerfile

✨Dockerfileにイメージ構築に必要な全ての命令を書く

  • Dockerイメージは読み込み専用のイメージレイヤ郡で構成
  • 各イメージレイヤがDockerfileの命令に相当する

[記述例]

FROM ubuntu:18.04
COPY . /app
RUN make /app
CMD python /app/app.py

CMDとENTRYPOINTについて

  • ENTRYPOINTは必ず実行するコマンド
  • CMDは引数がなければ実行するコマンド

Dockerネットワーク概要

  • 標準ネットワークモデル
    • bridge
      • デフォルト
      • NAT+dockerプロキシ
    • host
      • Linux上でサーバを立ち上げた時と同じ挙動
      • 細かい動作制限をかけたい場合に使用
      • ホストとネットワーク共通
    • none
      • 一切疎通しない
  • 複数のブリッジ・ネットワークを定義できる
  • 内部では、コンテナ名でIPアドレスを名前解決できる

Dockerボリューム概要

  • コンテナはボリュームと呼ばれる領域(ディレクトリ、ファイル)をマウントできる
    • それ以外からはコンテナ同士でアクセスできない
  • 読み書きを頻繁に行うものはボリュームの中に入れるのが一般的
  • 外付けハードディスクのような立ち位置
  • 3分類
    • ホストをマウント
      • ホストの中の時刻とコンテナの中の時間が一致
    • 名前付き
    • 名前なし
3
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?