SlideShare a Scribd company logo
1 of 38
Download to read offline
Docker Desktop WSL2 Backendで捗る
Windows PCのコンテナ開発環境
2020年7月29日
@integrated1453
あんどぅ(Yuki Ando)
Infra Study Meetup #4 LT
1
自己紹介
◼ あんどぅ(Yuki Ando) @integrated1453
⚫ SIer10年目 インフラエンジニア
⚫ 最近の仕事
– AWSのアーキテクチャ設計やInfrastructure as Code
– CI/CDパイプラインの整備やモニタリングの改善
⚫ 登壇
– Cloud Operatar Days Tokyo 2020 (A-1-6)
2
目次
自己紹介
Docker Desktop WSL 2 Backendに乗り換えてみた
なぜDocker Desktop + WSLで使いたいのか
なぜDocker Desktopを使いたいのか
なぜDocker Desktop WSL 2 Backendを使いたいのか
まとめ
3
\Windowsでもdocker runしたい/
仮想化ソフトウェアでLinuxVMを起動する VMにDocker Engineのセットアップするのを自動化する
4
\Windowsでもdocker runしたい/
仮想化ソフトウェアでLinuxVMを起動する VMにDocker Engineのセットアップするのを自動化する
ローカルで動かすDockerホスト用VMの管理、
やりたくないなぁ・・・
5
Docker Desktopがよさそう
WindowsのコマンドプロンプトやPowerShell
からdockerコマンドが利用できる
Kubernetesクラスタも簡単に
ローカルにセットアップできる
Docker EngineがHyper-V上のVMで動く
Docker Desktop.exe
https://www.docker.com/products/docker-desktop
6
Docker Desktopがよさそう
WindowsのコマンドプロンプトやPowerShell
からdockerコマンドが利用できる
Kubernetesクラスタも簡単に
ローカルにセットアップできる
Docker Desktop.exe
https://www.docker.com/products/docker-desktop
Docker EngineがHyper-V上のVMで動く
◼ このVMの中身は管理不要
◼ Docker Engineも自動アップデート可能
7
Hyper-VマネージャーをみるとVMが実行されている
VMのスペックはDocker Desktopの設定で管理
8
目次
自己紹介
Docker Desktop WSL 2 Backendに乗り換えてみた
なぜDocker Desktop + WSLで使いたいのか
なぜDocker Desktopを使いたいのか
なぜDocker Desktop WSL 2 Backendを使いたいのか
まとめ
9
やっぱり使いづらい
コマンドプロンプトやPowerShellから
dockerコマンドとか、もぅマヂ無理。Macつかぉ。。。
だってこういうシェル芸やりたいし→
(dockerコマンドのオプションは覚えられないけど
grep,sed,awkなら空で打てる)
10
社内の標準PCはWindowsです。
標準化されたセキュリティ対策がされていない
Macは社内LANに接続しないでください。
ぐぬぬ・・・
リポジトリが社内LAN
にしかないのに・・・
やはりVMか?🤔
会社のルールぼく
しかし会社のルールが・・・
11
社内の標準PCはWindowsです。
標準化されたセキュリティ対策がされていない
Macは社内LANに接続しないでください。
ぐぬぬ・・・
リポジトリが社内LAN
にしかないのに・・・
やはりVMか?🤔
会社のルールぼく
しかし会社のルールが・・・
WindowsでDocker Desktopのメリットを
残したままLinuxのCUIでDocker操作したい
12
WSLのdocker clientからDocker DeskTopのDockerEngineを操作
Windows 10 Proffesional
Windows Subsystem for Linux クライアント Hyper-V
Ubuntu DockerDesktopVM
docker client docker engine
imagecontainer
dockerコマンドを実行
13
WSLのdocker clientからDocker DeskTopのDockerEngineを操作
Windows 10 Proffesional
Windows Subsystem for Linux クライアント Hyper-V
Ubuntu DockerDesktopVM
docker client docker engine
imagecontainer
dockerコマンドを実行
DockerDesktopの設定でlocalhost:2375を開放WSLの環境変数DOCKER_HOSTにリモートを設定
14
ぼく
これでLinuxのCUIからDockerコマンドつかえる!
ヤッターー!もうこれでいいじゃん!!
15
普
通
に
使
え
る
と
思
っ
た
?
残
念
!
W
i
n
d
o
w
s
で
し
た
!
16
目次
自己紹介
Docker Desktop WSL 2 Backendに乗り換えてみた
なぜDocker Desktop + WSLで使いたいのか
なぜDocker Desktopを使いたいのか
なぜDocker Desktop WSL 2 Backendを使いたいのか
まとめ
17
\docker-composeを使って環境構築を自動化したい/
18
ローカルでの開発・テスト用にvolumesをマウントしたい時とか
19
ローカルでの開発・テスト用にvolumesをマウントしたい時とか
ユースケース:
◼ Git管理のスクリプトをマウントさせてコンテナ内
で初期化処理を実行させたい
◼ .gitignoreした空ディレクトリをマウントさせて
ローカル環境でのみデータを永続化したい
「git cloneしてdocker-compose up」すれば全ての開発者が同じ環境構築ができるように、
相対パスでGitリポジトリ内のディレクトリを指定してvolumeをマウントしたい
20
Docker Desktopはマウントさせたい場合、設定からドライブを追加して
21
C:¥から始まるフルパスを指定してマウントしろってさ
https://docs.docker.com/docker-for-windows/#file-sharing
22
C:¥から始まるフルパスを指定してマウントしろってさ
https://docs.docker.com/docker-for-windows/#file-sharing
え?🤔
23
やってみたけど、相対パスでマウントは無理だった・・・orz
OK
NG
NG
これをやりたい→
◼docker-conpose.ymlのvolumes部分
◼docker inspectのMounts部分
OKなパターン ダメなパターン
絶対パスを指定すると、
VMに共有されたディレク
トリにマッピングされる
マウントされているが、
そんなディレクトリはVMに
共有されていないので空
24
やってみたけど、相対パス無理だった・・・orz
つらい
◼ Windowsから見えるところにgit cloneしないと
いけない(WSL内のディレクトリは不可)
◼ リポジトリをcloneする場所はユーザによって違う
(CドライブかDドライブかとかも自由にしたい)
開発者ごとに手元でdocker-compose.yml内のvolumesのパスや
DockerDesktopのドライブ共有を意識して設定しないといけなくなる。
25
Docker Desktop WSL 2 backend
26
Docker Desktop WSL 2 backendがリリース
https://www.docker.com/blog/new-docker-desktop-wsl2-backend/
Architecture of the Hyper-V backend How it translates to the new WSL 2 backend
◼ WSL 2 Utility VMの内側からネイティブなdockerコマンドが打てるはず
27
目次
自己紹介
Docker Desktop WSL 2 Backendに乗り換えてみた
なぜDocker Desktop + WSLで使いたいのか
なぜDocker Desktopを使いたいのか
なぜDocker Desktop WSL 2 Backendを使いたいのか
まとめ
28
乗り換えの前提条件
◼ Windows 10 バージョン2004 (OSビルド:19041以上)
◼ WSL導入済み
◼ Docker Desktop 2.2.2.0以上(Stableで既に2.3が配信中)
◼ WSL 2 Kernel Update
→最近、オンラインのWindows Updateでも降ってきた
29
WSL→WSL 2に更新する
https://docs.microsoft.com/ja-jp/windows/wsl/install-win10#update-to-wsl-2
30
WSLで利用中のLinuxディストリビューションをWSL 2に変換する
https://docs.microsoft.com/ja-jp/windows/wsl/install-win10#update-to-wsl-2
◼バージョン確認
◼WSL 2に更新
31
Docker DesktopのBackendをHyper-V→WSL2に変更する
32
UbuntuにDocker DesktopのWSL Integrationを有効化する
33
TCP経由ではなくdocker.sock経由の操作が可能になった模様
TCPでは通信できなくなったので、環境変数DOCKER_HOSTをクリア
(WSL→WSL2で仮想マシンになったのでlocalhost宛の通信は
Windowsホストに到達しなくなった)
Ubuntuにもdocker.sockが生えていた・・・!これは期待
34
期待を込めた渾身のdocker-compose up・・・!
OK
NG
NG
OK
NG
◼WSL 2 Backendに変更直後はレイヤーキャッシュが全て消えていた
\相対パスでマウントできた!勝った!/
これをやりたい→
OK
35
目次
自己紹介
Docker Desktop WSL 2 Backendに乗り換えてみた
なぜDocker Desktop + WSLで使いたいのか
なぜDocker Desktopを使いたいのか
なぜDocker Desktop WSL 2 Backendを使いたいのか
まとめ
36
まとめ
◼ Doker Desktop(Hyper-V Backend)ではDocker Composeで相対パスによる
ボリュームのマウントは開発者ごとに自分の環境を意識して設定する必要があった。
◼ Docker Desktop WSL 2 Backendでは相対パスでマウントできるようになったため、
Windows/Macの環境差異を意識することなく、共通化されたdocker-compose.ymlの
運用とGitリポジトリ上でローカル環境設定の一元管理ができるようになった。
丸一日悪戦苦闘して環境構築 docker-compose up待ち
WindowsでもMacでも「git clone→docker-compose up」して待ってれば環境構築完了に
37
/
Docker Desktop WSL 2 Backendで
Windows PCでもコンテナ開発を楽しみましょう!
\

