1. docker image 확인
현재 실행 중인 Docker 이미지를 확인하려면 아래 명령어를 사용
docker ps

2. docker 실행해보기
Docker 컨테이너를 실행하려면 아래와 같은 명령어를 사용
$ docker run --ipc=host --network host --gpus all --name {$NAME} -it {$IMAGE}
# 예시
$ docker run --ipc=host --network host --gpus all -it ubuntu

처음 ubuntu 이미지를 받으면 git 과 sudo가 없기 때문에 update를 먼저 해주고 필요한 패키지를 설치
// 패키지 업데이트
# apt-get update
// sudo 설치
# apt-get install sudo
// git 설치
# sudo apt-get install git

도커 컨테이너와 나의 local host가 정말 독립된 환경인지 한번 실험을 해보겠다!
한번 도커 컨테이너 상에서 yolo git을 다운로드 받아보겠다.
# git clone <https://github.com/ultralytics/yolov5.git>


도커 컨테이너 안에서 YOLO 코드를 클론했지만 도커 컨테이너와 내 로컬은 독립된 환경이기 때문에 도커 컨테이너에서 yolo의 코드를 clone을 하더라도, 나의 local에는 어떠한 것도 없는 것을 확인할 수 있다.

⇒ 도커 컨테이너와 나의 local host 상 독립된 환경이 구성되었음을 이렇게 확인할 수 있다!!
3. docker 재실행
도커를 껐다가 다시 실행하면 내가 받았던 yolov5 repo가 없어진 것을 확인할 수 있다.

Docker 사용시 주의점
Docker 컨테이너(container)에 쓰여진 데이터는 기본적으로 컨테이너가 종료될 때 함께 사라짐.
- 이를 방지하려면 Docker 볼륨을 사용하거나 docker commit을 이용해 이미지를 저장해야 한다.
[Docker 볼륨 연결]
$ sudo docker run --ipc=host -v {local dir}:{docker dir} --gpus all -it {docker image}
도커 볼륨을 연결하면, 도커 컨테이너에서 data를 다운 받더라도 host에도 동일하게 저장되어 있는 것을 확인할 수 있고, 도커를 재실행하더라도 해당 데이터는 삭제되지 않는다!



4. docker Commit
볼륨을 연결하지 않고 도커 내에 있는 데이터와 환경을 전부 저장하고 싶다면,
docker commit을 사용하여 컨테이너에서 변경한 사항을 새로운 이미지로 저장할 수 있다.
$ docker commit [CONTAINER ID] [IMAGE NAME]

commit 후 컨테이너를 실행하면!
원래 기존 ubuntu 이미지는 git이 없어서 설치를 해주어야 했지만, git을 설치한 후 commit을 한 이미지에는 내가 설치한 패키지들이 온전히 남아있는 것을 확인할 수 있다.

5. docker를 사용할 때 주의할 점
- docker volume 연결하기
- 컨테이너 안에서 작업을 진행할 경우, 작업한 파일이나 코드가 컨테이너에만 저장되지만, Docker Volumes를 이용해 로컬 디렉토리와 컨테이너 디렉토리를 연결하면, 컨테이너 종료 후에도 데이터가 유지된다.
- volume을 묶지 않고 컨테이너 안에서만 작업하게 된다면, 추후 commit 단위로 관리를 한다고 하면 docker 컨테이너 안에 데이터와 코드들이 전부 포함되어 이미지의 용량이 커진다.
- 도커는 환경만 관리한다고 생각해야한다. 커밋으로 관리한다고 하더라도 컨테이너 안에 데이터와 코드들이 전부 포함된다면, 도커 허브 등 외부에 공유했을 때, 보안상 민감한 자료들이 포함될 수도 있기 때문에 데이터나 파일은 컨테이너 내부에서 관리하기보다는 로컬 저장소와 연결하여 외부에서 관리하는 것이 이상적이다.
- container안에서 폴더/파일 복사
- docker cp 커맨드를 사용하면 컨테이너에서 로컬로 파일을 복사할 수 있다.
- 또한, VSCode Docker Extension을 이용하면 컨테이너 내 파일을 쉽게 접근하고 수정할 수 있다.
- docker commit
- 컨테이너에서 변경 사항을 커밋하여 새로운 이미지를 만들 수 있다. 이는 Docker 환경에서의 작업 상태를 새로운 이미지로 저장하는 방식이다.
'virtual environment > Docker' 카테고리의 다른 글
| YOLO Docker 환경 구축 및 학습하기 (0) | 2025.06.10 |
|---|---|
| VSCode에서 Docker 컨테이너 개발 환경 연동 (0) | 2025.06.10 |
| Docker 이미지 확인 및 정리 방법 (0) | 2025.06.10 |
| Docker 컨테이너 실행 상태 확인 및 정리 방법 (0) | 2025.06.10 |
| Docker Hub 튜토리얼 (1) | 2025.06.10 |