docker 실천 (8) docker 호스트 공유 볼 륨
1.1. 로 컬 자원 을 용기 에 마 운 트 할 것 을 지정 합 니 다.
1.1.1 로 컬 파일
# cat index.html
There is nothing here
1.1.2. 용 기 를 만 들 고 로 컬 자원 을 마 운 트 합 니 다.
# docker run -d -p 80:80 -v ~/index.html:/usr/share/nginx/html/index.html --name "cklng" nginx
83826f3fdb3d940fb2fd18af4223da695758e8ac7eb73e07215c461904e161cb
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
83826f3fdb3d nginx "nginx -g 'daemon of…" 4 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp cklng
1.1.3. 접근 용기
# curl http://127.0.0.1:80
There is nothing here
# docker inspect 83826f3fdb3d
....
"Mounts": [
{
"Type": "bind",
"Source": "/root/index.html", #
"Destination": "/usr/share/nginx/html/index.html", #
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
....
1.2. 로 컬 자원 을 용기 에 마 운 트 하지 않 음
1.2.1. 용 기 를 실행 하고 로 컬 자원 을 지정 하지 않 습 니 다.
# docker run -d -p 80:80 -v /usr/share/nginx/html/ --name "cklng1" nginx
8d8fc0a101a03bc7b098f0838e9583cf2a673ecbc6c543739cf2f2803bb713e3
1.2.2. 접근 용기
# curl http://127.0.0.1:80
html>
Welcome to nginx!
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.
For online documentation and support please refer to
nginx.org.
Commercial support is available at
nginx.com.
Thank you for using nginx.
1.2.3. 용기 상세 보기
# docker inspect 8d8fc0a101a0
...
"Mounts": [
{
"Type": "volume",
"Name": "af5af5d925c4e4109d5d9ab4ff9112bee5ec56b1dfc64ce1294e23ed458c50ef",
"Source": "/var/lib/docker/volumes/af5af5d925c4e4109d5d9ab4ff9112bee5ec56b1dfc64ce1294e23ed458c50ef/_data", #
"Destination": "/usr/share/nginx/html", #
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
....
#ls /var/lib/docker/volumes/af5af5d925c4e4109d5d9ab4ff9112bee5ec56b1dfc64ce1294e23ed458c50ef/_data/
50x.html index.html
\ # 용기 에서 무 작위 디 렉 터 리 를 mount 의 원본 으로 만 듭 니 다.
\ # mount 원본 내용 보기:
# cat /var/lib/docker/volumes/af5af5d925c4e4109d5d9ab4ff9112bee5ec56b1dfc64ce1294e23ed458c50ef/_data/index.html
html>
Welcome to nginx!
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.
For online documentation and support please refer to
nginx.org.
Commercial support is available at
nginx.com.
Thank you for using nginx.
1.2.3. volume 상세 보기
# docker volume ls
DRIVER VOLUME NAME
local af5af5d925c4e4109d5d9ab4ff9112bee5ec56b1dfc64ce1294e23ed458c50ef
# docker volume inspect af5af5d925c4e4109d5d9ab4ff9112bee5ec56b1dfc64ce1294e23ed458c50ef
[
{
"CreatedAt": "2018-12-19T01:05:34-05:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/af5af5d925c4e4109d5d9ab4ff9112bee5ec56b1dfc64ce1294e23ed458c50ef/_data",
"Name": "af5af5d925c4e4109d5d9ab4ff9112bee5ec56b1dfc64ce1294e23ed458c50ef",
"Options": null,
"Scope": "local"
}
]
볼 륨 내용 수정:
# cat /var/lib/docker/volumes/af5af5d925c4e4109d5d9ab4ff9112bee5ec56b1dfc64ce1294e23ed458c50ef/_data/index.html
THIS IS NO NO NO PANGE!
접근 용기:
# curl http://127.0.0.1:80
THIS IS NO NO NO PANGE!
용기 에 들 어가 보기:
# docker exec -it 8d8fc0a101a0 /bin/bash
root@8d8fc0a101a0:/# cat /usr/share/nginx/html/index.html
THIS IS NO NO NO PANGE!
1.2.4. 용기 정지 후 volume
# docker stop 8d8fc0a101a0
8d8fc0a101a0
# docker rm 8d8fc0a101a0
8d8fc0a101a0
# cat /var/lib/docker/volumes/af5af5d925c4e4109d5d9ab4ff9112bee5ec56b1dfc64ce1294e23ed458c50ef/_data/index.html
THIS IS NO NO NO PANGE!
\ # host 파일 이 여전히 존재 합 니 다.
사용 - v 로 컬 마 운 트 자원 삭제 가능
# docker rm -v 71b9d9f74d2a
2. 용기 공유 데이터
2.1. 위 와 같이 공유 하고 로 컬 의 같은 volume 을 마 운 트 합 니 다.
2.1.1. 세 개의 용 기 를 만 들 고 같은 디 렉 터 리 를 마 운 트 합 니 다.
# docker run -d -p 80 -v ~/index.html:/usr/share/nginx/html/index.html --name "cklng1" nginx
75cb89bb9430ed47022c76a854c64cdc043571d8be0215d7223355713fb9c078
[root@localhost ~]# docker run -d -p 80 -v ~/index.html:/usr/share/nginx/html/index.html --name "cklng2" nginx
4e8699f856f0709088b1e24effb9f38b939018f6af9880c1a988a2e42fb13c35
[root@localhost ~]# docker run -d -p 80 -v ~/index.html:/usr/share/nginx/html/index.html --name "cklng3" nginx
46c536bc8eeacb073f84cccef9c217edd8196e431b033f8c1182233aa02731df
용기 프로 세 스:
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
46c536bc8eea nginx "nginx -g 'daemon of…" 5 seconds ago Up 3 seconds 0.0.0.0:32771->80/tcp cklng3
4e8699f856f0 nginx "nginx -g 'daemon of…" 8 seconds ago Up 7 seconds 0.0.0.0:32770->80/tcp cklng2
75cb89bb9430 nginx "nginx -g 'daemon of…" 14 seconds ago Up 13 seconds 0.0.0.0:32769->80/tcp cklng1
세 개의 용기 에 접근 하기:
# curl http://127.0.0.1:32771
There is nothing here
# curl http://127.0.0.1:32770
There is nothing here
# curl http://127.0.0.1:32769
There is nothing here
#
\ # 원본 수정
# echo "it's changed" > index.html
# curl http://127.0.0.1:32769
it's changed
# curl http://127.0.0.1:32770
it's changed
# curl http://127.0.0.1:32771
it's changed
2.2. volme 용기 만 들 기
매개 변수 설명:
-- volumes - from Mount volumes from the specified container (s) \ # 볼 륨 을 지정 한 용기 에서 마 운 트 합 니 다
2.2.1. 먼저 volume 용 기 를 만 듭 니 다.
# docker create --name ckl_data -v ~/index.html:/usr/share/nginx/html/index -v /data/ckl/testdir centos
a1bb53fa787c470611e5ebd9fd06c399447f3fdf18442eba08ae1b745d63a70c
\ # 생 성 용기 볼 륨 에 대한 자세 한 내용 보기:
# docker inspect a1bb53fa787c
...
"Mounts": [
{
"Type": "bind",
"Source": "/root/index.html", # 1
"Destination": "/usr/share/nginx/html/index", # 1
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "volume",
"Name": "e78b4894d0f13c2ab68d362728dd101dc3b3a55666dd5978a204f30731b4f9a6",
"Source": "/var/lib/docker/volumes/e78b4894d0f13c2ab68d362728dd101dc3b3a55666dd5978a204f30731b4f9a6/_data", # 2
"Destination": "/data/ckl/testdir", # 2
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
....
2.2.2. 세 개의 용 기 를 만 들 고 마 운 트 할 용 기 를 지정 합 니 다.
# docker run -d --name "cklcent1" --volumes-from ckl_data nginx
480ebd88ea200f23bb0f0ac336fc7183a81832bdfcd40ea02bc2902fd980ae3d
# docker run -d --name "cklcent2" --volumes-from ckl_data nginx
9e4a4095722595dc196b5e39c10ee970067855970e69ef571ad0e2a118f461a2
# docker run -d --name "cklcent3" --volumes-from ckl_data nginx
0a58aea9bd47895d9cf8c000f9d1f604f14970c47b1cb72e5d0f2015568de3d1
2.2.3 용기 내용 보기:
# docker exec -it 0a58aea9bd47 /bin/bash -c "cat /usr/share/nginx/html/index && ls /data/ckl/testdir"
it's changed
# docker exec -it 9e4a40957225 /bin/bash -c "cat /usr/share/nginx/html/index && ls /data/ckl/testdir"
it's changed
# docker exec -it 480ebd88ea20 /bin/bash -c "cat /usr/share/nginx/html/index && ls /data/ckl/testdir"
it's changed
마 운 트 원본 에 들 어가 서 파일 추가, 테스트:
# cd /var/lib/docker/volumes/e78b4894d0f13c2ab68d362728dd101dc3b3a55666dd5978a204f30731b4f9a6/_data
[root@localhost _data]# touch ckl.log
\ # 공 유 된 디 렉 터 리, 파일 일치
# docker exec -it 0a58aea9bd47 /bin/bash -c "cat /usr/share/nginx/html/index && ls /data/ckl/testdir"
it's changed
ckl.log
# docker exec -it 9e4a40957225 /bin/bash -c "cat /usr/share/nginx/html/index && ls /data/ckl/testdir"
it's changed
ckl.log
# docker exec -it 480ebd88ea20 /bin/bash -c "cat /usr/share/nginx/html/index && ls /data/ckl/testdir"
it's changed
ckl.log
\ # 용기 마 운 트 미 러 를 만 들 수도 있 습 니 다. 파일 을 용기 에 넣 고 새로 만 든 용 기 는 호스트 에 의존 하지 않 고 마 운 트 용 기 를 지정 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swarm의 도커 비밀이 게시물에서는 Redis를 사용한 실제 시나리오 예제를 제공하여 사용 방법을 보여주고자 합니다. Docker 기술에 대한 기본 지식 Docker Swarm 오케스트레이터에 대한 기본 지식 "Docker Swarm ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.