개발일반/도대체

도대체 Docker는 뭘까요?

문괜 2023. 12. 18. 10:00
반응형

Docker는 귀여운 고래 로고가 있는 platform이다. 이 플랫폼에서는 우리가 만든 Application을 실행할 수 있는데 이 부분이 크게 와닿지 않을 수 있다. 하지만 이렇게 생각해 보면 된다. 우리가 개발한 프로젝트의 개발 환경은 배포될 환경과 차이가 있을 수밖에 없다.

 

예를 들어 지금 내가 사용하고 있는 개발환경은 MacOS이지만 배포된 환경은 Linux Ubuntu이다. 물론 Ubuntu환경에 자신이 만든 프로젝트가 실행될 수 있게 환경을 일치시킬 수 있다. 하지만 환경을 구성하는 요소가 하나라도 바뀌거나 배포 환경의 변화가 있을 시 우리는 다시 환경설정을 해줘야 하는 불편함이 있고 이는 안정적인 서버운영을 저해하는 요소이기도 하다. 

 

물론 이와 관련해서 VM이라는 좋은 방법이 있지만 VM과 Docker의 Container는 확연이 다른 차이가 있다.

VM과 Docker의 차이에 대해서는 추후에 따로 정리할 예정이다.

 

그래서 Docker는 배포환경에서의 application실행에 있어 안정적인 운영이 가능하도록 돕는 플랫폼이다. 그리고 그러한 목적을 달성하기 위해서 Docker는 Container를 사용한다.

 

그럼 Container가 뭐고 어떻게 만들어지고 작동하는 것일까?

먼저 Container를 만들기 위해서는 Image를 만들어야 하고 Image는 아래와 같은 순서로 만들어진다.

 

 먼저 Docker를 설치해야 하는데 할 수 있으리라 믿는다.

 

그럼 아래와 같이 Docker를 이용해 먼저 본인의 Docker hub계정으로 로그인하여야 한다.

 

docker login -u [username]

 

 

그럼 바로 Password입력하라고 하는데 거기서 입력만 해주면 된다.

 

그리고 자신의 프로젝트 디렉토리에 Dockerfile이라는 파일을 만들고 아래와 같은 내용을 입력해 준다.

 

FROM openjdk:17-jdk-slim
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

 

이 명령어들이 프로젝트를 Image로 만들어주는 명령어들이다. 

 

그다음 이 Dockerfile이 있는 위치에서

 

# username -> docker hub 계정
# image name -> 임의로 적어도 된다
# . -> Dockerfile이 같은 위치에 있으니 .
docker build -t [username]/[image name] .

 

이렇게 되면 Image가 만들어지고 이제 Docker hub으로 push를 해주면 된다.

 

# 위에 적었던 username image name 그대로 사용하면 된다.
docker push [username]/[image name]

 

그럼 위에서 만든 Image가 docker hub에 push가 되고 여기서 push 된 이미지는  환경에 상관없이'언제, 어디서든' 사용될 수 있다!

그리고 이게 Docker의 가장 큰 장점이다. 

 

그럼 이렇게 이미지로 푸시된 우리의 프로젝트는 어떻게 가지고 올면 될까?

 

docker pull [username]/[image]

 

이렇게 하면 우리가 push 한 Image가 현재 내가 입력한 위치에 그대고 pull 받아와 진다.(git pull이랑 유사하다고 생각하자)

그다음으로 중요한 것은 이렇게 pull 받아온 image를 실행을 해줘야 한다. 

 

그리고 여기서 중요한 게 받아온 image를 실행하면 그게 Container가 되는 것이다. (참고로 Docker는 최소한 깔려 있어야 한다. Pull 받아오려면은)

 

그럼 run은 어떻게 하냐? 아래와 같이한다.

 

# 만약 이미지 이름이 기억이 안나면 docker images를 쳐보자
# 참고로 아래와 같이 입력하면 Conatiner이름은 docker에서 임의로 만드니 주의하자
docker run -d -p 8080:80 [image name]

 

 

그럼 이제 pull 받아온 Image가 Container안에서 실행되고 있다.

그리고 이렇게 작동하는 Container를 보고 싶으면 

 

docker ps -a

 

 

그래서 위의 내용을 정리하면 아래와 같다.

Docker 이용해서 프로젝트를 실행시키려면

  1. Dockerfile을 로컬에서 생성하고 그 파일을 이용해 Image를 Build 한다.
  2. Build 한 이미지를 자신의 Docker hub에 push 한다.
  3. 자신이 원하는 장소에 간 다음 Push 한 Image를 Pull 받아온다.
  4. Pull 받아온 Image를 Run 하여 Container로 만든다.

이렇게 하면 어디서든지 프로젝트를 Push 하고 Pull 받아와 실행할 수 있다. 어떤 환경에서든 말이다.

단, 그래도 최소한 Docker는 설치 돼있어야 한다.

 

그리고 이와 같은 모습을 보면 잘만하면 CI/CD 이를 이용해서 할 수 있을 거 같다.

 

그런데 도대체 CI/CD는 뭘까?

 

글이 두서없이 진행됐으나 자세히 보면 또 심플하니 좋다 그렇니 이 글뿐만 아니라 다른 글들도 보면서 진행해야 한다.

 

* 항상 정확한 정보를 드리고 싶지만 실수가 있을 수도 있습니다! 

* 실수를 찾게 되거나 질문이 있으시면 댓글 달아주세요!!

반응형