용어 설명
- wsl
- WSL(Windows Subsystem for Linux)은 Windows 10 및 Windows 11에서 리눅스 배포판을 실행할 수 있는 환경을 제공하는 툴. WSL을 통해 사용자는 Windows에서 리눅스 커맨드라인 도구와 애플리케이션을 직접 실행할 수 있으며, 별도의 가상 머신(VM)이나 듀얼 부팅 설정 없이도 리눅스 사용가능
- Docker
- 애플리케이션을 컨테이너라는 가상화된 환경에서 실행할 수 있게 해주는 플랫폼. 컨테이너는 애플리케이션과 그에 필요한 모든 종속성을 패키지화해, 어디서나 일관된 환경에서 실행 가능. 가상 머신보다 가볍고, 빠른 배포 및 확장에 유리.
- Docker-compose
- 여러 컨테이너를 정의하고 함께 실행할 수 있게 도와주는 도구. docker-compose.yml 파일에 각 서비스의 설정을 작성해, 한 번의 명령으로 여러 컨테이너를 동시에 시작하거나 종료 가능. 복잡한 멀티 컨테이너 애플리케이션을 쉽게 관리할 수 있음. Docker에 기반하여 동작함.
- gitlab
- Git 리포지토리를 관리하고 CI/CD 파이프라인을 제공하는 DevOps 플랫폼. 소스 코드 버전 관리, 이슈 트래킹, 코드 리뷰 등을 통합해 프로젝트를 효율적으로 관리 가능. 자체 호스팅 또는 클라우드에서 사용 가능하며, 개발부터 배포까지의 과정을 자동화할 수 있음.
- SonarQube
- 코드 품질과 보안을 분석하는 도구. 코드의 버그, 취약점, 중복 등을 자동으로 검사해 개발자가 더 나은 품질의 코드를 작성하도록 도와줌. 다양한 프로그래밍 언어를 지원하며, CI/CD 파이프라인과 통합해 코드 품질을 지속적으로 관리 가능.
Windows내 wsl2 설치
- 파워쉘 관리자 권한으로 실행
wsl --install - 설치 후 재부팅하라하면 재부팅 실행.
- 재부팅 후 콘솔에서 리눅스 계정 생성하는 과정이 진행되어야 하며 자동으로 시작되지 않으면 다시 관리자 권한으로 파워쉘 열고 위 인스톨 명령 재실행
- 리눅스 사용 계정 등록
- 설치된 리눅스 목록 조회
- 설치하고 나면 ubuntu 바로 갈 수 있는 바로가기 생성 되고 파워쉘에서 wsl2로 실행해도 됨.
docker 설치
윈도우에서 docker 실행은 wsl에 설치된 linux에서 직접 설치도 가능하고 docker-desktop을 설치해서도 가능함. docker-desktop도 wsl을 base로 실행되고 UI가 포함된 각종 지원툴들도 함께 설치됨, 리눅스에서 사용하듯이 사용해보고 싶어서 여기서는 wsl에 설치된 ubuntu에서 직접 설치로 진행.
- 파워쉘 실행 후 wsl로 리눅스 실행
- 패키 업뎃
sudo apt-get update - 필요 패키지 설치
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common - Docker 공식 GPG키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg - Docker APT 저장소 추가
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - 위에서 추가한 Docker 저장소 사용을 위해 패키지 업뎃
sudo apt-get update - Docker 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io - 설치확인
sudo docker --version
- 설치확인2 - hello-world 컨테이너 실행
sudo docker run hello-world
- sudo 없이 docker 사용
sudo usermod -aG docker $USER- 로그아웃 후 재로그인 후 다음 명령 실행
newgrp docker
- 로그아웃 후 재로그인 후 다음 명령 실행
docker-compose 설치
- 최신버전 확인 : https://github.com/docker/compose/releases
- 확인해서 아래 명령에서 버전 부분만 변경해서 실행
sudo curl -L "https://github.com/docker/compose/releases/download/v2.30.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 확인해서 아래 명령에서 버전 부분만 변경해서 실행
- 권한부여
sudo chmod +x /usr/local/bin/docker-compose - 확인
docker-compose --version
Gitlab 설치
- data 경로 생성
sudo mkdir /srv
sudo mkdir/srv/gitlab - .bashrc 파일 최하단에 GITLAB_HOME 설정
export GITLAB_HOME=/srv/gitlab - 적용
source ~/.bashrc - docker-compose.yml 파일생성 (여기서는 ~/gitlab에 생성)
- 80포트말고 다른 것(ex 8888) 쓰려면 80:80 => 8888:80 형태로 변경하면 됨
- yml 첫줄에 있던 version 정보는 이제 불필요하다고 함.
- external_url 값이 나중에 gitlab 웹에서 접속해서 clone URL 보여줄 때 사용됨
services:
web:
image: 'gitlab/gitlab-ee:latest'
container_name: gitlab
restart: always
hostname: '192.168.0.11'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.0.11'
# Add any other gitlab.rb configuration here, each on its own line
gitlab_rails['gitlab_shell_ssh_port'] = 2224
ports:
- '80:80'
- '443:443'
- '2224:22' #22번은 ssh로 사용하고 있기에 다른포트로 변경해 줍니다.
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
shm_size: '256m'
- docker-compose 실행
- docker-compose.yml 파일 생성된 위치에서 docker-compose 실행 (docker 이미지 자동으로 최신이미지 다운됨)
docker-compose up -d - 실행 후 log 확인
docker-compose logs -f - 아래와 같은 로그가 반복 출력되면 기동 완료 (초기 5분 내외 소요)
- 이후 http://localhost 로 접속해서 화면 뜨면 성공.
- docker-compose.yml 파일 생성된 위치에서 docker-compose 실행 (docker 이미지 자동으로 최신이미지 다운됨)
- 포트 포워드 설정
- WSL에서 실행되는 linux는 가상 네트워크 인터페이스로 private IP 할당되어 외부에서 접속이 불가함.
- 외부 접속을 위해서는 host(WINDOWS)로 들어오는 요청을 포트포워드 해야함.
- 본인PC에서만 사용한다면 localhost로 붙으면 됨.
- 아래 IP 기준으로 설명함
- Windows IP : 192.168.0.11
- Linux IP : 172.30.40.227
- 관리자 권한으로 파워쉘 실행
잘 되다 한번씩 접속안되면 리셋하고 다시하면 됐었음
#현재 포트포워드 목록
netsh interface portproxy show all
#80으로 들어오는 요청을 80으로 보내는 설정
netsh interface portproxy add v4tov4 listenport=80 listenaddress=192.168.0.11 connectport=80 connectaddress=172.30.40.227
#포트포워드 전체삭제
netsh interface portproxy reset
출처
https://kr-goos.github.io/posts/docker-install-ubuntu/#google_vignette
반응형
'개발' 카테고리의 다른 글
소프트웨어 개발 보안 가이드 요약 (0) | 2024.12.27 |
---|---|
mac osx 에서 ssh ppk 파일 사용하기와 ssh를 통한 터널링 (0) | 2014.04.27 |
윈도우7 인터넷 안될때 해결 방법 : "종속된 서비스나 그룹이 시작될 수 없습니다." (29) | 2013.03.01 |
파이어폭스 프린트시 오류 (한글 자간 문제) (0) | 2012.03.22 |
DOM 스크립트 - 스크립트 문법 (0) | 2008.03.14 |