5.3 데이터 영구 화 Bind Mouting

2905 단어 docker
사용 장면: 용기 내외 간 의 데이터 동기 화 를 확보 하고 동기 판 의 기능 에 해당 합 니 다.
Data Volume 과 의 차이 점 은 Data Volume 은 안에서 밖으로, 단 방향 이 고 Bind Mouting 은 양 방향 이라는 것 이다.
nginx 용기 만 들 기
Dockerfile 파일 작성
FROM nginx:latest
WORKDIR /usr/share/nginx/html
COPY index.html index.html

index. html 파일 내용 은 다음 과 같 습 니 다.



    
    
    
    Document


 Hello Siguoya!


그리고 미 러 를 컴 파일 하고 용 기 를 만 듭 니 다.
docker build -t siguoya/nginx-bind-mounting .
docker run -d --name nginx-bind-mounting -p 80:80 siguoya/nginx-bind-mounting

다음 명령 을 사용 하면 index. html 의 내용 을 볼 수 있 습 니 다.
curl http://127.0.0.1/

그러나 현재 nginx - bid - mounting 은 코드 를 수정 한 후에 업 데 이 트 된 효 과 를 볼 수 없습니다.
Bind Mouting
nginx - bid - mounting 먼저 삭제
docker container stop nginx-bind-mounting && docker container rm nginx-bind-mounting

그리고 다시 초기 화 할 게 요.
docker run -d --name nginx-bind-mounting -p 80:80 -v $(pwd):/usr/share/nginx/html siguoya/nginx-bind-mounting

이 때 용기 에 들 어가 다음 작업 을 수행 합 니 다.
[vagrant@docker-node1 bind-mounting]$ docker exec -it nginx-bind-mounting /bin/sh
# ls -al /usr/share/nginx/html
total 8
drwxrwxr-x. 2 1000 1000 42 Jul 3 12:47 .
drwxr-xr-x. 1 root root 18 Jun 26 23:09 ..
-rw-rw-r--. 1 1000 1000 75 Jul 3 12:46 Dockerfile
-rw-rw-r--. 1 1000 1000 331 Jul 3 12:47 index.html
# touch test.txt
# exit

그리고 용기 에서 나 갑 니 다.
[vagrant@docker-node1 bind-mounting]$ ls -al
total 8
drwxrwxr-x. 2 vagrant vagrant 58 Jul 3 13:03 .
drwxrwxr-x. 4 vagrant vagrant 46 Jul 3 12:45 ..
-rw-rw-r--. 1 vagrant vagrant 75 Jul 3 12:46 Dockerfile
-rw-rw-r--. 1 vagrant vagrant 331 Jul 3 12:47 index.html
-rw-r--r--. 1 root root 0 Jul 3 13:03 test.txt

용기 밖의 내용 이 용기 안에 동기 화 되 고 용기 안에 만 든 파일 test. txt 도 용기 밖으로 자동 으로 동기 화 되 는 것 을 발견 할 수 있 습 니 다.
이것 이 바로 Bind Mouting 의 쌍방 향 동기 화의 매력 이다.
주의 사항-v 호스트 와 용기 사이 의 파일 을 동기 화 할 수 있 지만 -v /usr/project/code/zy108830/docker-voyager/nginx/:/etc/nginx 디 렉 터 리 가 빈 디 렉 터 리 라면 설정 파일 을 미리 준비 하지 않 으 면 용기 가 시작 되 지 않 습 니 다.docker 의 양 방향 동기 화 때문에 초기 화 할 때 호스트 데이터 로 용기 의 데 이 터 를 덮어 씁 니 다.
이 문 제 를 해결 하려 면 임시 용 기 를 만 들 고 설정 파일 을 복사 한 다음 정식 용 기 를 만 들 수 있 습 니 다.
docker run --name tmp-nginx-container -d nginx:1.14.2
docker cp tmp-nginx-container:/etc/nginx /usr/project/code/zy108830/docker-voyager
docker rm -f tmp-nginx-container
docker run --name nginx -p 4399:80 -v /usr/project/code/zy108830/docker-voyager:/usr/share/nginx/html -v /usr/project/code/zy108830/docker-voyager/nginx:/etc/nginx -d nginx:1.14.2

좋은 웹페이지 즐겨찾기