Slide 1

Slide 1 text

Docker Compose & BuildKit Docker Meetup Tokyo #32 #DockerTokyo @orisano

Slide 2

Slide 2 text

docker-compose ࢖͍ͬͯΔਓ

Slide 3

Slide 3 text

ศརͰ͢ΑͶ

Slide 4

Slide 4 text

ෳ਺ͷίϯςφΠϝʔδΛ ؆୯ʹ࢖͑Δ

Slide 5

Slide 5 text

ͳΜͳΒ ίϯςφҰͭͰ΋ docker-compose࢖͏

Slide 6

Slide 6 text

࣮ߦ࣌ͷύϥϝʔλΛ ϑΝΠϧʹهड़Ͱ͖Δ

Slide 7

Slide 7 text

up —buildͰ buildͱrun͕ಉ࣌ͰͰ͖Δ

Slide 8

Slide 8 text

࠷ߴ

Slide 9

Slide 9 text

ͱ͜ΖͰ

Slide 10

Slide 10 text

docker-compose build ࢖͍ͬͯΔਓ͍·͔͢ʁ

Slide 11

Slide 11 text

͍ͳ͍Ͱ͢ΑͶ… (ҙ֎ͱ͍Δͷ͔)

Slide 12

Slide 12 text

docker-compose up —build ࢖ͬͪΌ͍·͢ΑͶ

Slide 13

Slide 13 text

Ͱ΋ docker-composeͷbuild ॏ͘ͳ͍Ͱ͔͢?

Slide 14

Slide 14 text

docker build͕஗͍ͱ ΠϥΠϥ͠·ͤΜ͔?

Slide 15

Slide 15 text

BuildKit࢖͍ͨ͘ͳ͍Ͱ͔͢?

Slide 16

Slide 16 text

docker-compose Ͱ BuildKit Λ࢖͑ΔΑ͏ʹͨ͠࿩

Slide 17

Slide 17 text

“࢖͑ΔΑ͏ʹͨ͠࿩” ͳͷͰ ΋ͱ΋ͱ࢖͑ͳ͔ͬͨ

Slide 18

Slide 18 text

ͳͥͳͷ͔

Slide 19

Slide 19 text

ͦ΋ͦ΋ docker-composeͷbuild͸ ԿΛ΍͍ͬͯΔͷ͔

Slide 20

Slide 20 text

docker-composeͷbuild͸ γϯϓϧͰ yamlͷ಺༰͔ΒparameterΛ औΓग़ͯ͠build͢Δ

Slide 21

Slide 21 text

͜͜ͰҰ୴

Slide 22

Slide 22 text

docker build ͷ࢓૊Έ

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

ؾʹͳͬͨํ͸ https://speakerdeck.com/orisano/container-build-talk

Slide 27

Slide 27 text

docker-composeࣗମ͸ docker/cli͕ͳͯ͘΋ಈ͘

Slide 28

Slide 28 text

docker-compose ͸ docker-pyΛ࢖͍ͬͯΔ

Slide 29

Slide 29 text

docker-py͸ dockerdͷAPIΛୟ͘ python client

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

docker-compose͸ image໊Λ࡞Δ͚ͩͷػߏʹ ͍ۙ

Slide 32

Slide 32 text

imageʹ {project}_{service} Έ͍ͨͳ໊લΛ͚ͭͯ APIΛݺͿ

Slide 33

Slide 33 text

ͳͥ BuildKit͕࢖͑ͳ͍ͷ͔

Slide 34

Slide 34 text

BuildKit͸ ίϯςΩετΛࠩ෼సૹ͢Δ

Slide 35

Slide 35 text

ࠩ෼సૹ(fssync)͸ grpc

Slide 36

Slide 36 text

docker-pyʹ͸ͦΕ͕ ࣮૷͞Ε͍ͯͳ͍

Slide 37

Slide 37 text

pythonͰ࣮૷͢Δͷ͸ ͕͔͔࣌ؒΓͦ͏…

