WSL2 + Ubuntu18.04 + Docker 환경 구축
19260 단어 환경 구축도커ubuntu18.04WSL2
소개
어드벤트 캘린더 11일째 기사입니다.
이번에는 Windows에서 WSL2 환경을 설정하는 방법을 소개합니다.
글쎄, 기사가 많이 있지만 정보가 오래된 오류가 발생하여 잘 작동하지 않습니다. . .
기사와 터미널을 왔다 갔을 때 시간이 걸리거나 설정에 번거로움을 느끼는 경우가 많지 않을까요?
본 기사에서는, 그런 힘든 설정을 쉘 스크립트로 대부분을 구축하는 방법을 소개합니다.
환경
※Ubuntu 20.04의 경우는, 적절히 치환해 주세요.
Ubuntu 18.04 설치
Microsoft Store에서 Ubuntu 18.04LTS 설치

WSL1 설정
설치된 Ubuntu 18.04를 시작 메뉴에서 열어 사용자 이름과 암호를 설정합니다.
Ubuntu18.04 터미널# 初回起動時は初期設定が必要
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: # <= ログインユーザ名を設定
Enter new UNIX password: # <= ログインパスワードを設定(sudo コマンド実行時等に必要なため忘れないようにする)
Retype new UNIX password: # <= ログインパスワードをもう一度入力
# 初期設定を行うと WSLにUbuntu 18.04 ディストロが追加される
# ここで一旦終了する
$ exit
WSL2 활성화
PowerShell을 관리자 권한으로 열고 다음 명령을 입력합니다.
# WSL2 を使うために、Windows仮想化機能(Hyper-V)を有効化
> Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
この操作を完了するために、今すぐコンピューターを再起動しますか?
[Y] Yes [N] No [?] ヘルプ (既定値は "Y"): # そのままENTERして再起動
# 再起動が完了したらWSLのバージョン確認
## 現状の Ubuntu 18.04はVersion 1 になっているはずです
> wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Stopped 1
# 先にインストールしていたUbuntu 18.04をWSL2環境に変換する
> wsl --set-version Ubuntu-18.04 2
# 「WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。」というエラーが出た場合
## => https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi をインストールして再実行する
# 変換が完了したらバージョン確認
## Ubuntu 18.04がVersion 2になっていればOK
> wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Stopped 2
WSL2 활성화가 완료되었습니다.
다음은 WSL2를 열고 기본 설정을 수행합니다.
기본 설정
우분투 환경을 일괄적으로 설정하기 위한 쉘 스크립트를 준비했습니다.
기사를 보면서 복사하지 않고 기본적인 것은 일괄 적으로 설치할 수 있습니다.
할 일
설치된 Ubuntu 18.04를 시작 메뉴에서 열어 사용자 이름과 암호를 설정합니다.
Ubuntu18.04 터미널
# 初回起動時は初期設定が必要
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: # <= ログインユーザ名を設定
Enter new UNIX password: # <= ログインパスワードを設定(sudo コマンド実行時等に必要なため忘れないようにする)
Retype new UNIX password: # <= ログインパスワードをもう一度入力
# 初期設定を行うと WSLにUbuntu 18.04 ディストロが追加される
# ここで一旦終了する
$ exit
WSL2 활성화
PowerShell을 관리자 권한으로 열고 다음 명령을 입력합니다.
# WSL2 を使うために、Windows仮想化機能(Hyper-V)を有効化
> Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
この操作を完了するために、今すぐコンピューターを再起動しますか?
[Y] Yes [N] No [?] ヘルプ (既定値は "Y"): # そのままENTERして再起動
# 再起動が完了したらWSLのバージョン確認
## 現状の Ubuntu 18.04はVersion 1 になっているはずです
> wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Stopped 1
# 先にインストールしていたUbuntu 18.04をWSL2環境に変換する
> wsl --set-version Ubuntu-18.04 2
# 「WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。」というエラーが出た場合
## => https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi をインストールして再実行する
# 変換が完了したらバージョン確認
## Ubuntu 18.04がVersion 2になっていればOK
> wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Stopped 2
WSL2 활성화가 완료되었습니다.
다음은 WSL2를 열고 기본 설정을 수행합니다.
기본 설정
우분투 환경을 일괄적으로 설정하기 위한 쉘 스크립트를 준비했습니다.
기사를 보면서 복사하지 않고 기본적인 것은 일괄 적으로 설치할 수 있습니다.
할 일
# WSL2 を使うために、Windows仮想化機能(Hyper-V)を有効化
> Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
この操作を完了するために、今すぐコンピューターを再起動しますか?
[Y] Yes [N] No [?] ヘルプ (既定値は "Y"): # そのままENTERして再起動
# 再起動が完了したらWSLのバージョン確認
## 現状の Ubuntu 18.04はVersion 1 になっているはずです
> wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Stopped 1
# 先にインストールしていたUbuntu 18.04をWSL2環境に変換する
> wsl --set-version Ubuntu-18.04 2
# 「WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。」というエラーが出た場合
## => https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi をインストールして再実行する
# 変換が完了したらバージョン確認
## Ubuntu 18.04がVersion 2になっていればOK
> wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Stopped 2
우분투 환경을 일괄적으로 설정하기 위한 쉘 스크립트를 준비했습니다.
기사를 보면서 복사하지 않고 기본적인 것은 일괄 적으로 설치할 수 있습니다.
할 일
작동에 필요한 기본 미들웨어 설치
Python 및 Node.js를 빌드하는 데 필요한 미들웨어를 설치하십시오
컬러 테마 설정
ColorTool을 사용하여
OneHalfDark
테마를 적용합니다 
Linuxbrew 설치
Docker 설치
쉘 스크립트로 실행
~/init.sh
를 만들고 아래의 전체 텍스트 복사스크립트의
[USER_NAME]
를 자신의 Windows 사용자 이름으로 변경합니다.~/init.sh
#!/bin/bash
install_colortool()
{
echo 'カラーテーマの適用'
# ColorToolのダウンロード先
## [USER_NAME]はWindowsのユーザ名に適宜変更
DOWNLOAD_PATH="/mnt/c/Users/[USER_NAME]/Downloads"
# 適用したいカラーテーマ(今回はOneHalfDarkを選択)
# 変えたい場合は、ColorTool.exe -s で選択可能なテーマを確認して置き換える
COLOR_THEME="OneHalfDark.itermcolors"
echo 'ColorTool.zipのダウンロード'
wget -P "${DOWNLOAD_PATH}" https://github.com/microsoft/terminal/releases/download/1904.29002/ColorTool.zip
echo 'zipファイルの解凍'
unzip "${DOWNLOAD_PATH}/ColorTool.zip" -d "${DOWNLOAD_PATH}/ColorTool"
echo 'zipファイルの削除'
rm "${DOWNLOAD_PATH}/ColorTool.zip"
echo 'カラーテーマの種類'
`echo ${DOWNLOAD_PATH}/ColorTool/ColorTool.exe -s`
echo 'OneHalfDarkテーマの選択'
# その他のテーマを変更したい場合は-dオプションの後を置き換える
`echo ${DOWNLOAD_PATH}/ColorTool/ColorTool.exe -d ${COLOR_THEME}`
echo '解凍したフォルダの削除'
rm -r "${DOWNLOAD_PATH}/ColorTool"
}
install_linuxbrew()
{
echo 'Linuxbrew (Linux版の Homebrew パッケージマネージャ) 導入'
## Linuxbrew を使うことで最新の開発ツール等を導入しやすくなる
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
echo 'PATHを通す'
echo 'export PATH="/home/linuxbrew/.linuxbrew/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
echo 'Linuxbrew で各種開発ツールを導入'
## curl や git などは、最新版を使う方が良いため、改めて Linuxbrew で導入しなおす
brew install curl git wget gcc zlib libzip bzip2 readline openssl pkg-config autoconf
exec $SHELL -l
}
install_anyenv()
{
echo 'Linuxbrewでanyenv導入'
brew install anyenv
anyenv install --init
source ~/.bashrc
echo 'anyenv update plugin の導入'
mkdir -p $(anyenv root)/plugins
git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
anyenv update
echo 'バージョン確認'
anyenv -v
}
install_docker()
{
echo 'Docker (Community Edition) インストール'
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt update && sudo apt install -y docker-ce
# /sbin/mount -a 実行時に rc ファイルシステムをマウントするように設定
echo 'none none rc defaults 0 0' | sudo tee -a /etc/fstab
# /sbin/mount.rc ファイルを実行可能スクリプトとして作成
echo '#!/bin/bash' | sudo tee /sbin/mount.rc
sudo chmod +x /sbin/mount.rc
echo 'WSL2再起動時dockerデーモンをスタートアップに登録するための設定'
echo 'service docker start を /sbin/mount.rc に追記'
echo 'service docker start' | sudo tee -a /sbin/mount.rc
# WSL2にはcgroup用ディレクトリがデフォルトで作られていないため、以下もスタートアップスクリプトに登録しておく
## これをしておかないと Docker でプロセスのグループ化が必要になったときにエラーが起きる
echo 'mkdir -p /sys/fs/cgroup/systemd && mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd' | sudo tee -a /sbin/mount.rc
# dockerデーモン起動
sudo service docker start
# WSL2 には cgroup 用ディレクトリがデフォルトで作られていないため作成しておく
sudo mkdir -p /sys/fs/cgroup/systemd
sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd
echo 'docker-compose 導入'
sudo curl -L https://github.com/docker/compose/releases/download/1.26.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
echo 'Dockerをsudoなしで実行可能に'
echo '※ カレントユーザーをdockerグループに所属させた上で docker.sock へのグループ書き込み権限を付与すればよい'
sudo gpasswd -a $USER docker
sudo chgrp docker /var/run/docker.sock
sudo service docker restart
echo '設定を反映するためにターミナル再起動'
exec $SHELL -l
}
echo 'Linuxシステムアップデート'
sudo apt update && sudo apt upgrade -y
# ビープ音を鳴らさないように設定
echo "set bell-style none" >> ~/.inputrc
echo 'Linuxbewの動作に必要なパッケージのインストール'
sudo apt install -y vim curl git ruby
echo 'openjdkは個人開発で必要なため一応インストール'
sudo apt install -y openjdk-11-jdk
echo 'Pythonビルドに必要なミドルウェアのインストール'
sudo apt install -y zlib1g-dev libssl-dev libbz2-dev libsqlite3-dev libffi-dev \
build-essential libreadline-dev tk-dev liblzma-dev libgdbm-dev libdb-dev
echo 'https通信を可能にするためのミドルウェアをインストール'
sudo apt install -y software-properties-common apt-transport-https ca-certificates
echo '==========linux brewのインストール========='
install_linuxbrew
echo '==========linux brewのインストール完了========='
echo '==========anyenvのインストール========='
install_anyenv
echo '==========anyenvのインストール完了========='
echo '==========Dockerのインストール========='
install_docker
echo '==========Dockerのインストール完了========='
실행 속성을 주어 실행한다.
# 実行属性の付与
$ chmod +x init.sh
# シェルの実行
$ ./init.sh
Python 및 Node.js 설치
기본 설정으로 설치한 anyenv
를 사용하여 Python과 Node.js를 설치합니다.
이것들을 쉘 스크립트에 포함하지 않은 이유는, exec $SHELL -l
(을)를 실행할 때 프로그램이 종료해 버리기 (위해)때문입니다.
단계가 많지 않으므로 필요한 경우 설치합시다.
파이썬 설치
pyenv를 사용하여 Python 3.9
를 설치합니다.
# anyenv を使って pyenv 導入
$ anyenv install pyenv
$ exec $SHELL -l
# pyenvでPython 3.9をインストール
$ pyenv install 3.9.0
# pyenvによるPythonのバージョン指定
$ pyenv global 3.9.0
# 現在選択されているバージョンを確認
$ pyenv versions
# Pythonのバージョン確認
$ python --version
# pipパッケージマネージャを更新しておく
$ pip3 install --upgrade pip setuptools
# pipのバージョン確認
$ pip3 --version
(추기) 에러 회피
pyenv의 사양 변경으로 이대로라면 Warning이 WSL 기동할 때마다 나오기 때문에.bashrc
의 eval "$(anyenv init -)"
위에 다음을 추가합니다.
.bashrcexport PYENV_ROOT="$HOME/.anyenv/envs/pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
eval "$(anyenv init -)"
Node.js 설치
nodenv를 사용하여 Node.js 15.2.0
를 설치합니다.
# anyenvを使ってnodenv導入
$ anyenv install nodenv
$ exec $SHELL -l
# nodenv-yarn-install プラグイン導入: nodenv install 時にyarnもインストールする
$ mkdir -p "$(nodenv root)/plugins"
$ git clone https://github.com/pine/nodenv-yarn-install.git "$(nodenv root)/plugins/nodenv-yarn-install"
$ export PATH="$HOME/.yarn/bin:$PATH" >> ~/.bashrc
# Node.js 15.2.0インストール
$ touch $(nodenv root)/default-packages
$ nodenv install 15.2.0
# Node.js 15.2.0 に切り替え
$ nodenv global 15.2.0
# 現在選択されているバージョンを確認
$ nodenv versions
# シェルの再起動
$ exec $SHELL -l
# Node.jsバージョン確認
$ node -v
# yarnバージョン確認
$ yarn -v
결론
이번에는 WSL2 설정을 소개했습니다.
Docker 환경이 WSL 내에서 완결되므로 정말 리눅스에 가까운 형태로 이용할 수 있을 것 같습니다.
내일은 @tadahaya씨의 기사입니다. 기대하세요 🎉
Reference
이 문제에 관하여(WSL2 + Ubuntu18.04 + Docker 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/satto_sann/items/b4f332cd76b48659f11e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# anyenv を使って pyenv 導入
$ anyenv install pyenv
$ exec $SHELL -l
# pyenvでPython 3.9をインストール
$ pyenv install 3.9.0
# pyenvによるPythonのバージョン指定
$ pyenv global 3.9.0
# 現在選択されているバージョンを確認
$ pyenv versions
# Pythonのバージョン確認
$ python --version
# pipパッケージマネージャを更新しておく
$ pip3 install --upgrade pip setuptools
# pipのバージョン確認
$ pip3 --version
export PYENV_ROOT="$HOME/.anyenv/envs/pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
eval "$(anyenv init -)"
# anyenvを使ってnodenv導入
$ anyenv install nodenv
$ exec $SHELL -l
# nodenv-yarn-install プラグイン導入: nodenv install 時にyarnもインストールする
$ mkdir -p "$(nodenv root)/plugins"
$ git clone https://github.com/pine/nodenv-yarn-install.git "$(nodenv root)/plugins/nodenv-yarn-install"
$ export PATH="$HOME/.yarn/bin:$PATH" >> ~/.bashrc
# Node.js 15.2.0インストール
$ touch $(nodenv root)/default-packages
$ nodenv install 15.2.0
# Node.js 15.2.0 に切り替え
$ nodenv global 15.2.0
# 現在選択されているバージョンを確認
$ nodenv versions
# シェルの再起動
$ exec $SHELL -l
# Node.jsバージョン確認
$ node -v
# yarnバージョン確認
$ yarn -v
이번에는 WSL2 설정을 소개했습니다.
Docker 환경이 WSL 내에서 완결되므로 정말 리눅스에 가까운 형태로 이용할 수 있을 것 같습니다.
내일은 @tadahaya씨의 기사입니다. 기대하세요 🎉
Reference
이 문제에 관하여(WSL2 + Ubuntu18.04 + Docker 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/satto_sann/items/b4f332cd76b48659f11e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)