SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
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でもコンテナ開発を楽しみましょう!
\

Weitere ähnliche Inhalte

Was ist angesagt?

4年前にRustで新規プロダクトを?!枯れてない技術の採択にまつわるエトセトラ:developers summit 2023 10-d-8
4年前にRustで新規プロダクトを?!枯れてない技術の採択にまつわるエトセトラ:developers summit 2023 10-d-84年前にRustで新規プロダクトを?!枯れてない技術の採択にまつわるエトセトラ:developers summit 2023 10-d-8
4年前にRustで新規プロダクトを?!枯れてない技術の採択にまつわるエトセトラ:developers summit 2023 10-d-8
Yusuke Mori
 
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
whywaita
 

Was ist angesagt? (20)

コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
20分でわかるgVisor入門
20分でわかるgVisor入門20分でわかるgVisor入門
20分でわかるgVisor入門
 
インフラCICDの勘所
インフラCICDの勘所インフラCICDの勘所
インフラCICDの勘所
 
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
 
CyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengeCyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallenge
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
 
AWS Elemental MediaConvert で動画変換
AWS Elemental MediaConvert で動画変換AWS Elemental MediaConvert で動画変換
AWS Elemental MediaConvert で動画変換
 
4年前にRustで新規プロダクトを?!枯れてない技術の採択にまつわるエトセトラ:developers summit 2023 10-d-8
4年前にRustで新規プロダクトを?!枯れてない技術の採択にまつわるエトセトラ:developers summit 2023 10-d-84年前にRustで新規プロダクトを?!枯れてない技術の採択にまつわるエトセトラ:developers summit 2023 10-d-8
4年前にRustで新規プロダクトを?!枯れてない技術の採択にまつわるエトセトラ:developers summit 2023 10-d-8
 
Kubernetes で実践するクラウドネイティブ DevOps "監視とオブザーバビリティ"編 / Cloud Native DevOps with K...
Kubernetes で実践するクラウドネイティブ DevOps "監視とオブザーバビリティ"編 / Cloud Native DevOps with K...Kubernetes で実践するクラウドネイティブ DevOps "監視とオブザーバビリティ"編 / Cloud Native DevOps with K...
Kubernetes で実践するクラウドネイティブ DevOps "監視とオブザーバビリティ"編 / Cloud Native DevOps with K...
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
 
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
実践イカパケット解析
実践イカパケット解析実践イカパケット解析
実践イカパケット解析
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
 
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しようCognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
 
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイントVPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
 

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

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

Ähnlich wie 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 の活用
 

Kürzlich hochgeladen

Kürzlich hochgeladen (7)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

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