Docker 사용기

 

Docker 사용기

고래

동기

저번 학기때 큰 아쉬움을 남겼던 시스템 프로그래밍 (CS230)을 복습하려 Lab sessions을 보던 중, 운영체제의 문제로 파일(특히 Autograders가)이 실행 안되는 등 문제가 있었다. 실행에 필요한 Linux 환경을 구축하기 위해 평소에 관심이 많았던 Docker를 사용하기로 했다.

Docker란?

도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다 - Wiki

정확하게 어떤 뜻인지는 모르겠지만,

  1. 기존 Virtual Machine보다 더 빠르다.
  2. 그러면서 배포하기도 더 간단하다. (Image라는 단위를 이용)
  3. 그러면서 Layer 방식 메모리 관리를 통해 저장해야 하는 Image 크기를 줄일 수 있다.

목표

  1. docker를 다운받아야 한다.
  2. docker에 Ubuntu를 올려야 한다.
  3. Ubuntu에 Lab sessions 파일들을 올려야 한다.
  4. Autograders가 실행이 잘 되는지 확인해야 한다.

1. 설치

Docker for mac 를 보고 다운받으면 된다. 링크에 설명되어 있지만, Apple Silcon Macbook을 사용하고 있을 경우 Rosetta 2를 먼저 다운받아야 한다.

2. Ubuntu 올리기

sudo docker run -i -t --name <name> ubuntu

명령어를 입력한다.
Make Docker

Ubuntu image를 ‘cs230’이라는 별명으로 docker에 올린다는 뜻이다. exit 명령어를 통해서 올려진 ubuntu를 멈출 수 있다. (/bin/bash 명령어를 치지 않아도 된다.)
웬만한 경우에는 sudo를 치지 않아도 된다.

종료된 ubuntu를 다시 실행하고 싶으면 다음 명령어를 입력하면 된다.

docker start <name>
docker attach <name>

Run Docker

~ directory에 적당한 폴더(cs230)을 만들어 준다.

Make folder

3. Ubuntu에 파일 올리기

cs230 datalab-handout 파일을 Ubuntu에 올릴 것이다.
localhost와 docker container간 파일 전송은 다음 방법을 이용한다.

docker cp <from/file name> <to>

위와 같은 상황에서는

docker cp <localhost path>/<file name> <mycontainer>:<container path>

을 이용하면 된다.
Move File

4. 실행 여부 체크

잘 되지는 않는다 ㅠㅠ 아마도 README를 잘 읽지 않는 나의 불찰인 거 같다.

PS