도커 이미지 및 컨테이너 생성

단밤v 2022. 12. 2. 22:14
728x90
반응형

안녕하세요. 터미네입니다.

docker 이미지 생성과 docker 컨테이너 생성에 대해 포스팅하겠습니다.

 

이전 포스팅에서 도커 튜토리얼 실습을 진행했습니다.

요약하면 아래와 같습니다.

 

1. Clone : 해당 디렉토리에서 깃에 있는 소스를 다운받기
2. Build :  깃에서 다운받은 소스를 통째로 이미지를 생성
3. Run : 도커 이미지 생성 후, 만들었던 이미지로 도커 구동 ( 도커 컨테이너 실행)

 

위 과정이 생소하시거나, 궁금하시면 아래 배너를 남겨드리겠습니다.

한 번 살펴보시면 충분히 이해가 되실거에요.

 

 

도커 튜토리얼 실습

안녕하세요. 이번 포스팅에서는 도커 설치 후, 튜토리얼 실습을 진행해보겠습니다. 도커를 설치 후에 처음 실행하면 아래 그림과 같이 나올거에요. 따라하는 것은 어렵지 않습니다. 아래 그림에

danbam.asbai.xyz

 

제가 해볼 것은 깃에서 소스를 다운받아서 하는 것이 아닌
직접 해당 디렉토리에 제가 임의로 개발한 소스로
도커 이미지를 생성 후
도커 컨테이너를 구동해보려고 합니다.

 


맥기반이든 윈도우 기반이든
도커 명령어는 동일하니
이제부터 순서대로 진행할 사항들을 쭉 살펴보셔서
이해하신 후에 다시 한 번 읽으시고
천천히 따라해보시는 것을 추천 드립니다.

우선 맥기준으로
testServer라는 프로젝트명으로
디렉토리(폴더)를 만들어 보겠습니다.

제 폴더 경로는 /Users/termina/docker/testServer 입니다.

 

testServer 폴더 안에 
디렉토리 및 파일 구성은
nodejs 프로젝트 기반으로 작성해보겠습니다.

우선 이해를 돕기 위해 디렉토리 구성은 생략하고
 파일 구성은 아래와 같이 세 개로 하였습니다.

testServer 폴더 안에는


1. package.json
2. app.js
3. Dockerfile

 

로 구성하였습니다.

 

소스는 아래와 같이 간략하게 구성해보았습니다.

간략하게 주석도 달아놨으니 참고해주세요.

 

 

1. package.json

{
    "name": "test",
    "version": "1.0.0",
    "description": "Node Server Test",
    "main": "app.js",
    "scripts": {
      "start": "node app.js"
    },
    "author": "",
    "license": "ISC",
    "dependencies": {
      "express": "^4.16.4"
    }
  }

2. app.js

const express = require('express')
const app = express()
//앱은 서버를 시작하며 3000번 포트에서 연결
const port = 3000

//루트 URL(/) 또는 라우트에 대한 요청에 “Hello World!”로 응답
app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

3. Dockerfile

FROM node:16
# 도커 컨테이너 내에 앱 디렉터리 생성
WORKDIR /app

#npm install 을 위해, package.json과 package-lock.json을 먼저 copy해둠
# 와일드카드를 사용
COPY package*.json /app/

RUN npm install

# Docker 이미지 안에 앱의 소스코드를 넣기
COPY . /app

# 포트 3000으로 세팅
EXPOSE 3000

# 컨테이너가 구동시 실행할 명령어
# npm start : package.json의 scripts에 있는 start 명령어를 실행
CMD ["npm", "start"]

 

자 이제 도커 이미지를 생성 해볼까요?

 

CLI를 생성하기 전에 위 세 개의 소스가 있는 폴더(디렉토리)로 가셔야되요.

 $ cd /Users/termina/docker/testServer

 

그 다음에는 이미지를 생성해 보시죠.

$ docker build --tag=testimage .

이미지 이름을 testimage라고 했습니다. 

주의하실점은 대문자를 쓰지 못한다는 것이에요.
그리고 또 중요한건 위 명령어에 맨 뒤 점이 있습니다. 

이건 꼭 넣으셔야 되요.
왜 넣어야 되는지는 다음 포스팅에서 docker 명령어에 대해 정리하도록 하겠습니다.

 

도커 이미지 생성 CLI 실행

 

자 마지막으로 도커 컨테이너를 구동해보겠습니다.

$ docker run --name=test_container -p 3000:3000 testimage

 

컨테이너 명은 test_container로 지었습니다.
포트는 3000:3000으로 했는데,
앞의 3000은 호스트 시스템에서 사용할 포트번호
뒤의 3000은 도커 컨테이너에서 사용할 포트번호 입니다.

그리고 앞서 testimage를 만들었는데 

컨테이너 생성시 testimage로 만들기 위해 

cli명령어에 포함시켜서 실행합니다.

 

그러면 아래와 같이 나오실거에요.

도커 컨테이너 실행 후, 구동여부 확인

http://localhost:3000이 listening 중이라니

웹 브라우저로 띄워봐야겠죠?

 

웹페이지에 Hello World! 가 나오네요 ^^

 

여기까지 잘 따라오셨으면

도커 이미지 생성 및 컨테이너 생성을 성공적으로 다 완료하신거에요!

 

도커 이미지 생성 및 컨테이너 생성은 해보았는데

실제 프로젝트소스로 도커 이미지 및 컨테이너 생성은 어떻게 해야될지

궁금하실거에요.

 

제 티스토리에서 카테고리 NodeJS가 있는데
추후에 NodeJS를 어느정도 마무리 하면
그 소스로 docker 이미지 생성 및 컨테이너 생성을
포스팅 할 계획입니다.

 

추후 포스팅 기대해주세요!

 

여기까지 docker 이미지 생성 및 컨테이너 생성에 대해 포스팅을 마무리 하겠습니다.
긴글 읽어주셔서 감사드리고
궁금하신 점이 있으시면 댓글 남겨주세요.
친절히 설명 드리겠습니다.

728x90
반응형

'Docker' 카테고리의 다른 글

docker 명령어 정리  (0) 2023.07.11
docker volume 사용하기  (0) 2022.12.02
도커 튜토리얼 실습  (0) 2022.12.01
맥북 docker 설치  (0) 2022.12.01