デブサミ2020関西【A-5】コンテナの作り方~hello-worldイメージの理解から始めよう~ #devsumiA #devsumi

0
前佛 雅人 - Masahito Zembutsu @zembutsu

この後のA-5セッションで登壇します。イメージとコンテナの違いが分かれば、Docker基本の半分は理解できたと言えるでしょう。この時間はチャットに常駐していますので、何か気になる事や分かりづらい点がありましたら、お声がけください。 #devsumiA #devsumi

2020-08-27 14:07:23
UT@中年子持ちエンジニア @hidemusiam

14:10~14:55までのコンテンツが全部興味あるやつや。聖徳太子になって全部聞きたい! #devsumi #devsumiA #devsumiB #devsumiC

2020-08-27 14:09:15
うひーマン @norikoni

初学者にはDocker Imageをつかむのが難しい。 #devsumiA

2020-08-27 14:11:48
うひーマン @norikoni

Dockerとは プロセスをコンテナ化(isolate)して 簡単に開発、移動、実行できる #devsumiA

2020-08-27 14:13:10
うひーマン @norikoni

コンテナ技術をDockerという仕様を 使って動かす。 →すべての依存関係をパッケージ化する。 #devsumiA

2020-08-27 14:13:52
うひーマン @norikoni

名前空間を使って分離する。 #devsumiA

2020-08-27 14:17:38
Developers Summit(デブサミ)🏔 翔泳社 CodeZine主催エンジニアイベント @devsumi

A-5セッション『コンテナの作り方~hello-worldイメージの理解から始めよう~』前佛 雅人さん(さくらインターネット)です! #devsumiA #devsumi pic.twitter.com/fY7hQnqpLP

2020-08-27 14:17:38
拡大
うひーマン @norikoni

コンテナは特別なプロセスの状態。 コンテナのファイルシステムは、他のコンテナの ファイルシステムとは隔離されて動いている。 #devsumiA

2020-08-27 14:19:28
前佛 雅人 - Masahito Zembutsu @zembutsu

今回hello-worldを取り上げたのは、docker run hello-world コマンドの後ろ側を想像すると、基本的な部分が全部わかるだろうという視点です。#devsumiA

2020-08-27 14:21:36
前佛 雅人 - Masahito Zembutsu @zembutsu

個人的には、コマンドで「docker run …とは、Dockerfileとは…」と覚える前に、まずはイメージ(イメージ・レイヤ)や、Dockerの登場背景などを分かっておけば、どうしてこんな実装(コマンド)になっているのか?が分かりやすいと思います。#devsumiA

2020-08-27 14:21:36
うひーマン @norikoni

コンテナ: 名前空間が分離されているのみなのでsshは不要 仮想マシン: sshして中を設定する #devsumiA

2020-08-27 14:22:18
うひーマン @norikoni

Dockerの登場背景 複雑なことをシンプルにしたい。 アプリケーションの開発や移動を楽にしたい #devsumiA

2020-08-27 14:28:04
うひーマン @norikoni

アプリケーションの展開時にバージョン差異で 動かないという話が多数。 →仮想マシンをリモート転送するのは時間がかかる。 →軽いコンテナを使って開発環境を展開 #devsumiA

2020-08-27 14:31:10
うひーマン @norikoni

$ docker pull hello DockerHubからダウンロードするか自分で イメージを作成する。 #devsumiA

2020-08-27 14:32:41
前佛 雅人 - Masahito Zembutsu @zembutsu

先ほどの、初めてDockerのお披露目となった映像がこちらです。2013年に登場した瞬間 #devsumiA > The future of Linux Containers - YouTube youtube.com/watch?v=wW9CAH…

2020-08-27 14:34:58
拡大
うひーマン @norikoni

$ docker image build -t IMAGE:TAG FROMとADDとCMDの組合せ 利用するときはレイヤを1つに #devsumiA

2020-08-27 14:36:15
うひーマン @norikoni

Dockerイメージの作り方 →DockerFileを使って自動で作成する。 #devsumiA

2020-08-27 14:39:13
うひーマン @norikoni

DockerBuildkit使うと並列実行できる #devsumiA

2020-08-27 14:42:04
前佛 雅人 - Masahito Zembutsu @zembutsu

「Dockerコンテナもイメージ・レイヤを持つ」が一番キモとなる部分でしょう。コンテナ用のイメージ・レイヤ(読み書き可能)も、Dockerイメージに含まれるイメージ・レイヤ(Read Only)と同じ性質、1つに見えたり、親子関係を持っていたりします。 #devsumiA

2020-08-27 14:46:16
うひーマン @norikoni

・ボリューム:  コンテナ間でファイルを共有したいとき使う ・ネットワーク:  起動時にhostをつけるかポートマッピングして公開 #devsumiA

2020-08-27 14:51:13
うひーマン @norikoni

DockerCompose →複数のコンテナを使用するケースで簡単に  管理できる。 #devsumiA

2020-08-27 14:51:55
前佛 雅人 - Masahito Zembutsu @zembutsu

もうすこしhello-worldに踏み込んで、自分でhello-worldイメージをC言語のソースコードからビルドする手順をこちらにまとめています。ご興味ありましたらどうぞ #devsumiA Dockerイメージの理解を目指すチュートリアル - Qiita qiita.com/zembutsu/items…

2020-08-27 14:55:20