Docker Ubuntu+Docker+Node.js (Hello World)

황제낙엽 2020.07.12 15:33 조회 수 : 3627

Ubuntu에 Docker를 설치하고 실행하여 Node.js로 웹서버를 구동하고 Hello World를 출력하는 테스트 프로젝트이다

 

 

Ubuntu를 처음 설치한 상태라면 root 계정으로 로그인이 불가할 것이다

  -> 비밀번호를 설정한 적이 없어서 비밀번호가 틀리다고 나온다

그래서 sudo -i 명령어로 root의 비밀번호를 초기화해주고 로그인 가능 상태로 만들어둬야 작업이 편하다 ( root로 전환후 비밀번호 변경 )

이후 다음의 절차로 테스트 프로젝트를 수행한다

 

 

* [터미널1] node.js의 최신 이미지(OS:Debian GNU/Lunux 9)을 다운받는다

user@~:~$ docker pull node

 

 

* [터미널1] 작업의 편이성을 위해 root계정으로 전환한다

user@~:~$ su -

 

 

* [터미널1] docker container를 실행한다 (host와 guest의 port는 8888로 연결하고 디렉토리도 공유시킨다)

root@~:~# docker run --name node_1 -it -p 8888:8888 -v ~root/tmp:/nodetmp/ node bash

 

 

* [터미널1] docker가 실행되면 container내로 진입하여 shell프롬프트가 깜박이는 상태가 된다

  위에서 연결한 디렉토리로 이동한다

root@~:/# cd nodetmp

 

 

* [터미널1] 디렉토리 이동후 프로젝트 디렉토리를 생성하고 이동한다

root@~:/nodetmp# mkdir project_nodejs

root@~:/nodetmp# cd project_nodejs

root@~:/nodetmp/project_nodejs#

 

 

* [터미널1] Node Package Manager를 초기화한다 (초기화시 입력해야하는 항목들마다 엔터하여 기본값으로 설정해도 무방하다)

root@~:/nodetmp/project_nodejs# npm init

 

 

* [터미널1] npm으로 http, express 패키지를 설치한다

root@~:/nodetmp/project_nodejs# npm install http

root@~:/nodetmp/project_nodejs# npm install express

 

 

* [터미널1] 터미널창을(터미널2) 추가로 오픈하고 root계정으로 전환한다

user@~:~$ su -

 

 

* [터미널2] container와 연결된 디렉토리에서 js를 생성하고 편집한다

root@~:~# cd ~root/tmp/project_nodejs

root@~:~/tmp/project_nodejs# vi app1.js

 

<app1.js 의 내용>

var http = require('http');

http.createServer(function (req, res) {

  res.writeHead(200, {'Content-Type': 'text/html'});

  res.end('Hello World with http');

}).listen(8888, function() {

  console.log('listening...');

});

 

 

* [터미널1] container내에서 node로 host에서 작성한 app1.js 를 실행한다

root@~:/nodetmp/project_nodejs# node app1.js

 

 

* host에서 브라우저를 실행하고 접속한다

hh1.png

 

 

 

 

* [터미널2] express모듈을 이용하여 app2.js 를 작성한다

root@~:~/tmp/project_nodejs# vi app2.js

 

 

* [터미널1] container내에서 node로 host에서 작성한 app2.js 를 실행한다

root@~:/nodetmp/project_nodejs# node app2.js

 

<app2.js 의 내용>

var express = require('express'); var app = express();

app.get('/', function(req, res) {

  res.send('Hello World with express');

});

app.listen(8888, function() {

  console.log('listening...');

});

 

 

* host에서 브라우저를 실행하고 접속한다

hh2.png

 

 

 

 

번호 제목 sitelink1 글쓴이 날짜 조회 수
243 Windows 11 Pro 환경의 WSL2(Windows Subsystem for Linux 2)에서 X11(그래픽 앱)을 실행   황제낙엽 2026.01.06 2672
242 경로 관련 별칭(alias)   황제낙엽 2025.12.19 2556
241 macOS 에서 finder 로 숨김 디렉토리, 파일을 조회   황제낙엽 2025.09.26 1654
240 특정 폴더 제외하고 가장 최근에 생성된 폴더 이름 가져오는 shell file 만들기   황제낙엽 2025.07.28 2592
239 [Copilot] WSL2 Ubuntu 실행 방식과 차이점   황제낙엽 2025.06.09 2569
238 [Gemini] docker pull 로 다운받은 ubuntu 이미지를 portainer 로 실행하여 접속   황제낙엽 2025.06.02 2582
237 Windows 11 Pro -> WSL2 (Ubuntu) -> Docker -> Portainer   황제낙엽 2025.05.30 2731
236 윈도우 11 설치 USB 만들기 가이드 https://blog.naver.com/cjs0308cjs/223694056158  황제낙엽 2025.01.10 3998
235 [bard] docker로 실행한 container에 터미널로 접속   황제낙엽 2024.02.01 3675
234 [2023. 11. 6.] 데이터베이스, GUI 클라이언트 환경의 Docker Compose 모음 https://blog.pages.kr/2819  황제낙엽 2024.01.29 3836
233 Docker Compose 문법 정리 (YAML)   황제낙엽 2024.01.29 3384
232 Docker Compose 명령어(실행,중지,삭제) https://docs.docker.com/compose/reference/  황제낙엽 2024.01.28 3859
231 Docker Compose 에 대한 이해와 사용법에 대한 포스팅 모음 https://docs.docker.com/compose/gettingstarted/  황제낙엽 2024.01.26 4095
230 Kubernetes 와 Docker 의 관계   황제낙엽 2024.01.26 3042
229 docker 를 windows 에서 실행하는 방법 3가지 정리   황제낙엽 2024.01.23 3752
228 windows + docker 설치에 대한 포스팅 모음   황제낙엽 2024.01.22 3547
227 윈도우 10 실행키 입력 명령어 목록 (Windows + R) https://haenny.tistory.com/217  황제낙엽 2023.07.12 7557
226 윈도우 10 "원격 데스크톱"의 "컴퓨터 목록" 정보 저장 위치 (from Bing)   황제낙엽 2023.07.11 4012
225 compress this drive to save disk space (이 드라이브를 압축하여 디스크 공간 절약)   황제낙엽 2023.05.09 4234
224 명령어 모음   황제낙엽 2023.05.06 3666