미션: Docker image를 다운받아서 컨테이너를 실행 필요한 라이브러리를 설치해서 실험환경을 구축해보자
내가 구축하고자 하는 실험 환경
- torch>=1.6.0
- torchaudio>=0.6.0
- numpy
- scipy
- scikit-learn
- tqdm
- pyyaml
이 실험환경을 하나의 image로 만들어보자!
도커에서는 하나의 이미지를 저장소 repository라고 부른다
- Push : image 업로드
- pull : image 다운로드
- diff : Image 차이 확인
- commit : 새로운 Image 생성
1. Docker hub에서 image 검색
Docker hub는 Git hub처럼 사용자들이 이미지들을 오픈해서 사용자 간에 필요한 이미지를 공유할 수 있는 공간이다.
내가 필요한 image를 검색해서 다운받아 사용할 수 있고 언제든지 사용자가 구축한 이미지를 업로드해서 다른 사람들과 공유할 수 있다.
#docker search ubuntu
image download 할때, namespace
일반적으로 도커가 제공하는 공식 이미지에는 네임스페이스가 없다. 네임스페이스는 이미지 이름에서 슬래시(/)로 구분되며, 슬래시 앞부분이 네임스페이스가 되고, 슬래시 뒷부분이 실제 image name. 도커의 공식 저장소에서는 사용자 이름을 네임스페이스로 사용한다. (예를 들어, 내가 만든 이미지라면 rabo/ubuntu)
공식이미지를 사용하고 싶다면 /앞에 사용자의 이름이 붙지 않는 것을 다운받아 사용하면 된다.
image 확인해보기
지금 현재 내 pc에 존재하는 image들을 보고 싶으면 아래 명령어로 목록을 확인할 수 있다.
#docker images
전에 다운받아 둔 게 몇 개 있어서, 위처럼 3가지 Image가 출력되었다.
2. image를 pull 하기 (image 다운로드)
dockerhub로부터 image를 다운받는것인데 방법에는 2가지가 있다.
#docker pull ubuntu:latest (최신 버전다운)
위의 명령어로 Pull(download) 해오면 아래 맨 윗줄에 최신 버전의 Ubuntu image가 다운받아진 것을 볼 수 있다.
3. 생성된 image 실행해서 container로 만들기
#sudo docker run -ti ubuntu:latest
docker run (<옵션>) <이미지 식별자:태그>
- —name : 만들 컨테이너의 이름을 붙여줄 수 있음
- —ti : 뒤에는 이미지 이름이나 이미지 id를 붙여준다. -t와 -i 옵션을 같이 쓴 것인데 컨테이너를 종료하지 않은 채로, 터미널의 입력을 계속 컨테이너로 전달하기 위해서 사용한다.
- 생성하면 container안으로 들어오게 된다. (exit 하면 나갈 수 있음)
잠깐 헷갈려서 알아본 결과: container의 상태는 4가지로 구분된다.
docker run 명령어는 실제로 다음의 세 명령어를 한 번에 실행하는 것과 같다.
- docker pull : 이미지를 다운로드한다. docker run 명령어는 이미지가 로컬에 없으면 이미지를 다운로드한다.
- docker create : 이미지로부터 컨테이너를 생성한다.
- docker start : 컨테이너를 시작한다.
javacan.tistory.com/entry/docker-start-2-running-container
나는 run으로 실행하고 bash shell에서 exit로 container를 종료해 버렸기 때문에 다시 컨테이너를 실행하기 위해서는
아래 두 단계로 컨테이너를 열고 실행할 수 있다.
#docker start rabo_clova : 컨테이너를 시작한다
#docker exec -ti rabo_clova bash : 컨테이너를 실행한다
여기까지 필요한 base image를 pull(다운받아) container를 생성하고 실행하는 것까지 완성했다.
이제 container에 필요한 라이브러리를 설치해서 해당 container를 Image로 새로 배포하는 것까지 다음 포스팅에서 완성하도록 하겠다!
'Operating System > Docker' 카테고리의 다른 글
[Docker] Docker이해하기6. Docker image를 tar파일로 save/load (0) | 2021.01.07 |
---|---|
[Docker] Docker이해하기5. docker image 만들어보기 2 (0) | 2021.01.07 |
[Docker] Docker이해하기3. 도커 이미지(image) (0) | 2021.01.06 |
[Docker] Docker이해하기2. 도커 컨테이너 (Docker container) vs VM (0) | 2021.01.06 |
[Docker] Docker이해하기1 . 가상화 개념 (0) | 2021.01.06 |