
4/14(월) - 수업 : 빅데이터 및 클라우드 기초(Docker Container, SSH 접속)
4/15(화) - 수업 : 빅데이터 및 클라우드 기초(Docker Container 실습)
4/16(수) - 수업 : 빅데이터 및 클라우드 기초(Docker Image)
4/17(목) - 수업 : 빅데이터 및 클라우드 기초(Docker File)
4/18(금) - 수업 : 빅데이터 및 클라우드 기초(Docker Volume)
이번 주는 Docker에 대한 개념부터 실습까지 한 주 내내 다루었다.
이전에는 VirtualBox를 활용한 전체 운영체제 수준의 가상환경만 접해봤기 때문에, 호스트 OS 커널을 공유하는 경량 컨테이너 구조의 Docker가 매우 신기했다.
Docker의 컨테이너(Container), 이미지(Image), 도커파일(Dockerfile), 볼륨(Volume), 마운트(mount), 포트 연결(Network) 등을 배우고 실습하면서, 실제로 실행되고 구성되는 과정 전체를 배울 수 있었다.
Docker에 대해 따로 정리하였다.사용하는 Docker 이미지 마다 설정해야 하는 환경 변수의 이름과 구조가 다르다. 같은 데이터베이스나 언어 환경이라도, 사용하는 이미지에 따라 -e, --ENV 옵션에 들어가는 설정 값이 달라 혼동할 때가 많았다.
예를 들어,
# mysql
$ docker container run \ # 새 컨테이너를 실행
--name db \ # 컨테이너 이름을 'db'로 지정
-- detach \
--rm \ # 컨테이너 종료 시 자동으로 삭제
--env MYSQL_ROOT_PASSWORD=secret \ # MySQL 루트 계정 비밀번호 설정
--env MYSQL_USER=user \ # 새 사용자 'user' 생성
--env MYSQL_PASSWORD=password \ # 'user' 사용자의 비밀번호 설정
--env MYSQL_DATABASE=test_db \ # 시작 시 생성할 데이터베이스 이름
--publish 3306:3306 \ # 호스트의 3306 포트를 컨테이너의 3306 포트와 매핑
mysql # 사용할 Docker 이미지 이름 (MySQL 최신 버전)
# postgresql
$ docker container run \
-d \
--rm \
--name pg-test \
-e POSTGRES_USER=user \
-e POSTGRES_PASSWORD=password \
-e POSTGRES_DB=test_db \
-p 5433:5432 \
postgres
$ mysql -h 127.0.0.1 -P 3306 -u user -p
$ psql -h 127.0.0.1 -p 5433 -U user -d test_db
와 같이 각 이미지마다 입력해야 하는 환경 변수명이 다르기 때문에, 무작정 암기하기보다 공식 문서를 꼭 확인하고, 정확한 변수명을 사용해야 한다는 점을 배웠다.
개발하는 과정에의 다양한 경우에 공식 문서를 확인하는 습관이 필요하다는 것을 느꼈다.
👉 [velog] [Linux] Docker 실습 - 연습문제 풀이
Docker 명령어의 구조와 실행 흐름에 대해서는 익숙해졌지만, 여전히 컨테이너 간 네트워크 설정, 호스트와의 포트 연결, 그리고 컨테이너 내부 경로(볼륨)와 외부 경로 연결에 대한 이해가 부족하다고 느꼈다.
특히 -v 옵션으로 볼륨을 마운트할 때, 호스트 경로와 컨테이너 경로의 차이,
-p 옵션으로 포트를 연결할 때 어느 쪽이 내부이고 외부인지 혼동하는 경우가 종종 있었다.
또한 Dockerfile 작성 시 네트워크, 볼륨, 멀티 컨테이너 구성에 대해 더 명확히 이해할 수 있도록 반복 연습이 필요하다고 느꼈다.
다음 주 부터는 SQL을 배우게 된다. SQL은 데이터 엔지니어의 기본 중의 기본이기 때문에, 기존의 지식을 바탕으로 더 구조적으로 데이터를 다루는 능력을 키우는데 집중할 것이다.
이전에 복잡한 조건의 JOIN과 서브쿼리를 활용하는데에 어려움을 느꼈기 때문에 특히 이 쿼리들을 익히고 데이터 처리에 자연스럽게 활용할 수 있도록 연습이 필요하다.