More Related Content

What's hot

What's hot (20)

脆弱性スキャナVulsで始めるセキュリティ対策
脆弱性スキャナVulsで始めるセキュリティ対策脆弱性スキャナVulsで始めるセキュリティ対策
脆弱性スキャナVulsで始めるセキュリティ対策
 
セルフペースラボで気軽に始めるAWS
セルフペースラボで気軽に始めるAWSセルフペースラボで気軽に始めるAWS
セルフペースラボで気軽に始めるAWS
 
データモデリング・テクニック
データモデリング・テクニックデータモデリング・テクニック
データモデリング・テクニック
 
実践イカパケット解析
実践イカパケット解析実践イカパケット解析
実践イカパケット解析
 
プロジェクトマネジメントの原理原則を、おでん作りストーリーで学ぶ
プロジェクトマネジメントの原理原則を、おでん作りストーリーで学ぶプロジェクトマネジメントの原理原則を、おでん作りストーリーで学ぶ
プロジェクトマネジメントの原理原則を、おでん作りストーリーで学ぶ
 
明治大学 データサイエンス・AIに関するオムニバス授業 エバンジェリストというキャリア
明治大学 データサイエンス・AIに関するオムニバス授業 エバンジェリストというキャリア明治大学 データサイエンス・AIに関するオムニバス授業 エバンジェリストというキャリア
明治大学 データサイエンス・AIに関するオムニバス授業 エバンジェリストというキャリア
 
