[ Docker ] 시작하기

sese·2022년 12월 14일

새싹

목록 보기
37/39

[ Container란? ]

Linux 기반의 기술 중 하나로 필요한 라이브러리와 어플리케이션을 모아 별도의 서버처럼 구성한 것

[ Docker란? ]

Go 언어로 작성된 Linux 컨테이너 기반으로 하는 오픈소스 가상화 플랫폼


[ Docker 설치 ]

다음 명령어를 통해 도커가 잘 설치 되었는지 확인할 수 있다.

// 존재하는 이미지를 확인할 수 있다
$ docker images

[ Docker 이미지 설치 ]

원하는 이미지 검색 후 오른쪽 명령어로 이미지를 다운받을 수 있다.

$ docker pull node

[ Docker 기본 명령어 ]

  • 이미지 삭제 : 해당 이미지로 만들어진 컨테이너를 먼저 삭제해야한다.
$ docker rmi 이미지이름(이미지ID)
  • 컨테이너 생성
// 해당 이미지를 이용하여 임의의 이름으로 컨테이너가 생성된다
$ docker run 이미지이름
// 컨테이너의 이름을 지정해줄 수도 있다
$ docker run --name 컨테이너이름 이미지이름
  • 컨테이너 실행/중지
$ docker start 컨테이너이름(컨테이너ID)
$ docker stop 컨테이너이름(컨테이너ID)
  • 컨테이너 삭제
$ docker rm 컨테이너이름(컨테이너ID)
  • 컨테이너 목록
// 현재 실행중인 컨테이너 목록
$ docker ps
// 모든 컨테이너 목록
$ docker ps -a

[ MySQL 이미지로 컨테이너 만들어보기 ]

-d 백그라운드에서 컨테이너 실행
-p 호스트 포트 : 컨테이너 포트 (호스트 포트와 컨테이너 포트를 연결)

// MySQL은 실행 시 환경변수 설정을 꼭 해줘야 한다
// 외부에서 3308번 포트로 접속하면 컨테이너의 3306번 포트에 접속이 된다
$ docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=1234 --name mysql-container mysql

[ Dockerfile이란? ]

  • 필요한 최소한의 패키지를 설치하고 동작하기 위한 자신만의 설정을 담고 있는 파일
  • 즉, 기본 이미지가 아닌 기본 이미지를 바탕으로 설정이 담긴 이미지를 만들기 위해 사용하는 파일

[ Dockerfile로 이미지 만들기 ]

Dockerfile

FROM mysql
ENV MYSQL_ROOT_PASSWORD=1234
EXPOSE 3306

이미지 만들기

$ docker build -t 이미지이름 도커파일경로
// docker build -t mysql .
// 현재 위치에 있는 도커파일로 mysql이라는 이미지를 생성한다

[ Dockerfile로 코드 실행하기 ]

index.js

const express = require("express");
const app = express();

app.get('/', (req, res) => {
    res.send(req.query.name);
})

app.listen(8000, () => {
    console.log("Server is open, port: 8000");
})

Dockerfile

# 부모 이미지 지정 (node 16버전)
FROM node:16
# 작업 디렉토리 생성
WORKDIR /app
# 현재 위치 / 작업할 컨테이너 위치
COPY . /app
# 패키지 설치
RUN npm install
# 실행 포트
EXPOSE 8000
# node index.js
CMD [ "node", "index.js" ]

이미지 만들기

$ docker build -t node_image .

컨테이너 생성

$ docker run --name node_project -p 8080:8000 node_image

[ React 도커 파일 ]

FROM node
WORKDIR /app
COPY . /app
EXPOSE 3000
RUN npm install

CMD [ "npm", "start" ]
profile
예전 글은 다크모드로 봐야 잘 보일 수도 있습니다.

0개의 댓글