DEV ℧ Developer Diary

[Docker] 도커 기본 명령어 (3) - volume

해당 포스트는 inflearn에서 subicura님의 초보를 위한 도커 안내서의 강의를 듣고 정리한 문서입니다.

도커 기본 명령어 (3)

volume - 실행중인 컨테이너 목록 조회

도커의 컨테이너는 데이터를 저장할때 컨테이너 계층에 저장을 하게되어 만약 컨테이너를 삭제를 할 경우 내부의 데이터도 같이 사라지게 됩니다.

도커의 공식문서에 따르면, volume 옵션 사용시 아래의 몇가지 이점을 가질 수 있다고 말한다.

  1. Docker CLI 명령 또는 Docker API를 사용하여 volumn를 관리 가능
  2. Linux와 Windows 컨테이너에서 모두 작동
  3. 여러 컨테이너 간에 volume을 안전하게 공유가 가능
  4. 원격 호스트 또는 클라우드 제공자에 volume을 저장, volume의 내용을 암호화 하거나 다른 기능을 추가가 가능

명령어는 아래와 같이 옵션을 넣어 사용합니다.

왼쪽에는 저장소의 디렉토리를, 오른쪽에는 Docker의 컨테이너를 넣어 둘을 연결시킵니다.

-v [HOST DIRECTORY]:[CONTAINER DIRECTORY]

이제 전 포스트에 만들었던 mysql을 volume옵션을 넣어 만들어보도록 하자.

아래의 옵션을 넣어 사용할 수 있다.

docker run -d -p 3306:3306 \
  -e MYSQL_ALLOW_EMPTY_PASSWORD=true \
  --network=app-network \
  --name mysql \
  -v C/Users/dhaud/mysql:/var/lib/mysql \
  mariadb:10.9

다시 동일하게 워드프레스 관련 권한을 넣어주고 워드프레스를 실행해보자.

docker exec -it mysql mysql
create database wp CHARACTER SET utf8;
grant all privileges on wp.* to wp@'%' identified by 'wp';
flush privileges;
quit

테스트로 글을 작성해보자.

docker1

이후 컨테이너를 삭제했다가 다시 위의 docker run 명령을 통해 mysql 컨테이너를 올려주도록 하자.

docker stop mysql
docker rm mysql

docker run -d -p 3306:3306 \
  -e MYSQL_ALLOW_EMPTY_PASSWORD=true \
  --network=app-network \
  --name mysql \
  -v C/Users/dhaud/mysql:/var/lib/mysql \
  mariadb:10.9

다시 워드프레스에 접속한다면, 전에 작성했던 글이 그대로 있는것을 확인 할 수 있다!

docker1