호스트 볼륨 공유
docker run -d \\
--name wordpressdb_hostvolume \\
-e MYSQL_ROOT_PASSWORD=password \\
-e MYSQL_DATABASE=wordpress \\
-v /home/wordpress_db:/var/lib/mysql \\
mysql:5.7
docker run -d \\
-e WORDPRESS_DB_PASSWORD=password \\
--name wordpress_hostvolume \\
--link wordpressdb_hostvolume:mysql \\
-p 80 \\
wordpress
두 명령어를 통해 mysql 데이터베이스 컨테이너와 워드프레스 웹 서버 컨테이너를 생성한다.
워드프레스 컨테이너에 -p 옵션으로 컨테이너의 80 포트를 외부에 노출했으므로 wordpress_hostvolume 컨테이너의 호스트 포트로 워드프레스 컨테이너에 접속할 수 있다.
ls /home/wordpress_db
위 명령어로 실제 해당 디렉터리에 데이터베이스 관련 파일이 있는지 확인할 수 있다.
이제 컨테이너를 삭제해 데이터베이스의 데이터가 보존되는지 확인해 본다.
docker stop wordpress_hostvolume wordpressdb_hostvolume
docker rm wordpress_hostvolume wordpressdb_hostvolume
위 명령어를 통해 컨테이너 동작을 멈추고 삭제할 수 있다.
ls /home/wordpress_db
다시 /hom/wordpress_db 디렉터리를 확인하면 mysql 데이터가 그대로 남은 것을 확인할 수 있다.
그럼, 호스트에 이미 디렉터리와 파일이 존재하고 컨테이너에도 존재할 때 두 디렉터리를 공유하면 어떻게 될까?
확인을 위해 alicek106/volume_tset라는 미리 준비된 이미지를 활용한다.
docker run -i -t \\
--name volume_dummy \\
alicek106/volume_test
ls /home/testdir_2/
이 이미지에는 /home 디렉터리에 testdir_2라는 디렉터리가 존재하고 test라는 파일이 그 안에 들어있다. 그 다음 명령어를 입력해 컨테이너를 생성하고 /home/testdir_2라는 디렉터리를 확인하면 파일이 존재하는 것을 확인할 수 있다.
이미지에 원래 존재했던 디렉터리에 호스트 볼륨을 공유하면 컨테이너의 디렉터리 자체가 덮어씌워지는 것이다. 즉, -v 옵션을 통한 호스트 볼륨 공유는 호스트의 디렉터리를 컨테이너의 디렉터리에 마운트한다.
docker run -i -t \\
--name volume_overide \\
-v /home/wordpress_db:/home/testdir_2 \\
alicek106/volume_test
ls /home/testdir_2/
run 명령어를 실행하면서 alicek106/volume_test 이미지가 도커에 존재하지 않으므로 이미지를 pull한다. 그러나 태그를 지정하지 않았는데 이미지가 pull 된 것은 이미지의 태그를 지정하지 않으면 도커 엔진이 lastest 태그로 지정된 이미지를 pull하기 때문이다.
📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다.
'DevOps > Docker' 카테고리의 다른 글
[Docker] : Docker volume , 도커 볼륨 (0) | 2022.02.16 |
---|---|
[Docker] : Volume Container, 볼륨 컨테이너 (0) | 2022.02.16 |
[Docker] 도커 볼륨, docker volume (0) | 2022.02.15 |
[Docker] : 도커 애플리케이션 구축하기 (0) | 2022.02.15 |
[Docker] : VMWare Ubuntu Docker 설치 (0) | 2022.02.10 |
댓글