Docker 사용기
동기
저번 학기때 큰 아쉬움을 남겼던 시스템 프로그래밍 (CS230)을 복습하려 Lab sessions을 보던 중, 운영체제의 문제로 파일(특히 Autograders가)이 실행 안되는 등 문제가 있었다. 실행에 필요한 Linux 환경을 구축하기 위해 평소에 관심이 많았던 Docker를 사용하기로 했다.
Docker란?
도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다 - Wiki
정확하게 어떤 뜻인지는 모르겠지만,
- 기존 Virtual Machine보다 더 빠르다.
- 그러면서 배포하기도 더 간단하다. (Image라는 단위를 이용)
- 그러면서 Layer 방식 메모리 관리를 통해 저장해야 하는 Image 크기를 줄일 수 있다.
목표
- docker를 다운받아야 한다.
- docker에 Ubuntu를 올려야 한다.
- Ubuntu에 Lab sessions 파일들을 올려야 한다.
- Autograders가 실행이 잘 되는지 확인해야 한다.
1. 설치
Docker for mac 를 보고 다운받으면 된다. 링크에 설명되어 있지만, Apple Silcon Macbook을 사용하고 있을 경우 Rosetta 2를 먼저 다운받아야 한다.
2. Ubuntu 올리기
sudo docker run -i -t --name <name> ubuntu
명령어를 입력한다.
Ubuntu image를 ‘cs230’이라는 별명으로 docker에 올린다는 뜻이다.
exit 명령어를 통해서 올려진 ubuntu를 멈출 수 있다. (/bin/bash 명령어를 치지 않아도 된다.)
웬만한 경우에는 sudo를 치지 않아도 된다.
종료된 ubuntu를 다시 실행하고 싶으면 다음 명령어를 입력하면 된다.
docker start <name>
docker attach <name>
~ directory에 적당한 폴더(cs230)을 만들어 준다.
3. Ubuntu에 파일 올리기
cs230 datalab-handout 파일을 Ubuntu에 올릴 것이다.
localhost와 docker container간 파일 전송은 다음 방법을 이용한다.
docker cp <from/file name> <to>
위와 같은 상황에서는
docker cp <localhost path>/<file name> <mycontainer>:<container path>
을 이용하면 된다.
4. 실행 여부 체크
잘 되지는 않는다 ㅠㅠ 아마도 README를 잘 읽지 않는 나의 불찰인 거 같다.
PS
- 이번주에는 Docker, UCPC 예선, Rust로 Http 서버 만들기(Cubby)를 할 예정이다.
- 다음주에는 rust and webassembly를 공부할 것이다.
- 이 글은 subicura님의 블로그, pyrasis님의 블로그, 언젠간 프로님의 블로그, Docker Docs를 토대로 작성되었다. 인터넷에 기술 관련 글을 올려주시는 모든 분들께 무한한 감사를 표하며 글을 마친다.
PREVIOUS근황