먼저 도커 사용을 하기 전 Ubuntu 및 wsl2 설치
- Ubuntu: Docker를 네이티브로 지원하며, Linux 서버나 개발 환경에서 Docker를 직접 사용하기 위한 최적의 선택입니다.
- WSL 2: Windows에서 Linux 환경을 제공하여, Docker를 Windows에서 실행할 수 있게 해주며, Windows와 Linux 간의 통합된 개발 환경을 지원합니다.
WSL 2를 이용하여 리눅스 컨테이너를 사용할 수 있게함.(환경 제공)
우분투는 Linux배포판을 이용하여 Docker를 직접 설치 가능.(Docker 설치)
WSL2 -> 우분투
WSL2 수동 업데이트
wsl --update
안될경우 wsl 및 관련 기능 재설치해야함
dism.exe /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux
dism.exe /online /disable-feature /featurename:VirtualMachinePlatform
VirtualMachinePaltform은 설치되어 있어서 wsl 만 설치했음
wsl2 커널 업데이트 패키지 없는 경우 오류 날 수 있음
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x800701bc
Error: 0x800701bc WSL 2? ?? ?? ?? ????? ?????. ??? ??? https://aka.ms/wsl2kernel? ??????.
Press any key to continue...
wsl2 커널 업데이트 패키지 다운로드를 해야함
이전 버전 WSL의 수동 설치 단계
wsl install 명령을 사용하지 않고 이전 버전의 Windows에 WSL을 수동으로 설치하는 방법에 대한 단계별 지침입니다.
learn.microsoft.com
이쪽에서 다운로드 가능
해당 파일은 wsl2의 최신 커널 버전을 설치하기 위한 파일
Ubuntu 설치 후 초기 설정 과정에서 UNIX 사용자 계정을 사용하라는 요청이 있음
Enter new UNIX username: myusername
New password:
Retype new password:
WSL2(Windows Subsystem for Linux 2)에 대한 설명
WSL2(Windows Subsystem for Linux 2)란?
WSL2는 윈도우에서 리눅스를 사용할 수 있게 해주는 기능이에요.
- 리눅스는 윈도우와는 다른 운영 체제인데, 도커는 리눅스에서 주로 작동해요.
- WSL2를 사용하면, 윈도우에서 리눅스를 마치 다른 프로그램처럼 실행할 수 있어요.
왜 WSL2를 켜야 하는가?
도커는 주로 리눅스에서 잘 작동해요. 윈도우에서도 도커를 사용하려면 WSL2를 통해 리눅스 환경을 제공해줘야 해요.
간단히 말해서:
- 리눅스 컨테이너 실행: 도커는 리눅스 컨테이너를 사용해 애플리케이션을 실행해요. WSL2는 윈도우에서 이 리눅스 컨테이너를 실행할 수 있게 도와줘요.
- 성능 향상: WSL2는 도커가 더 빠르고 효율적으로 작동하도록 도와줘요. 즉, 도커가 더 빨리 작동하게 해줘요.
WSL2 설정 방법
- WSL2 활성화:
- 윈도우에서 WSL2를 사용하려면, 먼저 윈도우 기능을 활성화해야 해요. 'Windows 기능 켜기 또는 끄기'에서 'Windows Subsystem for Linux'와 'Virtual Machine Platform'을 체크해요.
- WSL2 설치:
- WSL2 커널 업데이트 파일을 다운로드하여 설치하고, 기본 버전을 WSL2로 설정해요.
- 리눅스 배포판 설치:
- Microsoft Store에서 리눅스 배포판(예: Ubuntu)을 다운로드하고 설치해요.
- 도커 Desktop 설정:
- 도커 Desktop을 설치한 후, 설정에서 WSL2 기반 엔진을 사용하도록 체크해요.
요약
- WSL2는 윈도우에서 리눅스를 실행할 수 있게 해주는 도구입니다.
- 도커는 리눅스 컨테이너를 사용하기 때문에, WSL2가 필요해요.
- WSL2를 통해 도커가 윈도우에서도 원활하게 작동하도록 도와줍니다.
우분투 및 WSL2 업데이트 완료 되었으면 Docker를 사용하여 기본적인 개발 환경 설정 가능
도커 무료버전
(직원 수 250명 이상 또는 연매출 1000만 달러(네이버 2024-07-23 환율 기준 약 1300억) 이상의 기업)
- 유료 버전 필요
도커 설치 시 나왔던 오류
1.Group membership check Your user is a member of the 'docker-users' group, but the changes will only take effect after you log out and back in. To continue, select Quit and log out and back in. required compatibility check: Group membership check
- 시스템 재부팅 후 해결 완료
WSL 설치 안되어 있었을 경우 , Windows 기능 켜기/끄기에도 보이지 않음
그럼이제 WSL2에서 Ubuntu설치되어 있어서 사용 준비 완료
Docker 설치
패키지 목록 업데이트
sudo apt update
sudo : superuser do 의 약자 , 관리자 권한 사용하여 명령어 실행
apt : Advanced Pacakge Tool의 약자 , Debian 기반 시스템에서 소프트웨어를 설치 , 업데이트 , 삭제하는 패키지
도커 설치
sudo apt install -y docker.io
install : 설치
-y : 설치 과정 중 사용자에게 확인 요구하지 않고 계속 "yes" 한다는 것
docker.io : Docker의 오픈 소스 엔진 패키지 이름
도커 서비스 시작 및 자동 시작 설정
sudo systemctl start docker
sudo systemctl enable docker
systemctl : 시스템 및 서비스 관리 도구
start docker : 도커 시작 명령어
enable docker : 부팅 시 자동으로 시작되게 하는 명령어
현재 사용자 Docker 그룹에 추가
sudo usermod -aG docker $USER
usermod : 사용자 계정 수정 명령어
-aG docker : 사용자를 docker 그룹에 추가
$USER : 현재 사용자
docker search unbuntu
search : 도커 허브에서 이미지 검색 명령어
ubuntu : 검색할 이미지 이름
docker pull ubuntu
pull : Docker Hub에서 이미지 다운로드 하는 명령어
ubuntu : 다운로드할 이미지
docker run -it ubuntu /bin/bash
Docker 컨테이너 실행
-it : 인터랙티브 터미널 사용하여 컨테이너 실행
/bin/ash : bash셀을 실행
도커에서는 이미지라는 표현을 많이 사용한다.
도커에서 이미지란?
"이미지"는 Docker에서 사용되는 특정 용어로, 실제 이미지 파일(png, jpg 등)을 의미하는 것이 아님
Docker 이미지란 응용 프로그램과 해당 응용 프로그램이 실행되는 데 필요한 모든 파일, 라이브러리, 설정 등을 포함하는 패키지입니다.
docker run -it ubuntu /bin/bash
이제 컨테이너의 셸에 들어온거임 ( 운영체제 환경에 들어와서 명령어를 입력하고 실행가능한 상태로 들어왔다는 것)
정리 요약 및 실습
Q. Docker를 왜 사용했는지
A. 소프트웨어를 컨테이너라는 격리된 환경에서 실행할 수 있는 도구 , 어떤 환경에서도 동일하게 실행되는 애플리케이션 만들기 위함
간단한 스프링부트 애플리케이션 Docker로 컨테이너화
1. 프로젝트 디렉토리로 이동
2. 애플리케이션을 빌드함 (.jar 파일 또는 .war)
3. Dockerfile 작성
# Use an official OpenJDK runtime as a parent image
FROM openjdk:11-jre-slim
# Set the working directory in the container
WORKDIR /app
# Copy the JAR file into the container
COPY target/your-application.jar app.jar
# Expose the port that the application will run on
EXPOSE 8080
# Run the JAR file
ENTRYPOINT ["java", "-jar", "app.jar"]
docker에서 읽을 수 있게 docker파일로 만들어줘야함
docker.txt 이런식으로 말고 notepadd++ 나 메모장으로 작성 후 dockerfile로 이름 변경
4. 이미지 빌드
docker build -t your-dockerhub-username/your-application .
5. 이미지 실행
docker run -p 8080:8080 your-dockerhub-username/your-application
8080:8080은 호스트의 포트 8080에 컨테이너의 포트 8080으로 매핑하는 것.
호스트의 포트 8080으로 들어오는 것 컨테이너 포트로 이동
'PlayGround' 카테고리의 다른 글
[ Java , Js , xml ] 웹 서비스 보안 취약점 예제 (+고치기) (0) | 2024.10.15 |
---|---|
[캐시 메모리] 캐시 메모리 ? 파워 장치와 관련 역할 (2) | 2024.09.15 |
jdbc.resultsettable 의 설정에 대하여 (0) | 2024.09.02 |
[Python] 파이썬으로 간단 exe실행파일 만들기 (0) | 2024.08.12 |
[Redis] 성능 최적화 캐싱 방법 (0) | 2024.08.08 |