컨테이너 상의 파일들은 컨테이너 망가지면 다 사라져 버립니다. 그래서 저장/관리가 필요한 파일은 -v 볼륨 지장해서 공유하고 호스트쪽에 접근하고 저장되도록 사용하고 있습니다.
예를들면 -v /home/<hostuser>/share:/home/<containeruser>/share 해주면 도커 우분투 컨테이너내에서 ~/share 아래의 파일들은. 호스트쪽 ~/share 랑 동기화(?) 저장되어 편하게 사용하고 있습니다.
참고로 권한 문제 없으려면 호스트와 도커 우분투 상의 user 계졍의 uid. gid를 동일하게 셋팅하는게 좋습니다.
아핫핫
IP 223.♡.72.151
03-19
2022-03-19 10:48:01
·
@테츠님 아 무슨 말씀인지 알겠습니다. 감사합니다. 좋은 주말 보내세요
아핫핫
IP 49.♡.35.171
03-19
2022-03-19 19:00:50
·
@테츠님 상세히 답변 해주셔서 감사합니다 ^^ 말씀하신대로 설정을 진행했습니다. 권한은 root로 설정 하였구요. 그리고 혹시 파이썬이 설치 된 부분도 동기화를 진행 할 수 있을까요? ^^;
테츠
IP 124.♡.43.204
03-19
2022-03-19 20:36:47
·
@아핫핫님 저도 ubuntu 컨테이너에서 특정앱을 위한 -v 설정은 안해봤는데... 위 답변을 응용해 보면 파이썬 설치될 경로를 미리 -v 로 볼륨 지정해 보면 되지 않을까요? 예를들면 파이썬이 /usr/bin/python에 설치된다면 -v /home/<hostuser>/python:/usr/bin/python 지정해주면 호스트의 /home/<hostuser>/python 경로에 컨테이너의 파이썬이 저장될것 같습니다. 한번 시도해보세요.
@아핫핫님 아무래도 도커 이미지와 관련된 파일은 공유가 어려울수도 있어 보이네요. 해보지도 않고 잘못된 내용 답변달아 죄송합니다.
특정 파이썬 설치등 나만의 도커 환경이 필요할때는 dockerfile을 이용해 docker build 수행해서 이미지를 직접 만들어쓰는 방법도 있습니다. dockerfile 문법과 빌드 방법을 익혀야하지만.... 깨우치면 또 도커 활용에 신세계가 열리더라구요. 참고하세요.
@아핫핫님 아무래도 docker build 보다는 docker commit이 쉬운 방법이라서 추가 코멘트로 드립니다.
혹시 아래와 예시와 같은 상황이시면 docker commit 으로, 컨테이너 변경사항을 docker image로 저장해 둘 수 있습니다.
< 예시 > 1, ubuntu:18.04 같은 오피셜 ubuntu 배포한 docker image 로 컨테이너 실행 2. 컨테이너에서 python 등 필요한 패키지들 설치하고 필요한 셋팅 수행 -> 이때, 도커 컨테이너 망가지거나 삭제되서.... (문제 발생) -> 도커 컨테이너 재실행(재생성) 되면, 2번에 셋팅한 내용 다 초기화 됨 = 컨테이너 변경 사항이 저장되지 못함 (오피셜 ubuntu 배포판 docker image로 컨테이너가 다시 생성되기 때문에, docker image 기준으로 초기화 되버림)
혹시 위 경우시라면, 2번까지 진행하고 docker commit 명령으로 1 + 2 상황을 docker image로 저장 할 수 있습니다.
< 해결책 > 1, ubuntu:18.04 같은 오피셜 ubuntu 배포한 docker image 로 컨테이너 실행 2. 컨테이너에서 python 등 필요한 패키지들 설치하고 필요한 셋팅 수행 3. $ sudo docker container ls -a 명령으로 현재 사용중인 컨테이너 NAMES 확인 (예시 ubuntu_test) 4. $ sudo docker commit -p ubuntu_test ubuntu_save tip. sudo docker commit -p <현재 사용중인 컨테이너명> <새로 저장하고 싶은 컨테이너명> 5. $ sudo docker images 확인하면 ubuntu:18.04 같은 오피셜 ubuntu 배포한 docker image 에 추가로 방금 docker commit으로 저장한 ubuntu_save 라는 이미지가 생성됨 확인 가능.
이렇게 docker 컨테이너를 docker image로 저장/백업 해 둔 상태라면... 위 예시와 같은 상황에서 ubuntu_save 이미지로 컨테이너를 재생성해주면 1 + 2 상황이 모두 적용된 상태로 컨테이너가 실행 될 수 있습니다.
@아핫핫님 docker build 보다는 docker commit이 쉬운 방법이라서 추가 코멘트로 아는 내용을 설명 드렸는데... 도커 스킬을 레벨 1~4로 구분했을때 docker commit은 레벨2, docker build는 레벨3 정도에 해당한다고 생각됩니다.
https://sonhc.tistory.com/855 < docker 스터디 단계별 특징, 장/단점 > 레벨 1 : 기본, 입문 -> docker를 일단 사용해보자! 레벨 1.5 : 기본, 입문 ++ -> docker 실습 단계 레벨 2 : 활용 -> docker 환경을 저장/백업하고 배포해보자 (docker commit) 레벨 3 : 고급 -> 도커 환경을 효율적으로 배포해보자 (docker build) 레벨 4 : 전문가 -> 클라우드 서비스 배포/서비스하는 현업에서 필요한 기술로 추정.
배울수록 신기하고 사용할 수록 편리한 docker를 제가 혼자 스터디 삽질하면서 익힌 과정을 끄적인게 있으니 도커 스터디 레벨에 관심 있으시면 링크를 참고해 보세요.
그래서 저장/관리가 필요한 파일은 -v 볼륨 지장해서 공유하고 호스트쪽에 접근하고 저장되도록 사용하고 있습니다.
예를들면 -v /home/<hostuser>/share:/home/<containeruser>/share 해주면
도커 우분투 컨테이너내에서 ~/share 아래의 파일들은. 호스트쪽 ~/share 랑 동기화(?) 저장되어
편하게 사용하고 있습니다.
참고로 권한 문제 없으려면 호스트와 도커 우분투 상의 user 계졍의 uid. gid를 동일하게 셋팅하는게 좋습니다.
권한은 root로 설정 하였구요.
그리고 혹시 파이썬이 설치 된 부분도 동기화를 진행 할 수 있을까요? ^^;
저도 ubuntu 컨테이너에서 특정앱을 위한 -v 설정은 안해봤는데...
위 답변을 응용해 보면 파이썬 설치될 경로를 미리 -v 로 볼륨 지정해 보면 되지 않을까요?
예를들면 파이썬이 /usr/bin/python에 설치된다면 -v /home/<hostuser>/python:/usr/bin/python 지정해주면
호스트의 /home/<hostuser>/python 경로에 컨테이너의 파이썬이 저장될것 같습니다.
한번 시도해보세요.
답변 감사 합니다 ^^
아무래도 도커 이미지와 관련된 파일은 공유가 어려울수도 있어 보이네요.
해보지도 않고 잘못된 내용 답변달아 죄송합니다.
특정 파이썬 설치등 나만의 도커 환경이 필요할때는 dockerfile을 이용해 docker build 수행해서 이미지를 직접 만들어쓰는 방법도 있습니다.
dockerfile 문법과 빌드 방법을 익혀야하지만....
깨우치면 또 도커 활용에 신세계가 열리더라구요. 참고하세요.
아무래도 docker build 보다는 docker commit이 쉬운 방법이라서 추가 코멘트로 드립니다.
혹시 아래와 예시와 같은 상황이시면 docker commit 으로, 컨테이너 변경사항을 docker image로 저장해 둘 수 있습니다.
< 예시 >
1, ubuntu:18.04 같은 오피셜 ubuntu 배포한 docker image 로 컨테이너 실행
2. 컨테이너에서 python 등 필요한 패키지들 설치하고 필요한 셋팅 수행
-> 이때, 도커 컨테이너 망가지거나 삭제되서.... (문제 발생)
-> 도커 컨테이너 재실행(재생성) 되면, 2번에 셋팅한 내용 다 초기화 됨 = 컨테이너 변경 사항이 저장되지 못함
(오피셜 ubuntu 배포판 docker image로 컨테이너가 다시 생성되기 때문에, docker image 기준으로 초기화 되버림)
혹시 위 경우시라면, 2번까지 진행하고 docker commit 명령으로 1 + 2 상황을 docker image로 저장 할 수 있습니다.
< 해결책 >
1, ubuntu:18.04 같은 오피셜 ubuntu 배포한 docker image 로 컨테이너 실행
2. 컨테이너에서 python 등 필요한 패키지들 설치하고 필요한 셋팅 수행
3. $ sudo docker container ls -a 명령으로 현재 사용중인 컨테이너 NAMES 확인 (예시 ubuntu_test)
4. $ sudo docker commit -p ubuntu_test ubuntu_save
tip. sudo docker commit -p <현재 사용중인 컨테이너명> <새로 저장하고 싶은 컨테이너명>
5. $ sudo docker images 확인하면 ubuntu:18.04 같은 오피셜 ubuntu 배포한 docker image 에
추가로 방금 docker commit으로 저장한 ubuntu_save 라는 이미지가 생성됨 확인 가능.
이렇게 docker 컨테이너를 docker image로 저장/백업 해 둔 상태라면...
위 예시와 같은 상황에서 ubuntu_save 이미지로 컨테이너를 재생성해주면 1 + 2 상황이 모두 적용된 상태로
컨테이너가 실행 될 수 있습니다.
docker build 보다는 docker commit이 쉬운 방법이라서 추가 코멘트로 아는 내용을 설명 드렸는데...
도커 스킬을 레벨 1~4로 구분했을때 docker commit은 레벨2, docker build는 레벨3 정도에 해당한다고 생각됩니다.
https://sonhc.tistory.com/855
< docker 스터디 단계별 특징, 장/단점 >
레벨 1 : 기본, 입문 -> docker를 일단 사용해보자!
레벨 1.5 : 기본, 입문 ++ -> docker 실습 단계
레벨 2 : 활용 -> docker 환경을 저장/백업하고 배포해보자 (docker commit)
레벨 3 : 고급 -> 도커 환경을 효율적으로 배포해보자 (docker build)
레벨 4 : 전문가 -> 클라우드 서비스 배포/서비스하는 현업에서 필요한 기술로 추정.
배울수록 신기하고 사용할 수록 편리한 docker를 제가 혼자 스터디 삽질하면서 익힌 과정을 끄적인게 있으니
도커 스터디 레벨에 관심 있으시면 링크를 참고해 보세요.