TIL 07

김지우·2022년 11월 9일
0

TIL

목록 보기
7/16
post-thumbnail

TD: review

Docker 실행 방법과 포트 포워딩에 대하여...

가상머신의 문제점인 로딩, 부팅 속도의 문제를 해결하기 위한 Docker, 가상 머신과 비슷하지만 가상머신보다 훨씬 빠르고, 자원을 효율적으로 사용하는 프로그램이다. 오늘은 이 Docker와 Docker의 포트 포워딩에 대해 배웠고 실습해 보았다.



Docker

Docker란 Go언어로 작성된 리눅스 컨테이너 기반으로하는 오픈소스 가상화 플랫폼이다.

  • Docker의 작동

    도커는 개발 환경 요소들이 설치된 모습을 이미지로 저장 한 후에 클라우드로 올리는 방식을 사용한다. 이 이미지들이 서로 연결되서 동작하는 설정을 Dockerfile로 저장한다.

    새로운 컴퓨터에서 사용할 경우 복사되어 있는 이미지를 다운받아 설치하여 실행된다.

    이러한 실행 방법 때문에 가상머신보다 훨씬 빠르고 불필요한 추가적인 운영체제를 설치할 필요가 없어진다.


Docker 장점

노드나 Mysql 등 프로그램이 이미 설치된 Docker(Dockerfile)은 공유가 가능해서 한 번만 Dockerfile 을 만들면 누구나 한 번에 개발 환경을 공유 받을 수 있다.

  • 하나의 운영체제로 통일하니 운영체제의 충돌이 일어나지 않는다.
  • 가벼운 가상 컴퓨터
  • 프로그램(개발 환경 요소)을 미리 설치된 Dockerfile 공유로 인해 다른 사용자가 개발 환경에 매우 편하게 접근할 수 있다.


Dockerfile 작성

FROM
COPY
WORKDIR
CMD

FROM 리눅스:최신버전 : 리눅스의 최신 버전이 깔린 컴퓨터가 한대 만들어진다.

FROM node:14 : node, npm, yarn이 모두 설치된 리눅스 컴퓨터가 하나 생기게 된다.

COPY ./index.js /myfolder/ : index.js 파일에 있는 모든 소스 코드를 가상 컴퓨터 안의 myfolder 폴더로 복사하여 해당 폴더에 저장한다.

WORKDIR /myfolder/ 가상 컴퓨터가 만들어지면 명령어를 실행할 작업 폴더를 지정해준다.

CMD node index.js 명령어를 통해서 복사하여 저장된 파일을 실행해 준다.



Docker 명령어

Docker Build

docker build .
docker images
Port-Forwarding

docker build . : Doclerfile을 하나로 묶여진 이미지로 만든다.
docker images : 생성된 이미지 확인
docker run -p num:num 이미지 아이디 : 포트 번호와 포워드 번호를 지정해준다.


Docker run

docker run 이미지ID
docker ps
docker exec -it 컨테이너 아이디 /bin/bash
ls
mkdir myfolder
exit
docker stop 컨테이너 아이디

docker run 이미지ID : 이미지 실행 (컨테이너 생성)
docker ps : 프로세스 목록 확인 (컨테이너 아이디 확인 가능)
docker exec -it 컨테이너 아이디 /bin/bash : 컨테이너 내부에 접속
ls 컨테이너 내부 리스트 보기
mkdir myfolder : 컨테이너에 myfolder 폴더 만들기
exit : 컨테이너 나가기
docker stop 컨테이너 아이디 : 컨테이너 종료하기


Docker 컨테이너, 이미지 삭제

Docker ps -a
Docker rm 컨테이너 아이디
docker ps -a -q
Docker rm docker ps -a -q
Docker images -q
Docker rmi docker images -q
docker system prune -a

Docker ps -a : 누적된 모든 이미지 데이터 가져오기
Docker rm 'docker ps -a -q' : 모든 값 삭제(백틱으로 감싸줌)

docker ps -a -q : 누적된 모든 데이터 중 컨테이너 아이디만 가져오기
docker rm 컨테이너 아이디 : 해당 컨테이너 삭제

docker images -q : 누적된 모든 이미지 아이디
docker rmi 'docker images -q' : 누적된 모든 이지미 삭제(백틱으로 감싸줌)
docker system prune -a : 모든값 한번에 삭제

profile
백엔드 성장 기록

0개의 댓글