Docker 사용

윈도 시스템 기준

도커 이미지 보관할 곳 디렉토리 생성 부터~

docker image ls

#확인 명령

docker ps -a

샘플 이미지

itriGPU:itri

시작 명령

docker run --rm -it -p 8888:8888 --name itri10 -v E:\_Docker\itri\home\jupyter:/home/idz/ itri:itriGPU

#–rm 옵션은 1회성 컨테이너..

# -v옵션도 로컬경로 설정 연결

# -w 작업경로 변경(도커 실행시 기본 경로)

docker run -it -p 8888:8888 --name itri10 -v E:\_Docker\itri\home\jupyter:/home/idz/ -w /home/idz itri:itriGPU

#GPU, 쥬피터노트북 외부 접속위한 도커 실행

Docker run  -it --gpus all -p 8888:8888 itriGPU:latest

컨테이너 지속 사용 명령 : 컨테이너 네임 지정 및 셀 접속

docker run -it -p 8888:8888 --name itir12 itriGPU:lastest /bin/bash
docker save -o itri.tar [imagename]
docker load -i [File.name]

현상태 저장하여 새로운 이미지 생성

#컨테이너 상태를 이미지로 저장

현재 이미지네임이 itri:itri12 인 경우,

docker commit [container_name] itri:itri12

#생성된 이미지 tar로 내보내기

docker save -o itri12.tar itri:itri12

#생성된 이미지 로드

docker load -i itri12.tar

#실행

docker run -it -p 8888:8888 itri:itri12

#컨테이너를 tar로..

docker export <컨테이너명 or 컨테이너ID> > xxx.tar

#export 커맨드를 통해 만들어진 tar 파일을 다시 docker image로 생성

docker import <파일 or URL> - [image name[:tag name]]

ex) docker import itri.tar itrigan:latest
* image name은 lowercase

(중요) export – import 와 save – load의 차이
docker export의 경우 컨테이너를 동작하는데 필요한 모든 파일이 압축된다. 즉, tar파일에 컨테이너의 루트 파일시스템 전체가 들어있는 것이다. 반면에 docker save는 레이어 구조까지 포함한 형태로 압축이 된다.
즉, 기반이 되는 이미지가 같더라도 export와 save는 압축되는 파일 구조와 디렉터리가 다르다.
결론은 export를 통해 생성한 tar 파일은 import로, save로 생성한 파일은 load로 이미지화 해야 한다.

※ root 권한으로 실행하지 않을 경우, 액세스 권한이 없는 파일들이 포함되지 않는 문제가 발생할 수 있다.

docker ps -a

#컨테이너 재실행

docker start [container name]

#컨테이너 접속 (컨테이너 실행 후)

docker exec -it [container_name] /bin/bash

#컨테이너 멈춤

docker stop [container_name]

#도커내 파일 추출

docker cp <container_name_or_id>:<source_path> <destination_path>
ex) docker cp mycontainer:/path/to/directory/ /path/on/host/
ex) docker cp itriGAN:/GAN/testimg %userprofile%\testimg

관련 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다