第34回Office 365勉強会 : Microsoftサポート活用術 ~ Microsoft Azureを中心に ~
第34回Office 365勉強会 : Microsoftサポート活用術 ~ Microsoft Azureを中心に ~第34回Office 365勉強会 : Microsoftサポート活用術 ~ Microsoft Azureを中心に ~
第34回Office 365勉強会 : Microsoftサポート活用術 ~ Microsoft Azureを中心に ~
 
心理的安全性の構造 デブサミ2019夏 structure of psychological safety
心理的安全性の構造 デブサミ2019夏 structure of psychological safety心理的安全性の構造 デブサミ2019夏 structure of psychological safety
心理的安全性の構造 デブサミ2019夏 structure of psychological safety
 
Zabbix超入門
Zabbix超入門Zabbix超入門
Zabbix超入門
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
 
ソースで学ぶ脆弱性診断 - SmartTechGeeks #2
ソースで学ぶ脆弱性診断 - SmartTechGeeks #2ソースで学ぶ脆弱性診断 - SmartTechGeeks #2
ソースで学ぶ脆弱性診断 - SmartTechGeeks #2
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
Glue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみようGlue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみよう
 
ランサムウェア対策 ”最後の砦” データ保護からみる感染対策セミナー
ランサムウェア対策 ”最後の砦” データ保護からみる感染対策セミナーランサムウェア対策 ”最後の砦” データ保護からみる感染対策セミナー
ランサムウェア対策 ”最後の砦” データ保護からみる感染対策セミナー
 
Big Data Architecture 全体概要
Big Data Architecture 全体概要Big Data Architecture 全体概要
Big Data Architecture 全体概要
 
Inside wsl
Inside wslInside wsl
Inside wsl
 
MLOpsはバズワード
MLOpsはバズワードMLOpsはバズワード
MLOpsはバズワード
 
使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!
 
#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門
 

Similar to Docker Desktop WSL2 Backendで捗るWindows PCのコンテナ開発環境

20110924 shizuoka azure-forsharing
20110924 shizuoka azure-forsharing20110924 shizuoka azure-forsharing
20110924 shizuoka azure-forsharing
Kazuki Aranami
 

Similar to Docker Desktop WSL2 Backendで捗るWindows PCのコンテナ開発環境 (20)

はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
 
オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
Dockerを使ったクライアントハイパーバイザー
Dockerを使ったクライアントハイパーバイザーDockerを使ったクライアントハイパーバイザー
Dockerを使ったクライアントハイパーバイザー
 
Open Source x AI
Open Source x AIOpen Source x AI
Open Source x AI
 
Osc fukuoka xAI Meetup
Osc fukuoka xAI MeetupOsc fukuoka xAI Meetup
Osc fukuoka xAI Meetup
 
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
 
自由検証環境提供宣言+Docker Compose V2 GA
自由検証環境提供宣言+Docker Compose V2 GA自由検証環境提供宣言+Docker Compose V2 GA
自由検証環境提供宣言+Docker Compose V2 GA
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築
 
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
 
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT
【Cloud Week 2015@Hokkaido University】Dockerとインフラ運用自働化とIoT
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
 
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
 
20110924 shizuoka azure-forsharing
20110924 shizuoka azure-forsharing20110924 shizuoka azure-forsharing
20110924 shizuoka azure-forsharing
 
Docker入門
Docker入門Docker入門
Docker入門
 
20160217 hbstudy73 linux on Azure
20160217 hbstudy73 linux on Azure20160217 hbstudy73 linux on Azure
20160217 hbstudy73 linux on Azure
 
Running Kubernetes on Azure
Running Kubernetes on AzureRunning Kubernetes on Azure
Running Kubernetes on Azure
 
ASP.NET Core のお気に入りの機能たち (docker向け)
ASP.NET Core のお気に入りの機能たち (docker向け)ASP.NET Core のお気に入りの機能たち (docker向け)
ASP.NET Core のお気に入りの機能たち (docker向け)
 
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
 

Docker Desktop WSL2 Backendで捗るWindows PCのコンテナ開発環境