Docker Volume : Host Volume

OH JU HYEON·2022년 8월 18일
1

Docker

목록 보기
6/8
post-thumbnail

Docker Volume : Host Volume

탐구

1. 배경

블로그를 만들 때 사용하는 wordpress를 사용해 볼 예정이다. 관련 내용은 여기에서 확인할 수 있다.

2. Container 생성

mysql을 사용할 예정인데 내 노트북은 m1 노트북이라 도커에서 mysql image를 받는 방법이 조금 다르다. 그냥 pull mysql:5.7로 사용하면 arm64를 지원하지 않아 설치가 안 되고 아래와 같이 옵션을 넣어줘야 설치가 가능하다.

docker pull --platform linux/64 mysql:5.7

위 명령어로 이미지를 받았으면 docker images명령어를 통해 정상적으로 이미지를 받아왔나 확인해 보면 된다.

이제 mysql 컨테이너와 워드프레스 웹 서버 컨테이너를 생성한다.

docker run -d \
--name wordpressdb_hostvolume \
-e MYSQL_ROOT_PASSWORD=password \
-e MYSQL_DATABASE\wordpress \
-v ~/test/wordpress_db:/var/lib/mysql \
mysql:5.7

워드프레스 데이터베이스 컨테이너를 열어주었다. -v 옵션은 [호스트의 공유 디렉터리]:[컨테이너의 공유 디렉터리] 형태이다. 이때, 위 명령어에서 적어준 /var/lib/mysql은 MySQL이 데이터를 저장하는 기본 디렉터리이다. 그리고 호스트의 공유 디렉터리 경우 따로 파일을 생성하지 않아도 도커가 자동으로 만들어준다.

docker run -d \
-e MYSQL_ROOT_PASSWORD=password \
--name wordpress_hostvolume \
--link wordpressdb_hostvolume:mysql \
-p 80 \
wordpress

-p 옵션으로 80번 포트를 외부에 노출했다. 이 포트로 워드프레스 컨테이너에 접속할 수 있게 된다.

docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Image}}"

위에 두 컨테이너를 생성했다면 위 명령어를 통해 제대로 생성이 되었는지 체크한다. docker ps명령어로 확인을 해도 되지만 이렇게 포멧을 지정해주면 조금 더 가시성 좋게 볼 수 있어서 이렇게 적어주는 편을 개인적으로 선호하는 편이다. 빠르게 확인하고 싶다면 간단하게 ps로 확인하자.

캡쳐 화면을 보면 자동 생성된 경로와 mysql 구동에 필요한 공유된 파일이 들어가 있는 것을 확인할 수 있다. 또, 컨테이너 두 개가 정상적으로 잘 생성되서 실행되고 있는 것 또한 체크해 볼 수 있다.

3. Container 삭제

도커 볼륨을 사용하는 이유를 다시 상기시켜보자면 도커 이미지 위에 컨테이너 계층을 올려 컨테이너를 돌리게 되는데 이때, 컨테이너를 삭제하면 컨테이너에 있던 데이터 또한 사라지기 때문에 컨테이너를 실수로 삭제하면 데이터가 사라지는 난감한 상황이 생길 수 있다.

하지만 호스트 볼륨을 통해 데이터를 보존해서 실수로 컨테이너를 삭제하더라도 다시 생성해서 기존 데이터를 사용할 수 있는 이점을 갖게 되는 것이다.

자, 이제 생성된 컨테이너를 삭제하고 데이터가 보존되는지 확인할 차례이다.

docker stop 컨테이너아이디1 컨테이너아이디2

docker rm 컨테이너아이디1 컨테이너아이디2

명령어로 삭제를 한다. 컨테이너 명으로 삭제를 해도 되고 아이디 앞에 2,3글자를 입력해서 삭제를 해도 된다. 생성한 두 컨테이너 모두 삭제를 해 주자. 참고로 컨테이너를 삭제하기 위해서는 정지가 선행되야 삭제가 가능하며 여러개의 컨테이너를 삭제하고자 할 때 공백으로 구분해주면 명령어를 한 번만 입력해도 여러 컨테이너를 삭제할 수 있다.

위와 같이 실행중인 컨테이너를 조회해서 아이디를 기준으로 삭제한다. 원래는 아이디를 기준으로 삭제할 때 컨테이너가 여러개 있다면 겹치는 경우도 있어서 3~4글자를 입력해서 삭제하는 것을 권장하는 것 같지만 컨테이너가 별로 없기 때문에 일단 앞에 2글자 정도만 이용해서 정지 후 삭제했다.

마지막으로 정상적으로 컨테이너가 삭제되었는지 확인하면 완료이다.

4. 확인

삭제를 완료 했으니 이전 데이터가 어떻게 되었는지 확인해 보면 아까 생성한 그 경로 그대로 데이터가 남아있는 것을 확인할 수 있다.

-v 옵션을 통해 컨테이너의 디렉터리를 호스트와 공유했기 때문에 이렇게 컨테이너를 삭제하더라도 로컬에는 그대로 남아있게 된다.

참고

wordpress
시작하세요! 도커/쿠버네티스

profile
읽기만 해도 이해가 되는 글을 쓰기 위해 노력합니다.

0개의 댓글