Orchestration/Docker

[Mac OS]Docker Copy, Dockerfile (pacman/canvas)

chanstory 2023. 1. 5. 21:25
반응형

로컬에 있는 파일과 도커 이미지를 연결하는 방법

1. CP(copy) : 호스트와 컨테이너 사이에 파일을 복사

 

2. Volume : 호스트와 컨테이너 사이에 공간을 마운트

   => 저장 공간을 다른 장치에서 접근할 수 있도록 경로를 허용함

   => 마치 하나의 저장 공간을 이용하는 것 처럼 보이게 함

 

 

pacman canvas 게임 파일을 활용하여 볼륨과 마운트 개념을 실습해본다.

*** 우분투 사용자는 모든 명령어 앞에 sudo를 붙여야함.

(서버는 httpd 사용)

https://github.com/platzhersh/pacman-canvas 

 

GitHub - platzhersh/pacman-canvas: An old classic, re-written in HTML5.

An old classic, re-written in HTML5. Contribute to platzhersh/pacman-canvas development by creating an account on GitHub.

github.com

 

1. 레포지토리 클론 (git init 실행 후)

git clone git@github.com:platzhersh/pacman-canvas.git

 

 

2. 서버 실행 및 동작 확인

docker container run --name 컨테이너_이름 -p 818:80 httpd

- 818 = localhost 포트번호  // 80 = 컨테이너 포트번호

- localhost:818에 접속하여 동작 및 데이터 확인

 

3. 새로운 터미널을 열어 docker container cp 명령어를 통해 로컬 호스트에 있는 파일을 컨테이너로 전달한다.

(clone한 디렉토리 내부에서 실행)

docker container cp ./ 컨테이너_이름:/usr/local/apache2/htdocs/

- 현재 디렉토리 모든 파일을 뒷경로로 복사한다. (컨테이너 이름 : 2번에서 생성한 이름과 동일)

 

 

4. 컨테이너 내에 pacman canvas 게임 파일이 복사되었으므로 이미지 파일을 생성한다 (commit)

docker container commit 컨테이너_이름 pacman:1.0

docker images 명령어로 생성된 이미지 파일 확인

 

 

5. 생성된 pacman:1.0을 1000번 포트에서 웹서버로 구동한다.

docker run --name my_game -p 1000:80 pacman:1.0

localhost:1000 에서 서버가 잘 동작하고 있는지 확인한다.

 

 

6. Docker Image 빌드를 위한 Dockerfile생성

dockerfile를 편한 편집기로 생성하여 아래 내용을 작성한다.

FROM httpd:2.4 
COPY ./ /usr/local/apache2/htdocs/

// 베이스 이미지를 httpd:2.4로 사용하고

// 현재 경로의 파일을 뒷 경로로 복사한다.

 

 

7. docker build 명령을 통하여 도커 이미지 파일 생성

docker build --tag pacman:2.0 .

// 제일 뒤에 . 빼먹지 말고 입력 (현재 디렉토리 내 모든 파일 이란 뜻)

 

 

8. 생성된 이미지를 이용해 1001포트에서 웹서버로 구동한다.

docker run --name my_game2 -p 1001:80 pacman:2.0

출력되는 게임 화면을 확인한다.

반응형