로컬에 있는 파일과 도커 이미지를 연결하는 방법
1. CP(copy) : 호스트와 컨테이너 사이에 파일을 복사
2. Volume : 호스트와 컨테이너 사이에 공간을 마운트
=> 저장 공간을 다른 장치에서 접근할 수 있도록 경로를 허용함
=> 마치 하나의 저장 공간을 이용하는 것 처럼 보이게 함
pacman canvas 게임 파일을 활용하여 볼륨과 마운트 개념을 실습해본다.
*** 우분투 사용자는 모든 명령어 앞에 sudo를 붙여야함.
(서버는 httpd 사용)
https://github.com/platzhersh/pacman-canvas
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
출력되는 게임 화면을 확인한다.
'Orchestration > Docker' 카테고리의 다른 글
[Mac OS]Docker 란? (Mac OS Docker 설치, Docker 실습, docker/whalesay 실습) (0) | 2023.01.05 |
---|