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

Remote Development with Podman

Shion Tanaka
November 21, 2020

Remote Development with Podman

VS Code Conference Japan の登壇に使用したスライドです。
スライドの公開にあたり登壇時点より内容が更新されています。

[タイトル」Remote Development with Podman

[概要]
PodmanはDocker互換かつOSSのコンテナーエンジンです。RHEL8/CentOS8からはDockerがサポートされなくなりPodmanが標準のコンテナーエンジンとなりました。新しいコンテナーエンジンでありDockerに無い特徴も備えていることからPodmanの注目度が上がってきています。今後さらにPodmanを利用したコンテナーの実行、開発も増えていくと思われます。そこで本セッションではDockerではなくPodmanを使ったVS Code上の開発方法を解説します。VS CodeにおけるPodmanのサポートはまだ始まったばかりでまだ発展途上です。本セッションに参加することで「VS Code + Podmanを利用したコンテナー上の開発手法」「Remote Development + Podmanの最新動向」を知ることができます。なお、本セッションはVS Code Meetup #6でのLT内で少し紹介したPodmanとRemote-Containersを利用する方法をより具体的に紹介する内容となります。

Level / 難易度: Medium / 中級
想定する主な聴講者: RHEL8/CentOS8利用開発者、その他OSでのPodman利用開発者。Remote-Containersを使ってコンテナー上の開発を行いたい人。

[イベントページ]
VS Code Conference Japan - connpass
https://vscode.connpass.com/event/184441/

[動画アーカイブ]
https://youtu.be/GqC5wQV2bG8

Shion Tanaka

November 21, 2020
Tweet

More Decks by Shion Tanaka

Other Decks in Technology

Transcript

  1. WTDPEFKQ ࣗݾ঺հ  • ాத࢘ԸʢλφΧ γΦϯʣ!UOLPO • ϨουϋοτגࣜձࣾɿιϦϡʔγϣϯΞʔΩςΫτ • 74$PEF.FFUVQ

    • -5ɿʮ3FNPUF$POUBJOFSTͷ઀ଓઌϗετʹ 'FEPSB$PSF04Λ࢖͏ʯ IUUQTWTDPEFDPOOQBTTDPNFWFOU ࠷ۙ͸*5ΤϯδχΞ͔Ͳ͏͔΋ո͘͠ͳ͖ͬͯͨʜ ˠԻͱςΫϊϩδʔ͕ॏͳΔྖҬ͕޷෺ͷσδλϧΫϦΤΠλʔ
  2. WTDPEFKQ 3FNPUF$POUBJOFSTͱ 1PENBO • %PDLFS1BUIʹ QPENBO ͱࢦఆ͢Δ͚ͩ  Developing inside

    a Container using Visual Studio Code Remote Development https://code.visu alstudio.com/doc s/remote/contain ers
  3. WTDPEFKQ 1PENBOࢀߟϦϯΫ • %PDLFSϢʔβʔͷͨΊͷ1PENBOͱ#VJMEBIͷ঺հ  ੺๧Τϯδ χΞϒϩά o IUUQTSIFCIBUFOBCMPHDPNFOUSZQPENBO@CVJEBI@GPS@EPDLFS@VTFST •

    ίϯςφʔͷߏஙɺ࣮ߦɺ͓Αͼ؅ཧ 3FE )BU &OUFSQSJTF -JOVYc3FE)BU$VTUPNFS1PSUBM o IUUQTBDDFTTSFEIBUDPNEPDVNFOUBUJPOKBKQSFE@IBU@FOUFSQSJTF@MJOVYIUNM TJOHMFCVJMEJOH@SVOOJOH@BOE@NBOBHJOH@DPOUBJOFSTJOEFY • τϥϒϧରԠ৘ใʢˣΦεεϝʣ o QPENBOUSPVCMFTIPPUJOHNEBUNBTUFSuDPOUBJOFSTQPENBO § IUUQTHJUIVCDPNDPOUBJOFSTQPENBOCMPCNBTUFSUSPVCMFTIPPUJOHNE 
  4. WTDPEFKQ %PDLFSαϙʔτ͞Εͳ͍໰୊ • 3)&-$FOU04͔Β%PDLFS͸αϙʔτର৅֎ o“RHEL 8 には Docker が含まれず、Red Hat

    のサポート対象外 になります” (引⽤:RHEL8ドキュメント) • ެ͔ࣜΒ%PDLFSͷύοέʔδ͸ఏڙ͞Εͳ͍ Ø“docker コマンドと Docker コンテナーエンジンも、Red Hat Enterprise Linux 8 から完全に削除しました。”(引⽤:RHEL8ド キュメント)  ίϯςφʔͷߏஙɺ࣮ߦɺ͓Αͼ؅ཧ 3FE )BU&OUFSQSJTF -JOVYc3FE)BU$VTUPNFS1PSUBM IUUQTBDDFTTSFEIBUDPNEPDVNFOUBUJPOKBKQSFE@IBU@FOUFSQSJTF@MJOVYIUNM TJOHMFCVJMEJOH@SVOOJOH@BOE@NBOBHJOH@DPOUBJOFSTJOEFY
  5. WTDPEFKQ 1PENBOPO'FEPSB • ಈ࡞֬ೝ o ʮ"EE%FWFMPQNFOU$POUBJOFS$POGJHVSBUJPO'JMFTʯͰ ௥Ճͨ͠ૉͷEFWDPOUBJOFSKTPO § 0,ʂʢΤϥʔରԠඞཁʣ o

    (JUDMPOFͨ͠WTDPEFSFNPUFUSZQZUIPO § 0,ʂʢΤϥʔରԠඞཁʣ o 5SZBTBNQMF § /( • ϙΠϯτ o 74$PEFαϙʔτͷߏ੒ o 1PENBO͸ҰൠϢʔβʔͰ࣮ߦՄೳ o 4&-JOVYͷແޮԽෆཁ § ΤϥʔରԠͷιʔεमਖ਼͸ඞཁ  1PENBO 74$PEF 3FNPUF$POUBJOFST ίϯςφʔ ϩʔΧϧ୺຤
  6. WTDPEFKQ 1PENBOPO84- 6CVOUV • ಈ࡞֬ೝ o ʮ"EE%FWFMPQNFOU$POUBJOFS$POGJHVSBUJPO'JMFTʯͰ ௥Ճͨ͠ૉͷEFWDPOUBJOFSKTPO § 0,ʂ

    o (JUDMPOFͨ͠WTDPEFSFNPUFUSZQZUIPO § /( o 5SZBTBNQMF § /(ʢϝχϡʔ͕ग़ͯ͜ͳ͍ɻ84-ͷத͔ͩΒʁʣ • ϙΠϯτ o 3FNPUF84-Ͱ઀ଓͨ͠؀ڥͷ্Ͱɺ͞Βʹ3FNPUF $POUBJOFSTΛ࣮ߦ o ඇެࣜͳߏ੒ o 1PENBO͸ҰൠϢʔβʔͰ࣮ߦՄೳ  1PENBO 74$PEF 3FNPUF84- 3FNPUF$POUBJOFST ίϯςφʔ ϩʔΧϧ୺຤ 84- 6CVOUV
  7. WTDPEFKQ 1PENBOPO84- 6CVOUV • 1PENBOͷΠϯετʔϧ o 84-ىಈޙԼهΛ࣮ߦ o FUDDPOUBJOFSTDPOUBJOFSTDPOGΛमਖ਼ 

    FUDPTSFMFBTF TVEPTIDFDIPEFCIUUQEPXOMPBEPQFOTVTFPSHSFQPTJUPSJFTEFWFMLVCJDMJCDPOUBJOFSTTUBCMFY\/".&^@\7&34*0/@*%^ FUDBQUTPVSDFTMJTUEEFWFMLVCJDMJCDPOUBJOFSTTUBCMFMJTU XHFUOWIUUQTEPXOMPBEPQFOTVTFPSHSFQPTJUPSJFTEFWFMLVCJDMJCDPOUBJOFSTTUBCMFY\/".&^@\7&34*0/@*%^3FMFBTFLFZ03FMFBTFLFZ TVEPBQULFZBEE 3FMFBTFLFZ TVEPBQUHFUVQEBUFRR TVEPBQUHFURRZJOTUBMMQPENBO TVEPNLEJSQFUDDPOUBJOFST FDIPF<SFHJTUSJFTTFBSDI>aOSFHJTUSJFT<EPDLFSJP RVBZJP>cTVEPUFFFUDDPOUBJOFSTSFHJTUSJFTDPOG TVEPWJFUDDPOUBJOFSTDPOUBJOFSTDPOG DHSPVQ@NBOBHFSDHSPVQGT FWFOUT@MPHHFSGJMF How to run Podman on Windows with WSL2 | Enable Sysadmin https://www.redhat.com/sysadmin/podman-windows-wsl2
  8. WTDPEFKQ %PDLFSJO1PENBOͷ࣮ߦํ਑ • 5$1Ͱ௚઀ιέοτ઀ଓ o TFUUJOHTKTPOʢEPDLFSDPOUFYUͰઃఆ΋Մೳʣ • ϧʔτݖݶͰ࣮ߦ o ݱ࣌఺Ͱ͸ճආෆೳ

    • $HSPVQWʹมߋ • ࣮ߦίϚϯυ  EPDLFSIPTUUDQ\ϦϞʔτ઀ଓઌϗετͷ*1ΞυϨε^ EPDLFSUMT7FSJGZ TVEPEOGJOTUBMMHSVCCZ TVEPHSVCCZVQEBUFLFSOFM"--BSHTTZTUFNEVOJGJFE@DHSPVQ@IJFSBSDIZz TVEPSFCPPU 1PENBO ίϯςφʔ ϦϞʔτ઀ଓઌϗετ %PDLFS ίϯςφʔ TVEPQPENBOSVOMPHMFWFMEFCVHF%0$,&3@5-4@$&35%*3QSJWJMFHFEEJUOBNFEJOEQEPDLFSEJOE l10354z ͜ΕΛࢦఆ
  9. WTDPEFKQ %PDLFSJO1PENBOPO'FEPSB • ಈ࡞֬ೝ o ʮ"EE%FWFMPQNFOU$POUBJOFS$POGJHVSBUJPO'JMFTʯͰ௥Ճͨ͠ૉͷ EFWDPOUBJOFSKTPO § 0,ʂʢΤϥʔରԠඞཁʣ o

    (JUDMPOFͨ͠WTDPEFSFNPUFUSZQZUIPO § /( o 5SZBTBNQMF § /( o ىಈࡁΈͷίϯςφͷΞλον § 0,ʂ • ϙΠϯτ o ඇެࣜͳߏ੒ o 1PENBOͰ%PDLFSJO%PDLFSίϯςφͷ࣮ߦʹϧʔτݖݶ͕ඞཁ o ϩʔΧϧ୺຤ͷιʔεϑΝΠϧͱ%FW$POUBJOFS಺ͷϑΝΠϧ͸௚઀ಉظ͠ ͳ͍ʢ %FW$POUBJOFSͷϚ΢ϯτઌ͸%PDLFSϗετΛࢀর͢ΔͨΊʣ  1PENBO ίϯςφʔ ϦϞʔτ୺຤ %PDLFS ίϯςφʔ
  10. WTDPEFKQ %PDLFSJO1PENBOPO'FEPSB • ΤϥʔରԠ o EFWDPOUBJOFSKTPO಺ͷ8PSLTQBDFϚ΢ϯτॲཧΛमਖ਼͢Δʢ͍ͣΕ͔ͷํ๏Λࢦఆʣ § %PDLFS7PMVNFΛࢦఆ͢Δํ๏ʢ%PDLFS7PMVNF͸ࣄલʹ࡞੒͓ͯ͘͠ʣ § %PDLFSϗετʢ%PDLFSJO1PENBO্ͷʣͷύεΛࢦఆ͢Δ

     XPSLTQBDF.PVOUTPVSDF%PDLFS7PMVNF໊ UBSHFUXPSLTQBDF UZQFWPMVNF XPSLTQBDF'PMEFSXPSLTQBDFWTDPEFSFNPUFUSZQZUIPO XPSLTQBDF.PVOUTPVSDFIPNFVTFSWTDPEFSFNPUFUSZQZUIPO UBSHFUXPSLTQBDF UZQFWPMVNF XPSLTQBDF'PMEFSXPSLTQBDF ʢ஫ҙʣϩʔΧϧ؀ڥͱ௚઀ͷϑΝΠϧಉظ͸Ͱ͖ͳ͍ͷͰɺಉظ͸(JUͳͲΛ࢖͏ඞཁ͕͋Δ
  11. WTDPEFKQ %PDLFSJO1PENBOPO'FEPSB  [user@localhost ~]$ ip a show ens161 |grep

    192 inet 192.168.1.164/24 brd 192.168.1.255 scope global dynamic noprefixroute ens161 [user@localhost ~]$ docker bash: docker: command not found... Packages providing this file are: 'podman-docker' 'moby-engine' [user@localhost ~]$ whereis docker docker: [user@localhost ~]$ sudo podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 74fb9586cec9 docker.io/library/docker:dind 2 days ago Up 23 hours ago 0.0.0.0:2375->2375/tcp dind [user@localhost ~]$ sudo podman exec -it dind ls -la /home/user/vscode-remote-try-python total 36 drwxr-xr-x 1 root root 222 Nov 23 16:49 . drwxr-xr-x 1 root root 58 Nov 23 16:46 .. drwxr-xr-x 1 root root 54 Nov 23 16:46 .devcontainer drwxr-xr-x 1 root root 158 Nov 23 17:18 .git -rw-r--r-- 1 root root 89 Nov 23 16:46 .gitattributes -rw-r--r-- 1 root root 5594 Nov 23 16:46 .gitignore drwxr-xr-x 1 root root 22 Nov 23 16:46 .vscode -rw-r--r-- 1 root root 1183 Nov 23 16:46 LICENSE -rw-r--r-- 1 root root 4736 Nov 23 16:46 README.md drwxr-xr-x 1 root root 36 Nov 23 16:48 __pycache__ -rw-r--r-- 1 root root 456 Nov 23 16:46 app.py -rw-r--r-- 1 root root 5 Nov 23 16:46 requirements.txt drwxr-xr-x 1 root root 20 Nov 23 16:46 static -rw-r--r-- 1 root root 32 Nov 23 16:49 test.txt %FW$POUBJOFS1ZUIPO ˠ(JUDMPOFͨ͠WTDPEFSFNPUFUSZQZUIPO %PDLFSϗετ %PDLFSJO1PENBOʣ্ͷಉ͡ϑΝΠϧ܈
  12. WTDPEFKQ ·ͱΊ • 3FNPUF44)84-ͱ 1PENBOΛซ༻͢Δͷ͸໰୊ແ͠ • 3FNPUF$POUBJOFST͸ %PDLFSΛ࢖͏ͷ͕շద ݱ࣌఺Ͱ͸ o'FEPSBͳͲཁ݅͑͞੔͑͹3FNPUF$POUBJOFST

    1PENBO͸ར༻Մೳ o1PENBOPO84-΋Մೳ o%PDLFSJO1PENBO΋ར༻Մೳʢ੍ݶ͋Γʣ • ·ͩ·੍ͩݶ͸ଟ͍͕ɺࠓޙͷΞοϓσʔτͰ%PDLFSͱͷબ୒͕༰ қʹͰ͖ΔΑ͏ʹͳΔ͜ͱΛظ଴͍ͨ͠ 
  13. WTDPEFKQ ΦϚέɿ'FEPSB$PSF04ͷ঺հ • ܰྔͳ04ɿ ØίϯςφʔΛಈ͔͢໨తҎ֎ͷ༨ܭͳ΋ͷ͕ͳ͍ • Πϯετʔϧɺ04ઃఆ͕؆୯ɿ Ø*HOJUJPOͱ͍͏࢓૊ΈΛར༻ • %PDLFSʢNPCZFOHJOFʣɺ1PENBOඪ४౥ࡌɿ

    ØΠϯετʔϧͷखؒ΍ޓ׵ੑΛؾʹͤͣɺ͙͢ʹίϯς φʔΛ࣮ߦՄೳ  4PGUXBSF%FTJHO݄߸ͷ݄ץ'FEPSBδϟʔφϧʹʮ'FEPSB $PSF040,%ʯͷهࣄΛࣥච