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

Dockerfileを素早く書くtips&ライブデモ

 Dockerfileを素早く書くtips&ライブデモ

2016/10/21 JX通信社の社内勉強会で話した内容です

Mitsuki Ogasahara

October 21, 2016
Tweet

More Decks by Mitsuki Ogasahara

Other Decks in Technology

Transcript

  1. @yamitzky
    %PDLFSpMFΛ
    ૉૣ͘࡞Δ

    UJQTˍϥΠϒσϞ
    2016/10/21 JXࣾ಺ษڧձ

    View Slide

  2. w ࣗ෼͕%PDLFSpMFΛॻ͘ͱ͖ʹɺ

    Ͳ͏͍͏؀ڥͰॻ͍͍ͯΔ͔Λڞ༗ˍσϞ͠·͢
    w ʮ͜͏͢Δͱ΋ͬͱޮ཰ྑ͍ΑʂʯͳͲ͋ͬͨΒ

    ϚαΧϦ͓ئ͍͠·͢
    Today…

    View Slide

  3. w ίϯςφܕͷԾ૝Խ؀ڥΛఏڙ͢Δ044
    w %PDLFSpMFʹΑͬͯ%PDLFSΠϝʔδΛఆٛͰ͖Δ
    w Ϗϧυͨ͠%PDLFSΠϝʔδ͸%PDLFS3FHJTUSZͰެ։Ͱ͖ɺ

    ଞͷ؀ڥͰ΋࢖͑ΔΑ͏ʹڞ༗Ͱ͖Δ
    What is Docker?
    %PDLFSpMFΛॻ͍ͯɺ
    ΞϓϦέʔγϣϯΛ୭Ͱ΋࢖͑ΔΑ͏ʹ͠Α͏ʂ

    View Slide

  4. w ࠷ۙࣗ෼͕ॻ͍ͨ%PDLFSpMF
    w EPDLFSDPNQPTF
    w BQFY
    w NFDBC
    w +6."/
    w FUDʜ
    Recently…
    %PDLFSΠϝʔδΛڞ༗͢Ε͹

    AEPDLFSSVOA͚ͩͰ.BDͰ΋8JOEPXTͰ΋-JOVYͰ΋
    ར༻Ͱ͖ΔΑ͏ʹʂ

    View Slide

  5. #BE1SBDUJDF

    View Slide

  6. Bad Practice to Write Dockerfile
    $
    5FSNJOBM

    View Slide

  7. Bad Practice to Write Dockerfile
    $ vim Dockerfile
    0QFOFEJUPS

    View Slide

  8. Bad Practice to Write Dockerfile
    FROM alpine
    RUN apk add —no-cache curl
    RUN command to take long time
    RUN some typo command
    8SJUF%PDLFSpMF

    View Slide

  9. Bad Practice to Write Dockerfile
    $ docker build .
    #VJME%PDLFSJNBHFBOEXBJUʜ
    ...
    (wait for 10 min)

    View Slide

  10. Bad Practice to Write Dockerfile
    $ docker build .
    &SSPS
    ...
    ...
    /bin/sh: typo: not found
    The command '/bin/sh -c typo' returned a
    non-zero code: 127

    View Slide

  11. View Slide

  12. Bad Iteration
    $ build

    8SJUF #VJME8BJU &SSPS

    View Slide

  13. #FTU1SBDUJDF

    View Slide

  14. Best Practice to Write Dockerfile
    5NVYɺ7JNɺ4MJNFΛ࢖ͬͯ
    Ұߦͣͭ%PDLFSpMFΛ͔֬ΊΔ
    Ҏ্ɻ

    View Slide

  15. %&.0

    View Slide

  16. Best Practice to Write Dockerfile
    $
    3VOUNVYTQMJUQBOF
    $

    View Slide

  17. Best Practice to Write Dockerfile
    $ vim Dockerfile $ docker run -it
    alpine /bin/sh
    &EJU%PDLFSpMF 3VOCBTFJNBHF`TTIFMM

    View Slide

  18. Best Practice to Write Dockerfile
    / #
    8SJUFKVTUPOFMJOF
    FROM alpine
    RUN apk add —no-cache curl
    4IFMMJTSVOOJOH

    View Slide

  19. Best Practice to Write Dockerfile
    / # apk add —no-cache curl
    &YFDVUFPOFMJOFWJB4-*.&
    FROM alpine
    RUN apk add —no-cache curl

    View Slide

  20. w ʮWJNTMJNFʯͱ͔ʮFNBDTTMJNFʯͰݕࡧʂ
    w ΤσΟλʔͷબ୒෦෼ΛɺUNVYͷผQBOFʹૹΓɺ

    ࣮ߦͰ͖ΔϓϥάΠϯ

    Slime?
    IUUQTHJUIVCDPNKQBMBSEZWJNTMJNF

    View Slide

  21. Best Practice to Write Dockerfile
    / # apk add —no-cache curl
    &YFDVUFPOFMJOFWJB4-*.&
    FROM alpine
    RUN apk add —no-cache curl

    View Slide

  22. / # some command
    Best Practice to Write Dockerfile
    / # apk add —no-cache curl

    &YFDVUFPOFMJOFWJB4-*.&
    FROM alpine
    RUN apk add —no-cache curl
    RUN some command

    View Slide

  23. / # some command

    Best Practice to Write Dockerfile
    / # apk add —no-cache curl

    &YFDVUFPOFMJOFWJB4-*.&
    FROM alpine
    RUN apk add —no-cache curl
    RUN some command
    RUN other command
    / # other command

    View Slide

  24. Finally…
    $ docker build .
    4BWFCVJMEJU
    $
    ...
    ...
    Successfully built

    View Slide

  25. w UNVYͱWJNͱTMJNFΛ༻ҙ͢Δ
    w ҰߦͣͭTMJNFͰ࣮ߦ͔ͯ͠Βɺ࠷ޙʹAEPDLFSCVJMEA
    w λʔϛφϧʹ̍ߦͣͭίʔυΛૹΕΕ͹ԿͰ΋ྑ͍Αʂ

    ྫɿFNBDTTMJNFͱ͔JOUFMMJ+ͱ͔

    Conclusion

    View Slide