Windows10 Update가 왔으므로 WSL2에서 Ubuntu 20.04 LTS를 시작하고 Docker 설치
12465 단어 WSL우분투Windows10docker-compose도커
소개
오늘 2020년 05월 28일에 Windows10 2004 May 2020 Update가 정식으로 온 것 같네요😊
최근 PC를 구입해, Linux를 듀얼 부트로 인스톨 하려고 생각하고 있었습니다만, WSL2가 곧 온다고 하기 때문에 기다리고 있었습니다.
이번 Windows Update 에서 WSL2 를 사용할 수 있게 된다는 것이었기 때문에, 「Ubuntu 20.04 LTS」를 WSL2 로 움직여, Docker 를 인스톨 해 동작 확인까지 실시하고 싶습니다 🙆♀️
Windows10 2004 May 2020 업데이트
좀 더 기다리면 Windows Update의 갱신 확인에도 나올 것이라고 생각합니다만, 이번은 Windows 10 다운로드 사이트에서 갱신하고 있습니다.
WSL2 설치
Windows PowerShell을 관리자 권한으로 실행합니다.
Linux용 Windows 서브시스템 및 가상 머신 플랫폼 사용
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
WSL 2 Linux 커널 업데이트
WSL 2 Linux 커널 업데이트
에서 최신 WSL2 Linux 커널 업데이트 패키지 다운로드 및 설치
WSL 기본값을 WSL2로 설정
wsl --set-default-version 2
Ubuntu 20.04 LTS 다운로드
Microsoft Store에서 linux를 검색하고 "Ubuntu 20.04 LTS"를 설치합니다.
버전 확인
wsl --list --verbose
버전이 2이면 OK
Ubuntu 20.04 LTS 시작
기동하면 이 화면이 나오므로 유저를 등록하면 완료입니다.
Docker 설치
우분투에 도커 설치
를 참고하면서 설치해 봅니다.
우선 최신으로
sudo apt update
sudo apt upgrade -y
전제 소프트웨어 설치
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
docker 공식 GPG 공개 키 설치
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
apt 리포지토리 설정
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
docker 및 docker-compose 설치
sudo apt install -y docker-ce docker-compose
그러면 GRUB install devices 확인 화면이 나왔습니다.
Vagrant 환경에서 Ubuntu를 업그레이드 할 때 발생하는 GRUB 문의
확인해 보았지만 문제가없는 것 같습니다.
예를 선택하여 설치가 완료되었습니다.
docker daemon 시작
sudo service docker start
docker 그룹에 추가
sudo usermod -aG docker $USER
그룹 반영을 위해 한 번 다시 시작합니다.
시작 확인
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
t
docker ps에서 위와 같이 오류가 없으면 설치가 완료됩니다.
동작 확인을 시도합니다.
여기는 실제로하지 않아도 괜찮습니다.
이전 Docker Desktop for Windows에서 Rocket.Chat을 움직이면 MongoDB가 움직이지 않아 오류가 있었으므로 Rocket.Chat에서 확인하고 싶습니다.
mkdir -p docker/rocketchat
cd docker/rocketchat/
curl -L https://raw.githubusercontent.com/RocketChat/Rocket.Chat/develop/docker-compose.yml -o docker-compose.yml
docker-compose.yml의 내용 확인
docker-compose.ymlversion: '2'
services:
rocketchat:
image: rocketchat/rocket.chat:latest
command: >
bash -c
"for i in `seq 1 30`; do
node main.js &&
s=$$? && break || s=$$?;
echo \"Tried $$i times. Waiting 5 secs...\";
sleep 5;
done; (exit $$s)"
restart: unless-stopped
volumes:
- ./uploads:/app/uploads
environment:
- PORT=3000
- ROOT_URL=http://localhost:3000
- MONGO_URL=mongodb://mongo:27017/rocketchat
- MONGO_OPLOG_URL=mongodb://mongo:27017/local
- MAIL_URL=smtp://smtp.email
# - HTTP_PROXY=http://proxy.domain.com
# - HTTPS_PROXY=http://proxy.domain.com
depends_on:
- mongo
ports:
- 3000:3000
labels:
- "traefik.backend=rocketchat"
- "traefik.frontend.rule=Host: your.domain.tld"
mongo:
image: mongo:4.0
restart: unless-stopped
volumes:
- ./data/db:/data/db
#- ./data/dump:/dump
command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1
labels:
- "traefik.enable=false"
# this container's job is just run the command to initialize the replica set.
# it will run the command and remove himself (it will not stay running)
mongo-init-replica:
image: mongo:4.0
command: >
bash -c
"for i in `seq 1 30`; do
mongo mongo/rocketchat --eval \"
rs.initiate({
_id: 'rs0',
members: [ { _id: 0, host: 'localhost:27017' } ]})\" &&
s=$$? && break || s=$$?;
echo \"Tried $$i times. Waiting 5 secs...\";
sleep 5;
done; (exit $$s)"
depends_on:
- mongo
# hubot, the popular chatbot (add the bot user first and change the password before starting this image)
hubot:
image: rocketchat/hubot-rocketchat:latest
restart: unless-stopped
environment:
- ROCKETCHAT_URL=rocketchat:3000
- ROCKETCHAT_ROOM=GENERAL
- ROCKETCHAT_USER=bot
- ROCKETCHAT_PASSWORD=botpassword
- BOT_NAME=bot
# you can add more scripts as you'd like here, they need to be installable by npm
- EXTERNAL_SCRIPTS=hubot-help,hubot-seen,hubot-links,hubot-diagnostics
depends_on:
- rocketchat
labels:
- "traefik.enable=false"
volumes:
- ./scripts:/home/hubot/scripts
# this is used to expose the hubot port for notifications on the host on port 3001, e.g. for hubot-jenkins-notifier
ports:
- 3001:8080
#traefik:
# image: traefik:latest
# restart: unless-stopped
# command: >
# traefik
# --docker
# --acme=true
# --acme.domains='your.domain.tld'
# --acme.email='[email protected]'
# --acme.entrypoint=https
# --acme.storagefile=acme.json
# --defaultentrypoints=http
# --defaultentrypoints=https
# --entryPoints='Name:http Address::80 Redirect.EntryPoint:https'
# --entryPoints='Name:https Address::443 TLS.Certificates:'
# ports:
# - 80:80
# - 443:443
# volumes:
# - /var/run/docker.sock:/var/run/docker.sock
그대로 실행해 보겠습니다.
docker-compose up -d
http://localhost:3000/
에서 확인
움직였습니다! !
요약
WSL2로 문제없이 Docker가 움직일 수 있을 것 같네요.
MongoDB가 언제부터 할 수 있게 되었는지는 잘 모르겠지만, 일단 움직여서 좋았습니다 😊
Docker Desktop for Windows 라고 docker-compose.yml 에 쓰는 패스를 c:\등과 Windows 형식의 절대 패스로 쓰지 않으면 안 되었습니다만, WSL2 상에서 움직이면 Linux 처럼 쓸 수 있어 상대 패스도 갈 수 있으므로 , 정의 파일을 나눌 필요가 없어졌군요.
"Windws 키"+ "."
로 이모티콘이 칠 수 있게 된 것도 조금 재미있네요 🤣🤣🤣
Reference
이 문제에 관하여(Windows10 Update가 왔으므로 WSL2에서 Ubuntu 20.04 LTS를 시작하고 Docker 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/toyotoyo_/items/895c07fb50708b013eba
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2
wsl --list --verbose
sudo apt update
sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
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 $(lsb_release -cs) stable"
sudo apt install -y docker-ce docker-compose
sudo service docker start
sudo usermod -aG docker $USER
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
t
여기는 실제로하지 않아도 괜찮습니다.
이전 Docker Desktop for Windows에서 Rocket.Chat을 움직이면 MongoDB가 움직이지 않아 오류가 있었으므로 Rocket.Chat에서 확인하고 싶습니다.
mkdir -p docker/rocketchat
cd docker/rocketchat/
curl -L https://raw.githubusercontent.com/RocketChat/Rocket.Chat/develop/docker-compose.yml -o docker-compose.yml
docker-compose.yml의 내용 확인
docker-compose.yml
version: '2'
services:
rocketchat:
image: rocketchat/rocket.chat:latest
command: >
bash -c
"for i in `seq 1 30`; do
node main.js &&
s=$$? && break || s=$$?;
echo \"Tried $$i times. Waiting 5 secs...\";
sleep 5;
done; (exit $$s)"
restart: unless-stopped
volumes:
- ./uploads:/app/uploads
environment:
- PORT=3000
- ROOT_URL=http://localhost:3000
- MONGO_URL=mongodb://mongo:27017/rocketchat
- MONGO_OPLOG_URL=mongodb://mongo:27017/local
- MAIL_URL=smtp://smtp.email
# - HTTP_PROXY=http://proxy.domain.com
# - HTTPS_PROXY=http://proxy.domain.com
depends_on:
- mongo
ports:
- 3000:3000
labels:
- "traefik.backend=rocketchat"
- "traefik.frontend.rule=Host: your.domain.tld"
mongo:
image: mongo:4.0
restart: unless-stopped
volumes:
- ./data/db:/data/db
#- ./data/dump:/dump
command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1
labels:
- "traefik.enable=false"
# this container's job is just run the command to initialize the replica set.
# it will run the command and remove himself (it will not stay running)
mongo-init-replica:
image: mongo:4.0
command: >
bash -c
"for i in `seq 1 30`; do
mongo mongo/rocketchat --eval \"
rs.initiate({
_id: 'rs0',
members: [ { _id: 0, host: 'localhost:27017' } ]})\" &&
s=$$? && break || s=$$?;
echo \"Tried $$i times. Waiting 5 secs...\";
sleep 5;
done; (exit $$s)"
depends_on:
- mongo
# hubot, the popular chatbot (add the bot user first and change the password before starting this image)
hubot:
image: rocketchat/hubot-rocketchat:latest
restart: unless-stopped
environment:
- ROCKETCHAT_URL=rocketchat:3000
- ROCKETCHAT_ROOM=GENERAL
- ROCKETCHAT_USER=bot
- ROCKETCHAT_PASSWORD=botpassword
- BOT_NAME=bot
# you can add more scripts as you'd like here, they need to be installable by npm
- EXTERNAL_SCRIPTS=hubot-help,hubot-seen,hubot-links,hubot-diagnostics
depends_on:
- rocketchat
labels:
- "traefik.enable=false"
volumes:
- ./scripts:/home/hubot/scripts
# this is used to expose the hubot port for notifications on the host on port 3001, e.g. for hubot-jenkins-notifier
ports:
- 3001:8080
#traefik:
# image: traefik:latest
# restart: unless-stopped
# command: >
# traefik
# --docker
# --acme=true
# --acme.domains='your.domain.tld'
# --acme.email='[email protected]'
# --acme.entrypoint=https
# --acme.storagefile=acme.json
# --defaultentrypoints=http
# --defaultentrypoints=https
# --entryPoints='Name:http Address::80 Redirect.EntryPoint:https'
# --entryPoints='Name:https Address::443 TLS.Certificates:'
# ports:
# - 80:80
# - 443:443
# volumes:
# - /var/run/docker.sock:/var/run/docker.sock
그대로 실행해 보겠습니다.
docker-compose up -d
http://localhost:3000/
에서 확인
움직였습니다! !
요약
WSL2로 문제없이 Docker가 움직일 수 있을 것 같네요.
MongoDB가 언제부터 할 수 있게 되었는지는 잘 모르겠지만, 일단 움직여서 좋았습니다 😊
Docker Desktop for Windows 라고 docker-compose.yml 에 쓰는 패스를 c:\등과 Windows 형식의 절대 패스로 쓰지 않으면 안 되었습니다만, WSL2 상에서 움직이면 Linux 처럼 쓸 수 있어 상대 패스도 갈 수 있으므로 , 정의 파일을 나눌 필요가 없어졌군요.
"Windws 키"+ "."
로 이모티콘이 칠 수 있게 된 것도 조금 재미있네요 🤣🤣🤣
Reference
이 문제에 관하여(Windows10 Update가 왔으므로 WSL2에서 Ubuntu 20.04 LTS를 시작하고 Docker 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/toyotoyo_/items/895c07fb50708b013eba
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Windows10 Update가 왔으므로 WSL2에서 Ubuntu 20.04 LTS를 시작하고 Docker 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/toyotoyo_/items/895c07fb50708b013eba텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)