도커 이미지는 틀이라 생각하면 된다.
https://hub.docker.com/_/node/
node - Official Image | Docker Hub
Docker Official Images are a curated set of Docker open source and drop-in solution repositories. Why Official Images? These images have clear documentation, promote best practices, and are designed for the most common use cases.
hub.docker.com
이거 노드 이미지이다.
이걸 깔고 node 명령을 하면 컴퓨터에 노드가 없어도 사용할 수 있는 것이다.
간단하게 node.js로 도커를 연결하는 걸 해보자
먼저 서버를 하나 만들어보겠다.
npm init -y
npm install express
index.js 파일을 만들고
const express = require('express');
const app = express()
app.get('/', (req, res) => {
res.send('Docker to Gram!');
})
app.listen(8087, () => console.log('Server running in 8087'));
이런 파일을 만들었다. 이러면
이제 8087 포트로 들어가면 아래 같은 사이트가 나온다

그런데 이걸 도커 위에서 돌릴 수 있다.
dockerfile을 만들자.

이렇게 dockerfile을 만들면 된다.
위에서부터 from node를 통해 node 이미지를 설치한다.
이러면 노드 20 버전이 도커 위에 설치된다.
WORKDIR 로 내가 /app이라는 디렉토리를 사용할 것을 명시한다.
/app이란 디렉토리가 컨테이너에 생긴다.
이걸 기본 디렉토리로 사용한다.
copy 명령을 이용해 package 파일 2개를 ./ 현재 디렉토리에 복사한다.
여기선 /app 디렉토리에 넣는 것이다.

이렇게 두개의 파일이 설치된걸 볼 수 있다.
run npm ci 는 run npm install과 유사하다.
다만 ci를 사용하면 내가 업로드한 패키지 버전을 이용해서 설치하기에 권장한다.
이제 이 명령을 실행하면 docker 이미지가 만들어진다.
fun-docker는 tag를 지정한 것이다.
-f Dockerfile은 사용할 파일 이름을 지정한 것이다.
. 은 현재 디렉토리를 사용한다.

fun-docker라고 이미지가 만들어졌다.
이미지를 만들었으니 이제 컨테이너를 만들자
-d 는 백그라운드에서 실행을 뜻한다.

도커에 8080 포트와 8087 포트를 연결한다.
8080은 로컬 호스트이고 8087은 index.js 파일에 설정한 포트 번호이다.
호스트에서 도커에 접속할 수 있게 된다.

위 사진처럼 업로드할 repository를 넣어서 태그를 지정하자
이렇게 해서 docker hub에 올리면 된다

로그인을 하고 push를 하면 된다.
이 사이에 도커 허브에 docker-example이란 repository를 만들어 두자

이렇게 도커 허브에 이미지가 올라갔다.
이번에는 httpd 이미지를 사용해보자
httpd 이미지는 apache 서버를 만들때 사용한다.
https://hub.docker.com/_/httpd
httpd - Official Image | Docker Hub
Quick reference Supported tags and respective Dockerfile links 2.4.62, 2.4, 2, latest, 2.4.62-bookworm, 2.4-bookworm, 2-bookworm, bookworm2.4.62-alpine, 2.4-alpine, 2-alpine, alpine, 2.4.62-alpine3.20, 2.4-alpine3.20, 2-alpine3.20, alpine3.20 Quick r
hub.docker.com
docker pull httpd로 이미지를 생성한다.
이제 컨테이너를 만들자
이미지를 run 하면서 이름과 포트를 설정해주자

도커 컨테이너를 삭제하려면 먼저 정지를 시키고 삭제해야한다.

컨테이너 이름 앞에 --force를 입력해서 강제로 종료시켜도 된다.
도커 이미지로 ws3이란 컨테이너를 만들었다
이후 docker exec -it ws3 /bin/bash로 컨테이너를 실행시킬 수 있다.

docker run -p 8088:80 -v C:\Users\htdocs:/usr/local/apache2/htdocs/ httpd
이 명령어를 통해 내 로컬에서 사용할 파일을 컨테이너와 연결할 수 있다.
docker exec ws3 pwd
이 명령어로 컨테이너의 위치를 파악한다.
여기서 index.html을 출력할 수 있다.
https://gitlab.com/yalco/practice-docker
Channel Yalco / practice-docker · GitLab
GitLab.com
gitlab.com
연습을 위해 이런 깃랩 주소에서 clone을 하고 프로젝트 구성을 확인했다.

위처럼 dockerfile이 백, 프론트, 데이터베이스에 하나씩 있다.
여기서 각 도커를 빌드 할 수 있다
docker build -t frontend-img .
frontend-img란 이름의 이미지를 만든다.
8080포트를 연결한다. pwd는 현재 디렉토리를 뜻한다.
frontend-con이란 컨테이너를 만든다.
docker run --name frontend-con -v ${pwd}:/home/node/app -p 8080:8080 frontend-img
docker-compose up
이걸로 docker-compose.yml을 실행하면 각각의 이미지를 설치하지 않아도 한번에 된다.
한번에 이미지를 다 만들수 있다.
'도커' 카테고리의 다른 글
| mySQL 서버 도커로 실행하기 (0) | 2024.11.15 |
|---|---|
| 도커 허브에서 우분투를 받아 실행해보기 (0) | 2024.11.15 |
| 도커 이미지 만들고 hub에 올리기, 올린 도커 이미지 받아서 실행해보기 (0) | 2024.11.15 |
| 도커와 로컬 연결해서 모델 돌리기 (1) | 2024.09.01 |
| 도커에 쿠다 설치 (0) | 2024.08.31 |