SlideShare a Scribd company logo
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

PDF
20200331 AWS Black Belt Online Seminar AWS Elemental MediaConvert
PDF
Hyperledger Fabric Private Chaincodeについて
PDF
[SC03] Active Directory の DR 対策~天災/人災/サイバー攻撃、その時あなたの IT 基盤は利用継続できますか?
PDF
Keycloak拡張入門
PDF
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
PDF
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
PPTX
Kubernetes introduction
PDF
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
20200331 AWS Black Belt Online Seminar AWS Elemental MediaConvert
Hyperledger Fabric Private Chaincodeについて
[SC03] Active Directory の DR 対策~天災/人災/サイバー攻撃、その時あなたの IT 基盤は利用継続できますか?
Keycloak拡張入門
ASP.NET CoreとAzure AD B2Cを使ったサクっと認証
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
Kubernetes introduction
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)

What's hot (20)

PDF
今だからこそ知りたい Docker Compose/Swarm 入門
PDF
20190522 AWS Black Belt Online Seminar AWS Step Functions
PDF
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
PPTX
DeNA の AWS アカウント管理とセキュリティ監査自動化
PDF
AWS Black Belt Online Seminar 2017 AWS Storage Gateway
PDF
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
PDF
[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送
PDF
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
PDF
Google Cloud でアプリケーションを動かす.pdf
PDF
クラウド環境下におけるAPIリトライ設計
PDF
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
PPTX
Azure ADアプリケーションを使用した認証のあれやこれ
PDF
20190731 Black Belt Online Seminar Amazon ECS Deep Dive
PPTX
Keycloakのステップアップ認証について
PDF
Alphorm.com Microsoft AZURE
PDF
”30分”ぐらいでわかる「Kubernetes」について
PDF
Docker 基本のおさらい
PPTX
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
PDF
多要素認証による Amazon WorkSpaces の利用
PDF
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
今だからこそ知りたい Docker Compose/Swarm 入門
20190522 AWS Black Belt Online Seminar AWS Step Functions
そろそろ知っておきたい!!コンテナ技術と Dockerのキホン
DeNA の AWS アカウント管理とセキュリティ監査自動化
AWS Black Belt Online Seminar 2017 AWS Storage Gateway
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Google Cloud でアプリケーションを動かす.pdf
クラウド環境下におけるAPIリトライ設計
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
Azure ADアプリケーションを使用した認証のあれやこれ
20190731 Black Belt Online Seminar Amazon ECS Deep Dive
Keycloakのステップアップ認証について
Alphorm.com Microsoft AZURE
”30分”ぐらいでわかる「Kubernetes」について
Docker 基本のおさらい
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
多要素認証による Amazon WorkSpaces の利用
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
Ad

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

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

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