볼륨 mount 방식
## 도커에서 볼륨 생성 (이름이 test인 볼륨 생성)
[root@localhost ~]# docker volume create test
test
## 도커 볼륨 경로 확인
[root@localhost ~]# docker volume ls
DRIVER VOLUME NAME
local test
## 컨테이너에서 볼륨 연결
[root@localhost ~]# docker run -itd -v test:/test --name c1 centos:7
e4765396f0c5762949db19459042a9152290eae887a2915887572ca57580c849
## C1 컨테이너에서 test볼륨에 어떤 파일 있는지 확인
[root@localhost ~]# docker exec c1 ls -al /test
total 0
drwxr-xr-x. 2 root root 25 May 16 12:45 .
drwxr-xr-x. 1 root root 18 May 16 12:47 ..
-rw-r--r--. 1 root root 0 May 16 12:45 volume.test
## 컨테이너에서 볼륨 연결
[root@localhost ~]# docker run -itd -v test:/test1 --name c2 centos:7
1886d202e032b167fe33c49c392ee5cf80d65d1a6edb1bd01fecd1d2fa53cbb9
## C2 컨텡너 test1 디렉토리 확인
[root@localhost ~]# docker exec c2 ls -al /test1
total 0
drwxr-xr-x. 2 root root 25 May 16 12:45 .
drwxr-xr-x. 1 root root 19 May 16 12:49 ..
-rw-r--r--. 1 root root 0 May 16 12:45 volume.test
## volume.test 파일 수정
[root@localhost ~]# cat >> /var/lib/docker/volumes/test/_data/volume.test
hello_tea^H^H^H^H^Hsung
hello----
^Z
[1]+ Stopped cat >> /var/lib/docker/volumes/test/_data/volume.test
[root@localhost ~]# docker exec c1 cat /
bin/ dev/ home/ lib64/ mnt/ proc/ run/ srv/ test/ usr/
boot/ etc/ lib/ media/ opt/ root/ sbin/ sys/ tmp/ var/
## c1컨테이너 volume.test파일 읽기
[root@localhost ~]# docker exec c1 cat /test/volume.test
hellsunga
hello----
디렉토리 연결 방식
## 연결할려는 디렉토리 생성
[root@localhost ~]# mkdir /vol
## /vol:/vol 절대 경로의 디렉토리 경로를 적어줘야 합니다. 앞에 /vol은 로컬에 생성한 디렉토리이며,
뒤의 :/vol은 컨테이너의 디렉토리. 하지만 컨테이너의 디렉토리 명을 모르기 때문에 자동으로 임의로 지정해준 것.
어떤 이름으로 하던 상관 없으며, 없는 디렉토리 명이면 컨테이너에서 생성 해줍니다.
결론 : 뒤에 :/vol은 컨테이너의 /vol 디렉토리.
## vol이 없을 시 Docker에서 볼륨을 자동으로 생성합니다. 따라서 절대 경로를 적어줘야 합니다.
[root@localhost ~]# docker run -itd -v /vol:/vol --name al alpine
774d37d2109b696f3638f9982b115b1094cae3d261b2722ee26cf9e8ead4770
## /vol 디렉토리의 al로 alpine 컨테이너 실행
[root@localhost ~]# docker run -itd -v /vol:/vol --name al alpine
774d37d2109b696f3638f9982b115b1094cae3d261b2722ee26cf9e8ead47700
[root@localhost ~]#
[root@localhost ~]#
##컨테이너 al 실행
[root@localhost ~]# docker exec -it al /bin/sh
/ # ls
bin etc lib mnt proc run srv tmp var
dev home media opt root sbin sys usr vol
## cat으로 test.txt 생성 후 간단한 글 입력 후 출력
/ # cat > vol/test.txt << END
> HI TAESUNG
> TEST
> TEST3
> END
/ # ls /vol
test.txt
/ # cat /v
var/ vol/
/ # cat /vol/test.txt
HI TAESUNG
실습
1. 최상위 디렉토리에 /html 디렉토리 생성 후 index.html 파일 생성
index.html 내용은 DOCKER-VOLUME-TEST가 출력되도록 생성
2. httpd 이미지를 이용해서 h1 container를 생성하면서 /html - /usr/local/apache2/htdocs/html 디렉토리를 마운트해서 해당 페이지 출력
3. nginx 이미지를 이용해서 n1 container를 생성하면서 /html - /usr/share/nginx/html 디렉토리와 마운트해서 해당 페이지 출력
4. 확인 후 host의 index.html 파일 내용을 변경해 h1, n1에 즉각 반영되는지 확인
## 1번 예제 실행
[root@localhost ~]# mkdir /html
[root@localhost ~]# cd /html/
[root@localhost html]# vi index.html
[root@localhost html]#
[root@localhost html]#
[root@localhost html]# cat index.html
<html><body><h1>DOCKER-VOLUME-TEST</h1></body></html>
## 2번 예제 실행
docker run -itd -p 61089:80 -v /html:/usr/local/apache2/htdocs/ --name h4 httpd
62c06ab6f434c874e469046de54826cf602543da293860a7f9940e914b9a131d
## 3번 예제 실행
[root@localhost html]# docker run -itd -p 61090:80 -v /html:/usr/share/nginx/html --name n5 nginx
57d891eb5c24583a91503cb4649d3c3d07ff32f062d32b537cee0384cd448de9
'Container' 카테고리의 다른 글
Docker Network 명령어 (0) | 2023.05.18 |
---|---|
Docker MySQL 설치 및 실행 (0) | 2023.05.17 |
Docker import, export, scp 명령어 실습 (0) | 2023.05.17 |
Docker save, load, tar, scp 명령어 실습 (0) | 2023.05.17 |
Docker 복사(CP) 실습 예제 (0) | 2023.05.17 |