2022 Masters Course/CS 10 Course

2022 마스터즈 코스(백엔드) 21일차 회고(2022. 2. 7.) - "마침내 접하게 된 Docker"

ikjo 2022. 2. 7. 21:54

해당 글은 코드스쿼드 2022 마스터즈 코스 "Java 웹 백엔드" 과정을 수강하면서 학습한 내용 등에 대한 회고 글입니다. :)

 

수강 회고

오늘로 CS10 과정의 마지막 주차가 시작되었다. 오늘 오전 스크럼을 통해 이번 주의 소그룹원들과 인사를 나누었는데 반가운 얼굴들이 많이 보였다. 모두 지난 1~4주차간 뵈었던 팀원들이었고 면접 때 같은 조로 뵈었던 분들도 있어 특히나 반가웠었다. 운이 좋게 훌륭한 팀원들을 만난 만큼 또한 CS10 과정의 마지막 주차인만큼 최선을 다해 한 주를 보내야 겠다는 생각이 들었다.

 

오늘은 9번째 CS 미션으로 도커(Docker)와 데이터베이스 관련한 미션이 공개되었다. 데이터베이스는 이전 부스트코스 "웹 프로그래밍(풀스택)" 과정을 통해 다루어본 적이 있어 익숙했지만 도커는 매번 해야지 해야지 해놓고 항상 뒷전으로 있었던 영역이었다. 지난 리눅스 때도 그렇고 코드스쿼드를 통해 매번 뒷전으로 미루었던 학습 내용들을 접할 수 있어  도움이 많이 되고 있다.  항상 해야지 해야지 미루어 두고 뭔가 새로운 영역에 대한 막연한 두려움이 있었지만 리눅스나 도커나 막상 접해보니 두려움만큼 난해하진 않았다. 물론 이번 CS10 과정을 통해 해당 내용들을 깊게 학습한 것은 아니지만 어느 정도의 개념과 흐름을 파악할 수 있었기에 나중에 프로젝트 등에 필요할 때 적극 활용해볼 수 있으리라 기대된다.

 

 

학습 회고

  • 도커 및 데이터베이스 관련 학습
    • Java 웹 백엔드 클래스 내 소모임원들과 zoom 회의실에서 학습

 

오늘은 도커와 데이터베이스 관련해서 학습을 했다. 도커의 경우 오늘 처음 접한 것이기 때문에 미션 과제를 해결하기 보다는 도커의 기초 개념과 동작 흐름에 대해 이해하기 위해 노력했다. 아울러 데이터베이스 역시 이전에 접했었던 내용이지만 복습 차원에서 기초 개념부터 차근차근 학습했다. 다음은 오늘 학습했었던 주요 내용들이다.

 

도커(Docker)란?

윈도우 환경에서 개발한 소스 코드를 리눅스 환경의 서버에 올리는(Deploy) 경우 제대로 동작하지 않는 경우가 많다. 이 문제의 원인으로는 주로 환경 차이(Environment Disparity)로 인한 경우가 많은데 도커는 이러한 문제를 해결하기 위해 사용된다. 도커는 사용자 명령에 따라 docker hub라는 레지스트리에서 필요한 소프트웨어를 찾는데 이 소프트웨어를 '이미지'라고 하며, 실행 중인 이미지를 '컨테이너'라고 한다.

 

도커에 존재하는 컨테이너들은 모두 제각기 분리되어 있기 때문에, 도커라는 환경에서 각기 다른 많은 수의 컨테이너(파이썬, 자바 등)들을 갖을 수 있다. 이러한 특성으로 만일 어떤 프로그램의 트래픽의 증감 여부에 따라 탄력적으로 컨테이너 수를 조절할 수 있게 되고 사용자가 원할때마다 도커를 통해 새로운 환경을 생성할 수 있게 된다.

 

도커(Docker) 주요 명령어

도커는 GUI(그래픽 유저 인터페이스) 환경에서도 조작이 가능하지만 도커는 무엇보다 CLI(명령어 인터페이스) 환경에서 보다 유용하다. 다음은 도커에서 이미지 및 컨테이너를 생성하기 위해 주로 사용되는 명령어이다.

 

docker pull [OPTIONS] NAME[:TAG|@DIGEST] → Pull an image or a repository from a registry

👉 docker pull mysql:5.7

👉 5.7 버전의 MySQL 애플리케이션 이미지를 가져온다.(pull)

 

docker images [OPTIONS] [REPOSITORY[:TAG]] → List images

👉 docker images

👉 가져온 이미지들의 목록을 조회한다.

 

docker run [OPTIONS] IMAGE [COMMAND] [ARG...] → Run a command in a new container

👉 docker run --name mycontainer mysql:5.7

👉 5.7 버전의 MySQL 이미지를 통해 mycontainer라는 이름의 컨테이너를 생성하고 실행시킨다. 이때 해당하는 이미지가 없는 경우 이를 다운로드(pull)하는 작업까지 포함하며 하나의 이미지로 여러개의 컨테이너를 생성할 수도 있다.

 

docker ps [OPTIONS] → List containers

👉 docker ps

👉 현재 실행 중인 컨테이너 내역들을 조회한다. 모든 컨테이너 내역을 조회하기 위해서는 -a를 추가로 입력한다.

 

그 외 수많은 도커 명령어들은 다음 공식 문서 사이트를 통해 확인해 볼 수 있다.

 

 

Reference documentation

 

docs.docker.com

 

 

좋았던 점

  • 매번 미루어 두었던 도커를 오늘 접할 수 있었고 어느 정도의 개념과 동작 흐름 등을 파악할 수 있어 유익했다.

 

 

아쉬웠던 점

  • 설연휴간 잘 쉬었지만 다시 밤과 낮이 뒤바뀌어 🦉 오늘 하루 시차적응(?)을 하는 중이기에 학습에 집중하기 다소 어려웠다...💦

 

 

참고자료

  • https://www.youtube.com/watch?v=Ps8HDIAyPD0
  • https://www.youtube.com/watch?v=chnCcGCTyBg