#wannabeeeeeee the best DataScientist
Docker 실습(2) 본문
✅ 컨테이너가 가진 문제점
Docker를 사용하면 특정 프로그램을 컨테이너라는 단위로 쉽게 실행할 수 있습니다. 이 컨테이너는 독립적인 환경에서 실행되기 때문에, 프로그램의 실행 환경을 표준화하고 배포를 간편하게 만들어줍니다.
만약 실행 중인 프로그램에 기능이 추가되거나 수정이 필요하다면, 기존 컨테이너를 직접 수정하지 않고, 새로운 이미지를 생성해서 새로운 컨테이너를 실행시키는 방식으로 업데이트를 합니다. Docker는 이렇게 컨테이너 전체를 통째로 교체하는 방식을 효율적이라고 판단합니다.
하지만 이 방식에는 한 가지 주의할 점이 있습니다. 기존 컨테이너를 삭제하고 새로 만들게 되면, 컨테이너 내부에 저장된 데이터 역시 함께 사라진다는 점입니다. 예를 들어, MySQL 서버를 컨테이너로 실행하고 있다면, MySQL에 저장된 데이터도 컨테이너 삭제와 함께 모두 날아가버릴 수 있습니다.
이러한 문제를 방지하기 위해 Docker에서는 볼륨(Volume)이라는 개념을 제공합니다.
✅ Docker Volume(도커 볼륨)이란?
도커의 볼륨(Volume)이란 도커 컨테이너에서 데이터를 영속적으로 저장하기 위한 방법이다. 볼륨은 컨테이너 자체의 저장 공간을 사용하지 않고, 호스트 자체의 저장 공간을 공유해서 사용하는 형태이다.
✅ 볼륨(Volume)을 사용하는 명령어
docker run -v [호스트의 디렉토리 절대경로]:[컨테이너의 디렉토리 절대경로] [이미지명]:[태그명]
✔ [호스트의 디렉토리 절대 경로]에 디렉토리가 이미 존재할 경우, 호스트의 디렉터리가 컨테이너의 디렉터리를 덮어씌운다.
✔ [호스트의 디렉토리 절대 경로]에 디렉토리가 존재하지 않을 경우, 호스트의 디렉터리 절대 경로에 디렉터리를 새로 만들고 컨테이너의 디렉터리에 있는 파일들을 호스트의 디렉터리로 복사해온다.
✅ Docker로 MySQL 실행시켜보기
docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -d mysql
✔ Dockerhub의 MySQL 공식 문서를 보면 환경 변수로 MYSQL_ROOT_PASSWORD를 정해주어야만 정상적으로 컨테이너가 실행된다고 적혀져있다.
1.MySQL 컨테이너에 접속
docker exec -it [MySQL 컨테이너 ID] bash
2.컨테이너에서 MySQL에 접근하기 > password123으로 접속
mysql -u root -p
3.데이터베이스 만들기
mysql> create database mydb;
mysql> show databases;

"mydb"라는 데이터베이스를 생성했지만, 컨테이너 삭제 후 재생성하면 "mydb"도 삭제된다.
위 방식은 볼륨(Volume)을 활용하지 않고 MySQL 컨테이너를 띄웠다. 그래서 MySQL 컨테이너를 삭제함과 동시에 MySQL 내부에 저장되어 있던 데이터도 함께 삭제되어 없어졌다. 이를 방지하기 위해 볼륨(Volume)을 활용해 MySQL 컨테이너를 띄우는 방식에 대해 알아볼 것이다.
✅ 볼륨(Volume)을 활용해 MySQL 컨테이너 띄우기
#1
cd [원하는 경로 설정]
#2
mkdir docker-mysql # MySQL 데이터를 저장하고 싶은 폴더 만들기
#3
cd docker_mysql
#4
docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306
-v C:/Users/we626/desktop/devlop/docker-mysql/mysql_data:/var/lib/mysql
-d mysql
#5
docker exec -it [MySQL 컨테이너 ID] bash
#6
mysql -u root -p
mysql> show databases; # 아까 생성한 데이터베이스가 그대로 존재하는 걸 확인할 수 있다.
pwd # 현재 경로 표시
✔ 비밀번호 passord123은 저장 파일 삭제 후 재설정 아니면 변경이 안된다.
✅ Docker로 PostgreSQL 실행시켜보기
✔ 사이트에서 연결방법 확인하기
https://hub.docker.com/_/postgres
postgres - Official Image | Docker Hub
Note: the description for this image is longer than the Hub length limit of 25000, so has been trimmed. The full description can be found at https://github.com/docker-library/docs/tree/master/postgres/README.md. See also docker/hub-feedback#238 and d
hub.docker.com
docker run -e POSTGRES_PASSWORD=password123 -p 5432:5432
-v C:/Users/we626/desktop/devlop/docker-postgresql/postgresql_data:/var/lib/postgresql/data
-d postgres
✅ Docker로 MongoDB 실행시켜보기
✔ 사이트에서 연결방법 확인하기
https://hub.docker.com/_/mongo
mongo - Official Image | Docker Hub
Quick reference Supported tags and respective Dockerfile links Note: the description for this image is longer than the Hub length limit of 25000, so the "Supported tags" list has been trimmed to compensate. See also docker/hub-feedback#238 and docker/ro
hub.docker.com
docker run -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=password123 -p 27017:27017
-v C:/Users/we626/desktop/devlop/docker-mongodb/mongodb_data:/data/db
-d mongo
'Data scientist > Docker' 카테고리의 다른 글
Docker Compose (0) | 2025.05.11 |
---|---|
Docker File (0) | 2025.05.07 |
Docker 실습(1) (0) | 2025.05.04 |
Docker 기본 개념 (0) | 2025.05.04 |