Slide 1

Slide 1 text

まるすけ (@malsuke096) dockerの豆知識を沢山話す 1 2024/6/19 #kwad #ashibinaa

Slide 2

Slide 2 text

自己紹介 - 名前 : まるすけ - X : @malsuke096 - like : PHP / docker / golang 2

Slide 3

Slide 3 text

おことわり 3 ソースコードリーディングで学んだことが少なかったので急遽変更 「その豆知識、全部知っとったわ」ってなったらごめんね🥲

Slide 4

Slide 4 text

目次 1. docker, docker composeとは 2. docker編 豆知識1~3 3. docker compose編 豆知識4~6 4

Slide 5

Slide 5 text

目次 1. docker composeとは 2. docker編 豆知識1~3 3. docker compose編 豆知識4~6 5

Slide 6

Slide 6 text

豆知識1: docker関連のキャラクター 6

Slide 7

Slide 7 text

豆知識1: docker関連のキャラクター 7 Docker(クジラ), Tux(黒いペンギン), Gopher(青いリス?), Compose(クラーケン) あたりはわかるけど他は?

Slide 8

Slide 8 text

豆知識1: docker関連のキャラクター 8 聞いてみた。

Slide 9

Slide 9 text

豆知識1: docker関連のキャラクター 9 カメ : Docker社で飼ってる亀 左の魚の群れ : docker swarm 貝 : Docker Registry

Slide 10

Slide 10 text

豆知識2: Docker desktopはVM 10

Slide 11

Slide 11 text

豆知識2: Docker desktopはVM 11 コンテナ技術はLinuxの仕組み(CgroupやNamespace)などを利用している。 これらはWindowsやMacにない Windows WSL2またはHyper-V MacOS HyperkitまたはApple Hypervisor Framework(Apple Siliconのみ) https://towardsdatascience.com/your-first-step-to -use-docker-on-a-non-linux-os-c01d60057401

Slide 12

Slide 12 text

豆知識3: DockerとClientはREST API通信 12

Slide 13

Slide 13 text

豆知識3: DockerとClientはREST API通信 13 - DockerとクライアントはREST APIで対話している - 実はcurl経由でもDockerの操作はできる

Slide 14

Slide 14 text

目次 1. docker composeとは 2. docker編 豆知識1~3 3. docker compose編 豆知識4~6 14

Slide 15

Slide 15 text

豆知識4:docker-composeとdocker compose 15

Slide 16

Slide 16 text

豆知識4:docker-composeとdocker compose 16 docker-compose は docker compose V1 docker compose は docker compose V2 これらの差分は何?

Slide 17

Slide 17 text

豆知識4:docker-composeとdocker compose 17 docker-composeはそれまで単体のコマンドであった v19.03.0以降でDocker CLI Pluginというシステムが追加された https://zenn.dev/skanehira/articles/2021-06-03-new-docker-compose#docker-cli-plugin%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

Slide 18

Slide 18 text

豆知識4:docker-composeとdocker compose 18 つまり、docker composeコマンドはdockerコマンドの拡張機能として存在し ている。 docker infoを確認するとPluginsという項目にcomposeが存在している

Slide 19

Slide 19 text

豆知識5: docker composeの謎 19

Slide 20

Slide 20 text

豆知識5: docker composeの謎 20 このようなcompose.yamlを定義してdocker compose up -dをすると

Slide 21

Slide 21 text

豆知識5: docker composeの謎 21 phpコンテナへはphpという名前で、mysqlコンテナへはmysqlという名前で 所謂、DNS解決ができるようになる。 なぜ!?

Slide 22

Slide 22 text

豆知識5: docker composeの謎 22 答え : docker composeがコンテナを共通のネットワークに所属させ、それら にエイリアスをつけているから。 https://www.google.com/url?sa=i&url=https%3A%2F%2Fknowledge.sakura.ad.jp%2F26522%2F&psig=AOvVaw04S5VXAiwSv4XKuPhFlKn4&u st=1718860935114000&source=images&cd=vfe&opi=89978449&ved=0CBEQjRxqFwoTCICSjZn25oYDFQAAAAAdAAAAABAO

Slide 23

Slide 23 text

豆知識5: docker composeの謎 23 docker inspectコマンドで確認するとAliasesという項目に名前が入ってい る。おそらくこれを見て名前解決できるようになっているのだろう。

Slide 24

Slide 24 text

豆知識5: docker composeの謎 24 お互いを名前で認識できる!

Slide 25

Slide 25 text

豆知識5: docker composeの謎 25 追記 : docker v25以降ではDNSNamesというフィールドが追加された

Slide 26

Slide 26 text

豆知識5: docker composeの謎 26 追記 : docker v25以降ではDNSNamesというフィールドが追加された

Slide 27

Slide 27 text

豆知識6: docker compose up の謎 27

Slide 28

Slide 28 text

豆知識6: docker compose up の謎 28 docker compose up には --no-startというオプションがある

Slide 29

Slide 29 text

豆知識6: docker compose up の謎 29 docker compose up には --no-startというオプションがある なるほど、up = create + start だから startを抜いたバージョンか...

Slide 30

Slide 30 text

豆知識6: docker compose up の謎 30 いや、それただの docker compose create やないかーい

Slide 31

Slide 31 text

おしまい 31