Slide 38

Slide 38 text

Issue্͕͕ͬͯࢭ·͍ͬͯͨ

Slide 39

Slide 39 text

಴࠳

Slide 40

Slide 40 text

ͱ͸͍͑ docker-compose build ͕஗͍ͷ͸ࠔΔ

Slide 41

Slide 41 text

͘͢͝ࠔΔ

Slide 42

Slide 42 text

@AkihiroSuda͞Μʹ ͱΓ͋͑ͣ૬ஊͯ͠ΈΔ

Slide 43

Slide 43 text

@AkihiroSuda͞Μ͔Β ʮexec͢Δ΍͕ͭྑͦ͞͏ʯ ͱݴΘΕΔ

Slide 44

Slide 44 text

࣮૷ͯ͠PR (—exec) docker/compose#6584 (2019/3/15)

Slide 45

Slide 45 text

4/4 thaJeztah͔Βίϝϯτ ΞϧϑΝϕοτॱʹ͠ͳ͍ͷʁ ΋ͱ΋ͱͦ͏͡Όͳ͍

Slide 46

Slide 46 text

4/5 ulyssessouza͔Βίϝϯτ ΞϧϑΝϕοτॱʹ͠ͳ͍ͷʁ ΋ͱ΋ͱͦ͏͡Όͳ͍

Slide 47

Slide 47 text

4/24 ulyssessouza͔Βίϝϯτ —exec ͬͯඍົ͡Όͳ͍? ͳΜ໊͔͍͍લͳ͍?

Slide 48

Slide 48 text

5/16 ulyssessouza͔Βίϝϯτ —cli͕ྑͦ͞͏

Slide 49

Slide 49 text

6/6 ulyssessouza ٳΈʹೖΔ

Slide 50

Slide 50 text

6/13 thaJeztah͔Βίϝϯτ ̎ͭ͘Β͍ߟ͑Δ͜ͱ͕ ͋Γͦ͏

Slide 51

Slide 51 text

6/14 thaJeztah͔Βίϝϯτ ͜͏͍͏ਐΊํͲ͏?

Slide 52

Slide 52 text

7/19 thaJeztah͔Βίϝϯτ ulyssessouzaͱٞ࿦ͨ͠

Slide 53

Slide 53 text

8/13 ulyssessouza͔Βίϝϯτ —cliΛ΍Ίͨ COMPOSE_NATIVE_BUILDER=1

Slide 54

Slide 54 text

8/20 thaJeztah͔Βίϝϯτ docker-compose up —build Ͱ΋ಉ͡ಈ͖Λͯ͠΄͍͠

Slide 55

Slide 55 text

8/22 ରԠ

Slide 56

Slide 56 text

8/22 PR close(!!!!!!!!)

Slide 57

Slide 57 text

8/22 docker/compose#6865 ulyssessouza ʹΑΓ PR͕৽نʹ࡞ΒΕΔ

Slide 58

Slide 58 text

8/22~24 ಈ͖ͳ͠

Slide 59

Slide 59 text

8/25~8/29 @orisano ࢒՝୊Λશ෦ղܾ

Slide 60

Slide 60 text

8/30 ແࣄϚʔδ

Slide 61

Slide 61 text

࣍ͷrc͔Β COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 Ͱ࢖͑ΔΑ͏ʹͳΓ·͢

Slide 62

Slide 62 text

ޤ͏͝ظ଴

Slide 63

Slide 63 text

ֶͼ

Slide 64

Slide 64 text

ϑϥάΛ௥Ճ͢Δ͜ͱ͸ ϝϯςφϯείετ͕ ൃੜ͢Δ͜ͱΛҙࣝ͢Δ

Slide 65

Slide 65 text

؀ڥม਺͔Β࢝ΊͯΈΔ

Slide 66

Slide 66 text

͜΅Ε࿩

Slide 67

Slide 67 text

