https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
Docker Engine을 설치하였으면 터미널에서 다음 명령어를 입력합니다.
# docker 그룹에 현재 사용자 추가
sudo usermod -aG docker $USER
#docker 설치 확인
docker --version
소스 내려받을 폴더를 생성합니다.
mkdir pintos
소스 저장소를 fork 받아서 자신의 저장소를 만든 다음에 내려받습니다.
(source repository: https://github.com/ThierrySans/CSCC69-Pintos)
git clone [github link] .
프로젝트 디렉터리에 docker-compose.yaml 파일을 생성한 다음, 아래 내용을 입력합니다.
services:
dev:
image: thierrysans/pintos
container_name: pintos
volumes:
- .:/pintos
working_dir: /pintos
hostname: pintos
tty: true
entrypoint: bash
해당 파일이 있는 위치에서 터미널을 연 다음에 아래 명령어를 입력합니다.
docker compose up -d
그러면 이미지를 다운 받은 다음에 docker container가 실행됩니다.
Visual Studio Code에서 Docker 확장을 눌러보면 해당 컨테이너가 표시됩니다. 여기서 “Attach Visual Studio Code” 메뉴를 선택하면 Visual Studio Code로 해당 컨테이너로 들어갈 수 있습니다.

컨테이너로 들어온 다음, “Open Folder”를 누르고 소스가 있는 경로를 선택합니다. (docker-compose.yaml을 보면 경로가 /pintos로 설정되어 있습니다.)

Visual Studio Code로 Container에 들어가면 확장을 따로 설치를 해야합니다. 여기서 “Native Debug”를 설치합니다. 그리고 “실행 및 디버그” 에서 “create a launch.json” 눌러서 launch.json 파일을 생성합니다.

launch.json 파일을 생성한 다음, 아래 내용을 입력합니다.
{
"version": "0.2.0",
"configurations": [
{
"type": "gdb",
"request": "attach",
"name": "Attach to Pintos",
"executable": "${workspaceFolder}/src/threads/build/kernel.o",
"target": ":1234",
"remote": true,
"cwd": "${workspaceRoot}",
"gdbpath": "/pintos/src/utils/pintos-gdb"
}
]
}
pintos를 실행할 때, --gdb 플래그를 입력하면 디버깅 모드로 실행을 합니다.