-
[Docker] Docker 기본 명령어 Volume 이란?DevOps/Docker 2021. 4. 22. 15:58728x90반응형
들어가기 전에
일단 volume이 무엇인지 알기 전에
워드프레스
,MySQL
을 가지고 간단한 실습을 해보겠습니다.MySQL 실행하기
docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql mysql:5.7
위의 명령어를 터미널에서 실행해보겠습니다.
그러면 위와 같이 Docker Image(MySQL)를 다운받고 컨테이너가 실행되는 것을 볼 수 있습니다.
MySQL 접속하기
docker exec -it mysql mysql
위와 같이
exec 명령어
를 통해서 mysql에 접속을 했습니다.create database wp CHARACTER SET utf8; grant all privileges on wp.* to wp@'%' identified by 'wp'; flush privileges; quit
위의 명령어를 mysql 컨테이너에서 실행하겠습니다. 그리고 확인해보면 wp 테이블이 잘 만들어 진 것을 볼 수 있습니다.
워드플레스 블로그 실행하기
docker run -d -p 8080:80 -e WORDPRESS_DB_HOST=host.docker.internal -e WORDPRESS_DB_NAME=wp -e WORDPRESS_DB_USER=wp -e WORDPRESS_DB_PASSWORD=wp wordpress
그러면 위와 같이 WordPress 이미지를 다운 받은 후에 컨테이너를 실행하게 됩니다.
문제 없이 작동하는지 확인해보면 컨테이너도 잘 실행되고 있는 것을 볼 수 있습니다.
그리고
http://localhost:8080
으로 접속하면 위와 같은 워드프레스가 뜨는 것을 볼 수 있습니다. 한국어를 체크하고계속
을 누르겠습니다. 다음에 뜨는 것에 간단하게 원하는 정보들을 입력해서 회원가입을 하겠습니다.그리고 다시 MySQL 컨테이너에 접속해보겠습니다.
docker exec -it mysql mysql
접속하면 위와 같이 위에서 만들었던 wp(워드프레스) 테이블이 존재하는 것을 볼 수 있습니다.
그리고
show tables
를 하면 워드프레스 관련 테이블이 존재하는 것도 볼 수 있습니다. 이번에는 워드프레스에서 회원가입 했던 데이터들이 존재하는지 user 테이블을 조회해보겠습니다.위에서 회원가입 했던 데이터들이 잘 저장되어 있는 것을 확인할 수 있습니다.
그런데 만약 MySQL 컨테이너를 멈췄다고 다시 실행시키면 데이터들은 어떻게 될까요?
어떻게 되는지 MySQL 컨테이너를 중지해보겠습니다.위와 같이 MySQL 컨테이너를 중지하겠습니다. 그리고 다시
http://localhost:8080
으로 접속해보겠습니다.이번에는 위와 같이 접속이 안되는 것을 볼 수 있습니다. 즉, MySQL 컨테이너에 존재하던 데이터들이 다 삭제가 된 것입니다. 이렇게 데이터가 삭제되면 나중에 문제가 될 수 있기 때문에 컨테이너가 중지되더라도 데이터를 보존하는 것이 필요합니다. 이럴 때 사용하는 것이
Volume
입니다. 한번 사용해보면서 좀 더 자세히 알아보겠습니다.Docker volume 이란 무엇일까?
docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql -v /Users/choejeong-gyun/Documents/mysql:/var/lib/mysql mysql:5.7
-v /Users/choejeong-gyun/Documents/mysql:/var/lib/mysql
: -v 옵션은 Docker Volume을 사용하겠다는 뜻이고 :를 기준으로 왼쪽은 나의 로컬 PC에 존재하는 디렉토리, 오른쪽은 MySQL 컨테이너 데이터가 저장되는 디렉토리 입니다. 즉, 두 디렉토리를 서로 연결시키겠다는 뜻입니다.
(MySQL 컨테이너 디렉토리가 나의 로컬 디렉토리를 참조하겠다는 뜻이기도 합니다.)
그리고 다시 한번 MySQL 컨테이너를 접속해서 아래의 명령어들을 입력하겠습니다.
docker exec -it mysql mysql create database wp CHARACTER SET utf8; grant all privileges on wp.* to wp@'%' identified by 'wp'; flush privileges; quit
그리고 다시
http://localhost:8080
으로 접속하면 워드프레스가 뜰 것입니다. 다시 한번 회원가입 절차를 진행해보겠습니다.그리고 위에서 MySQL 컨테이너 디렉토리와 매핑시켰던 로컬 PC 디렉토리를 보면 위와 같이 어떤 파일들이 새로 생긴 것을 볼 수 있습니다.
그리고 위와 같이 MySQL 컨테이너를 중지시킨 후에 다시
http://localhost:8080
으로 접속해보겠습니다.그러면 위와 같이 컨테이너가 중지된 상태이기 때문에 DataBase Connection Error가 발생합니다. 하지만 이번에는 데이터가 로컬 PC 디렉토리에 저장되어 있기 때문에 다시 MySQL 컨테이너를 실행시키면 그대로 남아있을 것입니다.(docker rm 을 통해서 해당 컨테이너를 삭제도 해주겠습니다.)
docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql -v /Users/choejeong-gyun/Documents/mysql:/var/lib/mysql mysql:5.7
위의 명령어를 다시 실행시켜보겠습니다.
그리고 다시
http://localhost:8080
으로 접속해보면 위와 같이 잘 뜨는 것을 볼 수 있습니다.반응형'DevOps > Docker' 카테고리의 다른 글
[Docker] EC2에서 Docker로 Nginx Reverse Proxy 하는 법 (0) 2021.04.23 [Docker] Docker Compose를 사용해야 하는 이유 (0) 2021.04.23 [Docker] Dockerfile 기본 명령어 정리 (0) 2021.04.06 [Docker] EC2에서 Docker 컨테이너를 활용하여 웹 서버 실행하기 (0) 2021.03.29 [Docker] Docker Image로 Container를 만드는 과정 (0) 2021.03.29