docker build ͷ݁Ռ͸ streamͰྲྀΕͯ͘Δͷ͕ͩ

Slide 68

Slide 68 text

docker-compose͸ͦͷதͷ Successfully Built ͱ͍͏จࣈྻ͔Β ݁ՌΠϝʔδͷid Λऔಘ͍ͯ͠Δ

Slide 69

Slide 69 text

ϨϏϡʔ࣌ʹ ͳʹ͜ΕͱݴΘΕ͕ͨ ๻΋ͳʹ͜Εͱࢥͬͨ

Slide 70

Slide 70 text

͜΅Ε࿩2

Slide 71

Slide 71 text

࣮͸͜Εͱಉ࣌ظʹ docker-composeͷ cache-fromͰࠔΔͱ͜Ζ͕ ͋ͬͨͷͰPR

Slide 72

Slide 72 text

ͦΕ͸͙͢ʹϚʔδ͞Εͨ

Slide 73

Slide 73 text

cache_fromʹ ؀ڥม਺Λ౉͔ͨͬͨ͠

Slide 74

Slide 74 text

౉͢ͱಈ͍ͨ CI͕շదʹͳͬͨ

Slide 75

Slide 75 text

ϩʔΧϧͰ͸ ຖճϑϧϏϧυ͕ ͸͠ΔΑ͏ʹͳͬͨ

Slide 76

Slide 76 text

஍ࠈ

Slide 77

Slide 77 text

docker buildͷ࢓༷Ͱ —cache-fromʹͳʹ͔౉͢ͱ ϩʔΧϧͷΩϟογϡ͕ ޮ͔ͳ͘ͳΔ

Slide 78

Slide 78 text

ৄ͘͠͸ ͪΌΜͱཧղ͢Δdocker build cache https://orisano.hatenablog.com/entry/2018/12/17/025931

Slide 79

Slide 79 text

ࢦఆ͞ΕͨΠϝʔδ͕ ଘࡏ͠ͳ͍৔߹͸ແࢹ͢Δ

Slide 80

Slide 80 text

؀ڥม਺ʹͳʹ͔༩͑ͳ͍ͱ cache-fromʹۭจࣈྻ͕…

Slide 81

Slide 81 text

ࠓͰ͸ docker-composeଆͰ ۭͷΠϝʔδ͸ແࢹ͢Δ Α͏ʹͳΓ·ͨ͠

Slide 82

Slide 82 text

ΊͰͨ͠

Slide 83

Slide 83 text

͜΅Ε࿩3

Slide 84

Slide 84 text

ࠓճͷPR͸ Ϛʔδ·Ͱ5ϲ݄͔͔ͬͨ

Slide 85

Slide 85 text

5ϲ݄ؒ଱͑Δͷ͸ ແཧͩͬͨͷͰखݩͰ͸ ࣗ෼ͷforkΛ࢖͍ͬͯͨ (࢖ͬͯ͘ΕΔϑΝϯͷํ͕͍ͨ)

Slide 86

Slide 86 text

ͦΕΛϓϩδΣΫτͷ makeʹ௥Ճ͢ΔΘ͚ʹ͸ ͍͔ͳ͔ͬͨ

Slide 87

Slide 87 text

Ͳ͏ʹ͔Ͱ͖ͳ͍ͩΖ͏͔

Slide 88

Slide 88 text

ࢥ͍ग़͢

Slide 89

Slide 89 text

docker-compose͸ image໊Λ࡞Δ͚ͩͷػߏʹ ͍ۙ

Slide 90

Slide 90 text

imageʹ {project}_{service} Έ͍ͨͳ໊લΛ͚ͭͯ APIΛݺͿ

Slide 91

Slide 91 text

ͭ·Γ

Slide 92

Slide 92 text

docker-composeͷ ࢖͏໊લͰdocker build͢Δ ͜ͱʹͯ͠ճආͨ͠

Slide 93

Slide 93 text

࠷ߴͷମݧ (΋͏ෆཁͰ͕͢)