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

Remote Development with Podman

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Shion Tanaka 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

Avatar for Shion Tanaka

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,%ʯͷهࣄΛࣥච