Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Docker-Compose & BuildKit

orisano
September 05, 2019

Docker-Compose & BuildKit

orisano

September 05, 2019
Tweet

More Decks by orisano

Other Decks in Technology

Transcript

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

    View Slide

  2. docker-compose
    ࢖͍ͬͯΔਓ

    View Slide

  3. ศརͰ͢ΑͶ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. ࠷ߴ

    View Slide

  9. ͱ͜ΖͰ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  15. BuildKit࢖͍ͨ͘ͳ͍Ͱ͔͢?

    View Slide

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

    View Slide

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

    View Slide

  18. ͳͥͳͷ͔

    View Slide

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

    View Slide

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

    View Slide

  21. ͜͜ͰҰ୴

    View Slide

  22. docker build ͷ࢓૊Έ

    View Slide

  23. View Slide

  24. View Slide

  25. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  30. View Slide

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

    View Slide

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

    View Slide

  33. ͳͥ
    BuildKit͕࢖͑ͳ͍ͷ͔

    View Slide

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

    View Slide

  35. ࠩ෼సૹ(fssync)͸
    grpc

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  39. ಴࠳

    View Slide

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

    View Slide

  41. ͘͢͝ࠔΔ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  49. 6/6
    ulyssessouza
    ٳΈʹೖΔ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  55. 8/22
    ରԠ

    View Slide

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

    View Slide

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

    View Slide

  58. 8/22~24
    ಈ͖ͳ͠

    View Slide

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

    View Slide

  60. 8/30 ແࣄϚʔδ

    View Slide

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

    View Slide

  62. ޤ͏͝ظ଴

    View Slide

  63. ֶͼ

    View Slide

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

    View Slide

  65. ؀ڥม਺͔Β࢝ΊͯΈΔ

    View Slide

  66. ͜΅Ε࿩

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  70. ͜΅Ε࿩2

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  76. ஍ࠈ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  82. ΊͰͨ͠

    View Slide

  83. ͜΅Ε࿩3

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  88. ࢥ͍ग़͢

    View Slide

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

    View Slide

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

    View Slide

  91. ͭ·Γ

    View Slide

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

    View Slide

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

    View Slide