IT/기타

[Docker] 도커 이미지(Image) 다운로드 및 컨테이너(Container) 생성/실행/삭제하기(feat. SonarQube)

땅일단 2023. 8. 13. 15:55
 

[Docker] 도커의 개념, linux에서 도커 설치

1. 도커(Docker)란? 컨테이너 기반의 가상화(하나의 하드웨어를 여러 개의 가상 머신으로 분할하는 것) 플랫폼. 프로그램 실행에 필요한 모든 프로그램 파일과 환경들을 갖춘 이미지(Image), 그리고

doringri.tistory.com

저번 게시물에서 도커가 뭔지, 그리고 리눅스에 도커를 설치하는 방법까지 포스팅했습니다.

이번에는 도커허브에서 도커 이미지를 다운받고, 그 이미지를 통해 로컬에 컨테이너를 만든 다음 실행해보겠습니다.

 

 

1. 도커 이미지 다운받기

회사에서 현재 사용 중인 정적 코드 분석 툴인 SonarQube의 이미지를 받아오도록 하겠습니다.

 

 

Docker Hub Container Image Library | App Containerization

Deliver your business through Docker Hub Package and publish apps and plugins as containers in Docker Hub for easy download and deployment by millions of Docker users worldwide.

hub.docker.com

먼저 도커허브로 들어가서 계정을 만들어줍니다.

 

검색창에다가 검색어를 입력합니다.

 

도커 공식 이미지인 소나큐브의 이미지가 맨 위에 뜹니다. 공식 이미지인만큼 신뢰성 있고 사람들이 많이 사용하는 이미지입니다.

 

들어가면 오른쪽에 친절하게 무슨 명령어로 이미지를 다운받아야 하는지 주어집니다.

저 명령어를 통해 이미지를 가져오면, 가장 최신 버전(latest)의 소나큐브 이미지를 다운받을 수 있습니다.

 

현재 소나큐브의 최신 버전은 10.1 입니다. 최신 버전의 소나큐브를 다운받아 보겠습니다.

참고로 Java 8 버전을 정적 분석하셔야 한다면, 7.8버전 이하의 소나큐브를 다운받아야 하고 그 이상의 Java 버전을 사용하신다면 7.9버전 이상의 소나큐브를 다운받으셔야 합니다.

Java 8을 사용하신다면

docker pull sonarqube:7.8-community

이렇게 이미지를 다운받아주시면 되겠습니다.

다운받은 뒤에는

 

docker images

를 통해 이미지 목록을 확인합니다.

 

 

2. 컨테이너 생성 및 실행

컨테이너를 생성과 동시에 실행하는 명령어는 docker run입니다.

 

docker run -d --name sonarqube -p 84:9000 sonarqube

 

이 명령어를 통해 소나큐브 컨테이너를 돌려보겠습니다.

명령어의 의미는 다음과 같습니다.

 

-d : 컨테이너를 백그라운드 환경에서 실행하는 옵션입니다. -d 대신 -it를 사용한다면 쉘 환경에 바로 진입합니다. 우분투나 centos 같은 컨테이너를 돌릴 경우엔 -it 옵션을 써야겠죠.

백그라운드에서 돌아가는 컨테이너의 쉘 환경에 진입하려면, docker exec [컨테이너명 또는 컨테이너 ID] 명령어를 통해 진입해야 합니다.

(config 변경처럼 컨테이너의 환경을 변경하고자 할때 백그라운드 컨테이너의 쉘 환경에 진입해아 하는 일이 있을 수가 있습니다.)

 

--name sonarqube : 컨테이너의 이름을 설정합니다. 현재 sonarqube라고 이름을 지은 상황입니다.

 

-p 84:9000 : 포트 설정 부분입니다. 여기서 84는 호스트 IP, 9000은 컨테이너 내부 IP를 뜻합니다.

84번 포트로 접속하면 이 컨테이너가 배포하는 소나큐브 환경에 접속할 수 있다는 것입니다.

9000은 이 컨테이너 안에서만 사용되는 내부 IP입니다. 톰캣의 8080처럼 보통 툴마다 기본 IP가 있는데 소나큐브는 9000번입니다. 이건 웬만하면 안 바꾸시는 게 좋습니다. 바꾸려면 exec으로 들어가서 config를 변경해야 되는데... 상당히 귀찮고 그래야 될 이유도 딱히...

 

맨 끝에 있는 sonarqube : 이미지의 이름입니다. 다른 버전의 이미지가 여러개 있다면 버전명까지 적어주셔야 됩니다.

 

컨테이너 내부 IP가 다른 컨테이너 포트의 내부 IP랑 겹치는데요?

라고 해도 전혀 상관 없습니다. 컨테이너 내부 IP는 정말로 그 컨테이너 내부에서만 쓰이는 IP입니다. 즉 다른 컨테이너와는 격리되어 있고, 충돌이 일어나지 않습니다.

 

 

밑에 알수없는 영어와 숫자가 나열되면 컨테이너 생성이 완료된 것입니다.

나열된 문자는 CID, 즉 컨테이너의 ID입니다.

docker ps

그런 다음엔 위의 명령어를 입력합니다. 현재 돌아가고 있는 컨테이너의 목록을 표시하는 명령어입니다.

컨테이너가 잘 돌아가고 있는지 확인해봅시다.

 

 

3. 방화벽 설정 및 접속

84번 포트로 접속해야 하니 84번 포트를 열어줍시다.

firewall-cmd --permanent --zone-public --add-port=84/tcp
firewall-cmd --reload

그렇게 해서 84번 포트로 접속해 보면...

 

소나큐브의 로그인 창이 뜹니다. 초기 아이디와 비밀번호는 모두 admin입니다.

로그인 후 비밀번호를 변경하시면 됩니다.

 

4. 컨테이너 삭제

컨테이너를 삭제하는 명령어는 docker rm [CID] 입니다.

현재 실행중인 컨테이너를 강제로 삭제하기 위해서는 -f 옵션을 붙여줘야 합니다.

CID는 일부분만 입력해도 됩니다.

 

 


오늘은 도커로 이미지를 다운받고 컨테이너를 돌린 후 삭제하는 것까지 해봤습니다.

도커는 무료에다가 유용한 툴이니까 잘만 이용하면 매우 효율적인 업무가 가능합니다.

나중엔 쿠버네티스도 한번 경험해보고 싶네요.