42Seoul/Docker

8. docker 가이드 파해치기 [Get started] part 6

part 6) Use bind mounts

 

이녀석이 신기한 기능을 한다

바인드를 하여 지금 로컬 파일들과 컨테이너의 파일을 공유할수 있게 된다

 

docker run -it --mount type=bind,src="$(pwd)",target=/src ubuntu bash

이거의 명령어를 잘라서 보면 (자세한건 다음에)

 

- it :     input terminal 일거다 즉 터미널 안에 들어가 인풋을 할수 있는 환경을 만드는거다

--mount : 뭔가 설정해준다

   type=bind : bind(공유) 한다

   src="위치" : 로컬의 공유위치를 설정해준다

   target="위치" : 컨테이너의 폴더 위치를 설정해준다

ubuntu bash : 우문투 bash 로 실행

 

이런식이다

 저거 실행하면 아 컨테이너 안이구나 하고 알것같다

 

이제 target폴더로 가보자

root@ac1237fad8db:/# cd src
root@ac1237fad8db:/src# ls
Dockerfile  node_modules  package.json  spec  src  yarn.lock

나는 target을 src로 하였기에 src로 이동하였다

그리고 보면 지금 app위치에 있는 파일들과 동일한걸 볼 수 있고 이 폴더에 파일을 추가하면 로컬에도 추가된것을 볼 수 있다

root@ac1237fad8db:/src# touch myfile.txt
root@ac1237fad8db:/src# ls
Dockerfile  myfile.txt  node_modules  package.json  spec  src  yarn.lock

 

 

보너스로 있는걸 해석해보자

docker run -dp 3000:3000 \
    -w /app --mount type=bind,src="$(pwd)",target=/app \
    node:18-alpine \
    sh -c "yarn install && yarn run dev"

dp : 백그라운드 에 포트 설정

-w : 작업 설정 여기선 "/app" 으로 해서 터미널 들어가면 app이 되겟금 한거같음

--mount : 위에서 설명함 여기는 app을 이어주엇음

node:18-alpine : 실행 환경임 

sh -c : 쉘로 실행하겟음 "yarn install && yarn run dev" 명령어를 이건 보시다시시피 app에 이미 yarn 파일이 있는데 그걸 설치 실행한다는 거라고 생각하면됨 내가 안에 들어가서 할 필요가 없어진다~

 

이거처럼 실행중에도 수정이 되면 새로 리프레쉬 되는것을 볼수 있다

개꿀임..

 

https://docs.docker.com/get-started/06_bind_mounts/

 

Use bind mounts

 

docs.docker.com