コンテナジャーニー〜AWSにおける段階式コンテナ運用〜

 コンテナジャーニー〜AWSにおける段階式コンテナ運用〜

このセッションでは、コンテナを本番環境に導入して動かすまでの注意点や考慮すべき項目を、段階的にお伝えします。日進月歩で進化を続けるAmazon Container Services界隈に「一歩を踏み出していただくためのきっかけ」をつかんでいただければ幸いです。

Amazon ECSがリリースされてから、早4年。Docker自体の進歩が目覚ましく、周辺のオーケストレーションツールや関連するOSSなども目を見張るような勢いで進化しています。以前は開発環境での利用が主流だったコンテナも、今では本番環境での採用事例も増えてきました。さらに、Fargateの東京リージョンリリースやEKSの一般公開など、話題には事欠きません。

アプリケーションのコンテナ化には様々な面で大きなメリットがありますが、それを実際に本番環境に導入するには従来のアプリケーションの考え方とは違う部分もあり、簡単にはいかないことも事実です。その辛さを乗り越えて「もっと多くの人にコンテナを活用してもらいたい」という思いから、このセッションテーマを考えました。

AWSは利用しているがアプリケーションをコンテナ化するメリットがあまり感じられない人や、コンテナに関する情報量が多くどこから手を付ければよいのかわからない人向けのセッションです。

C47bda32c8455a59471cd7e19c32c074?s=128

濱田孝治

October 05, 2018
Tweet

Transcript

  1.     AWS 

  2. 2 7 9 120 • •

  3. 3 @hamako9999

  4. 4 #cmdevio2018

  5. Photo by Fancycrave on Unsplash   

  6. 6    

  7. 7 )"372+01  Server Server Host OS 72+%  Guest

    OS Guest OS App A App B App A App B ' OS372+ Host OS kernel Container A Container B )"372+ #!6/ .,Guest OS- $&!* 72+%   OS( 8472OS ) " 5
  8. Photo by Fancycrave on Unsplash     

    
  9. Photo by Markus Spiske on Unsplash 12Factor Apps Immutable Infrastructure

     DevOps  Continuous Integration     Continuous Delivery    
  10. 10     ↓  

  11. Photo by Serghei Trofimov on Unsplash  

  12. 12 

  13. 13   ("'#%   ("'#% &'$  

    ("'#%    
  14. 14 !  Docker( $*) !   #& 

    !"+'%
  15. 15    

  16. 16 !  Docker( $*) !   #& 

    !"+'% !
  17. 17 • •

  18. 18      !

  19. 19 , HX DF • UM L P T UO

    U • P T UO H B W • , , • , H E B • ,
  20. 20      $docker run -v `pwd`:/source

    jagregory/pandoc -f markdown -t docx sample.md -o sample.docx
  21. 21 Docker HUB User Pandoc Official Pandoc Docker Pandoc Docker

    HUB Push Docker Run Pull
  22. 22 • D 1 • U • D 1 B

    U • H B U • H H
  23. 23       !

  24. 24  • O • S •  • •

  25. 25 &$   #!     

      "'% ! https://pandoc.org/installing.html
  26. 26         

       !
  27. 27 • D • • a D docker image build

    Dockerfile Docker image
  28. 28        FROM haskell:8.0

    # install latex packages RUN apt-get update -y ¥ && apt-get install -y -o Acquire::Retries=10 --no-install-recommends ¥ texlive-latex-base ¥ texlive-xetex ENV PANDOC_VERSION “1.19.2.1” ENV PANDOC_VERSION "1.19.2.1" # install pandoc RUN cabal update && cabal install pandoc-${PANDOC_VERSION} WORKDIR /source ENTRYPOINT ["/root/.cabal/bin/pandoc"]
  29. 29 O S Q  !" #   •

    c e a • K • MP a • i f I P → L J J D
  30. 30  L J M

  31. 31 ;459: Docker HUB  (- (-. "# !, )

     83* '*+1  )6  )-%7 Docker Run)Pull 20 /<7$ &    
  32. 32  D !

  33. 33     https://learn.g2crowd.com/best-docker-containers-repository

  34. 34     https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

  35. 35  

  36. 36 !  Docker( $*) !   #& 

    !"+'% !
  37. 37 ?:=" Docker HUB   .3 .34 (%) '2

    #/$ >90 #-01 7# /$!; /3+< Docker Run#/$!Pull 86 "5@<*&,    
  38. 38 DCB > Docker HUB   .3 .34 )&*

    (2 #/% A;0 #-01 8# /%!= /3+?  Docker Run #/%!Pull :5     69 !,-1'$7 <@ " "
  39. 39  Amazon ECR

  40. 40 AD • lr RsC S M • aC S

    CmeEI i • A C t C MkC on W gcD o Amazon ECR
  41. 41 CA • • E • C I C

  42. 42 C E • • R https://dev.classmethod.jp/cloud/aws/ecr-lifecycle/

  43. 43       !+1'$ * !%

     &#/- !/-"./-) 2 0(, 
  44. 44 !  Docker( $*) !   #& 

    !"+'% !
  45. 45 • D • →     !

  46. 46 2 1+,/0 !)#$   . *  %'-

    (      !)#$&". *  
  47. 47  Amazon ECS

  48. 48 • S C P S i bc • K

    D a • E A S e • V f Amazon ECS
  49. 49 • F C K E • e S C

    K a • E A →E W EC2
  50. 50         

            ECS EKS EC2 Fargate
  51.   51       

    !
  52.  52 U EC2 Fargate   E CI E

    S R docker run E P
  53.     54 NPL B A CE B

        Application Load Balancer Amazon ECS  
  54. 55 A

  55. 56 •   • e D • c •

     • r • k •   • B c • D o
  56. 57 https://dev.classmethod.jp/cloud/aws/black-belt-docker-on-aws-2017/

  57. 58 F C hid • • F a AS rL

    m S kg • H • S u LW sl p • • to H Fce
  58. 59      

  59. 60 !  Docker( $*) !   #& 

    !"+'% !
  60. 61  AWS CodeCommit AWS CodePipeline AWS CodeBuild  CI

     Git  
  61. 62 •  • •  • •  •

  62. 63 Master C Push ECS GitHub OK

  63. 64   Buildspec.yml ecr login→docker build→ecr push 

  64. 65   CodePipeline ECS  

  65. 66    https://dev.classmethod.jp/cloud/aws/codepipeline-support-ecs-deploy/

  66. 67      

  67. 68    G G G P G S

  68. 69     

  69. 70 !  Docker( $*) !   #& 

    !"+'% !
  70. 71    • •    •

     
  71. 72 mn     •   •

    _ ej GP S FUE pi cl - cl • S WEhd S WE cl UE cl - W Sg • ro I a I NRE E •  • C : . S C : / C : A
  72. 73 C DA • • • / . . .

    / . . . • • . / • / / : . -
  73. 74   • - • #1&.(   •

    !  • "$% /- *0,' +)
  74. 75 • 

  75. 76  ! •     • /3

    !54)2   •    • +   (& •  1* 54)  • "0-% 54) #'$. , 
  76. 77    •  •   https://dev.classmethod.jp/tool/docker/microscanner/

  77. 78   • . • • . .

  78. 79   https://speakerdeck.com/pottava/container-security-20180310

  79. 80         

  80. 81 

  81. 82 !  Docker( $*) !   #& 

    !"+'%
  82. 83  • *,"$+.#.&(29 < @=8 • /1#.&(64@=-!-!  •

      B#.&(257 ;3 7?) %' :0>A  
  83. 84       @hamako9999