Almost-Native

도커(docker) 컨테이너 안으로 로컬파일을 복사 방법 및 권한문제 해결 본문

Java 프로그램 개발, IT

도커(docker) 컨테이너 안으로 로컬파일을 복사 방법 및 권한문제 해결

2023. 5. 29. 11:16

도커 Container 안으로 호스트에 있는 로컬파일을 복사해서 넣거나 반대로 빼내는 방법은 아래와 같이 docker cp 커맨드로 가능합니다.

 

-- 1) 호스트 로컬파일 -> 컨테이너 안으로 복사
$ docker cp File1 Container1:/home/oracle/.
     -- 파일뿐만 아니라 디렉토리도 위와같이 그냥 하면 복사됨.  cp -rp 와 같은 옵션은 없음.
     -- 위와같이 컨테이너안의 디렉토리 절대위치를 정확히 입력해줘야 함.

-- 2) 컨테이너 안에있는 파일 -> 호스트로 복사
$ docker cp Container1:/home/oracle/File1  /tmp/.

 

위와같이 하면 파일, 디렉토리 copy 는 잘 되는데, 파일권한이 문제가 되는 경우가 있습니다.

호스트에서 복사된 파일이 아래와 같이 root 유저로 복사되기 때문에 해당 컨테이너안에서 파일을 열지 못하는 상황이 발생할 수 있습니다.

 

 

이 경우에는 컨테이너 안으로 bash 접속을 할때 root 유저로 접속해서 파일권한을 바꿔주면 됩니다.

 

$ docker exec -it Container1 bash
     -- 일반 유저로 접속 (oracle)
$ docker exec -it --user root Container1 bash
     -- root 유저로 접속

 

root 유저로 컨테이너에 접속해서 chown oracle:oinstall File1 커맨드로 파일 권한을 바꿔주면 됩니다.

 

Comments