0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VSCodeで始めるDockerコンテナ上にJava開発環境を構築(①WSL環境準備編)

Last updated at Posted at 2024-09-16

目的

Visual Studio Code(以降、VSCodeで記載)、WSL2を使用してDocker環境上に以下のコンテナを作成するために実施した内容を残しておきたいと思います。
Windows環境を汚さず、繰り返し構築可能なJava開発環境の構築を目指します。
※記事は2回に分け、今回は①として「WSL環境準備編」となります。

Java開発環境(全2回)の概要

  • WSL2上のUbuntuにDockerを導入
  • VSCodeのDevContainer機能を利用し、Dockerfileやdocker-compose.ymlによるコンテナ作成
  • コンテナではSDKMANを導入(複数のJavaのバージョンを切り替え、Mavenを利用)

第1回「①WSL環境準備編」における記載範囲

  • WSL2:LinuxディストリビューションとしてUbuntuを導入
  • VSCodeからDevContainer機能を用いてディストリビューション(Ubuntu)にアクセス

1. 前提条件

  • エディション:Windows10 Pro
  • 環境構築時に使用したソフトウェアやバージョンは以下の通り。
# os/software version 用途
1 Visual Studio Code 1.93.0 統合開発環境(IDE)として利用
DevContainer機能を利用し、コンテナ構築
2 WSL 2 ディストリビューションとしてUbuntuを導入
3 Ubuntu 22.04 Dockerを導入し、Java開発環境を構築
4 SDKMAN script: 5.18.2
native: 0.4.6
JVMベース言語のバージョン管理ツールとして使用
5 Java 11.0.24-tem
17.0.12-tem
21.0.4-tem
Java11、17、21を切り替えて使用
6 Maven 3.9.8 Mavenプロジェクトの構築、ビルドで使用
  • 構築する環境はproxyを使用するための設定をしていますが、全ての環境におけるベストプラクティスとは限りません。
    各自で利用する環境に合わせて、proxy設定内容が適切かご確認の上ご参考にして頂ければと思います。

2. WSL2環境準備

2.1. WSLバージョン確認

※以下、バージョンを確認しておきます。
 ver1でない場合、「2.2. WSLバージョンアップ」は読み飛ばし頂いて問題ありません。

PS C:\WINDOWS\system32> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-22.04    Stopped         1

2.2. WSLバージョンアップ

以下、手順 3~5を実施してWSL2にバージョンアップを行う。

以前のバージョンの WSL の手動インストール手順

手順 3: 仮想マシンの機能を有効にする

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

手順 4 - Linux カーネル更新プログラム パッケージをダウンロードする

PS C:\WINDOWS\system32> wsl.exe --update
インストール中: Linux  Windows サブシステム
Linux  Windows サブシステム  はインストールされました。

手順 5 - WSL 2 を既定のバージョンとして設定する

wsl --set-default-version 2

注意事項

WSLバージョンが"2"であったとしても、「wsl --update」は1回は実行しておいた方が良いと思います。
(systemdコマンドが使えない状態でハマったこともあるため)

PS C:\WINDOWS\system32> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-22.04    Running         2

3. WSL2環境構築

3.1. Ubuntu22.04の導入

Microsoft Storeからダウンロードおよびインストール手順は、以下のサイトに分かりやすく記載されているため、そちらを参照ください。
Ubunt22.04

3.2. Dockerの導入

Dockerのインストールについては、以下コマンドを実行します。

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh

備忘として、参考にさせて頂いたDocker Docs公式サイトも記載しておきます。
[Docker Docs] Install Docker Engine on Ubuntu
Install using the convenience script

コマンド実行時のログ内容については、参考情報として以下に記載。

実行ログ
ubuntu@DESKTOP-BMGUJA8:~$ curl -fsSL https://get.docker.com -o get-docker.sh
ubuntu@DESKTOP-BMGUJA8:~$ sudo sh ./get-docker.sh
[sudo] password for ubuntu: 
# Executing docker install script, commit: 6d9743e9656cc56f699a64800b098d5ea5a60020

WSL DETECTED: We recommend using Docker Desktop for Windows.
Please get Docker Desktop from https://www.docker.com/products/docker-desktop/


You may press Ctrl+C now to abort this script.
+ sleep 20
+ sh -c apt-get update -qq >/dev/null
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
+ sh -c install -m 0755 -d /etc/apt/keyrings
+ sh -c curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" -o /etc/apt/keyrings/docker.asc
+ sh -c chmod a+r /etc/apt/keyrings/docker.asc
+ sh -c echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu jammy stable" > /etc/apt/sources.list.d/docker.list
+ sh -c apt-get update -qq >/dev/null
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin >/dev/null
+ sh -c docker version
Client: Docker Engine - Community
 Version:           27.0.3
 API version:       1.46
 Go version:        go1.21.11
 Git commit:        7d4bcd8
 Built:             Sat Jun 29 00:02:33 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          27.0.3
  API version:      1.46 (minimum version 1.24)
  Go version:       go1.21.11
  Git commit:       662f78c
  Built:            Sat Jun 29 00:02:33 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.18
  GitCommit:        ae71819c4f5e67bb4d5ae76a6b735f29cc25774e
 runc:
  Version:          1.7.18
  GitCommit:        v1.1.13-0-g58aa920
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

================================================================================

To run Docker as a non-privileged user, consider setting up the
Docker daemon in rootless mode for your user:

    dockerd-rootless-setuptool.sh install

Visit https://docs.docker.com/go/rootless/ to learn about rootless mode.


To run the Docker daemon as a fully privileged service, but granting non-root
users access, refer to https://docs.docker.com/go/daemon-access/

WARNING: Access to the remote API on a privileged Docker daemon is equivalent
         to root access on the host. Refer to the 'Docker daemon attack surface'
         documentation for details: https://docs.docker.com/go/attack-surface/

================================================================================

4. VSCodeからディストリビューション(Ubuntu)にアクセス

4.1. WSLに接続

  • VSCodeにて"><"を選択し、「Connect to WSL using Distro...を選択」を選択

4.1_①、②.PNG

  • Fileから「Open Folder」を選択し、カレントディレクトリを選択

4.1_③.PNG

4.2. Dockerのバージョン確認

  • Dockerがインストールできているか、バージョンを確認してみる。

4.2_①.PNG

Dockerバージョン確認コマンド

docker version
実行ログ
ubuntu@DESKTOP-BMGUJA8:~/project$ docker version
Client: Docker Engine - Community
 Version:           27.0.3
 API version:       1.46
 Go version:        go1.21.11
 Git commit:        7d4bcd8
 Built:             Sat Jun 29 00:02:33 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          27.0.3
  API version:      1.46 (minimum version 1.24)
  Go version:       go1.21.11
  Git commit:       662f78c
  Built:            Sat Jun 29 00:02:33 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.18
  GitCommit:        ae71819c4f5e67bb4d5ae76a6b735f29cc25774e
 runc:
  Version:          1.7.18
  GitCommit:        v1.1.13-0-g58aa920
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

次回の予定

Dockerfile、docker-compose.ymlを作成し、Java開発環境を構築する記事を投稿予定。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?