TIL day 07

어니언·2023년 1월 18일
0
post-thumbnail

오늘은 docker를 배웠다. 도커라는 기능이 나온 배경은 서버를 열기위해서는 컴퓨터마다 하나씩 열 수 있기 때문에 테스트를하거나 할때 여러 컴퓨터가 필요한 상황에서 공간적, 비용적으로 불편함을 풀기위해 처음에는 VMware라는 프로그램을 통해 가상컴퓨터를 만들어서 이용하였다. VMware를 사용 하면 컴퓨터하나에서 새로운 가상컴퓨터를 운영체제부터 시작해서 완전히 다 설치되기 때문에 사용하기에 무겁고, 컴퓨터 속도가 상대적으로 느리게 작동하는 불편함이 있었다. 이러한 불편함을 줄이기위해 docker라는 프로그램을 개발하여 현재 사용하고 있는데 도커란 부팅등의 운영체제의 핵심기능(커널)은 공유하는 가상머신으로 가볍게 개발환경 요소들만 설치된 모습을 이미지화하여 클라우드에올리고 이를연결시켜 문서로 저장하고 실행합니다. 즉, vmware는 달리 운영체제를 새로 설치하지 않아도 되기때문에 언뜻 비슷하다고 생각할 수 있지만 훨씬 빠르고, 자원을 효율적으로 사용하기때문에 현재 가장 많이 사용되는 프로그램입니다.
또, 저장된 이미지를 통해 하나의 컴퓨터로 다른환경의 여러서비스를 실행하기위한 서버를 열경우에도 컨테이너로 분리되어있어 각각 한컴퓨터에서 서버실행이 독립적으로 가능하고 이것을 다음에 배울 mongodb를 통해 연결하여 구축할 수 있습니다.

이미설치한 목록이 세팅이 되어있고 이를 공유할 수 있기때문에 협업을 하기위해 늦게 들어온 개발자도 똑같이 만들어 사용하여 충돌이없기 때문에 편리하다.

이제 도커의 사용방법에 대해서 알아보면
컨테이너를 만들기전에 이미지를 먼저 만들어야한다. 백엔드 폴더에 Dockerfile이라는 파일을 만들고 이미지를 만들기 위한 명령어를 입력한다.

  1. 운영체제 설치하는 것과 같은개념인데 (node 14버전과 npm,yarn이 모두 설치되어 있는 리눅스이다.)
    FROM node:14
  2. 로컬컴퓨터에 있는 폴더나 파일을 도커 컴퓨터안으로 복사하는 것
    COPY ./index.js /index.js
  3. 도커안에서 index.js 실행시키기
    CMD node index.js

RUN과 CMD
RUN은 도커의 한 파일내에서 여러번 사용이 가능, Docker build를 저장할 경우 다 실행을한 후 저장한다.
CMD는 도커의 한 파일내에서 한번만 사용이 가능한 명령어이다. 위의 순서에서 Dcoker build를 통해 저장할 경우 2번까지만 실행을 한 후 저장한다. 그래서 마지막3번째인 프로그램을 실행시킬 때 CMD를 사용한다.

이제 도커내부에서 사용하는 명령어에 대해 알아보면
1. Docker build . 을 통해 이미지를 만든다
2. Docker build images를 통해 빌드를 통해 생성된 이미지를 모두 볼 수 있다.
3. Docker run (-p 포트번호:포트번호) 이미지ID

  • 포터번호가 보내는값고 받는값이 다른경우에 ()를 그에맞게 입력하여 사용하면된다. 그외에는 생략할 수 있다. 이 기능을 포트포워딩이라고 한다.
    컨테이너 ID는 2번째 images를 통해 이미지ID를 확인하고 입력하면된다.'

4. Docker ps 명령어는 docker가 실행된 중인 정보를 알 수 있다.
5. Docker ps -a 명령어는 종료된 컨테이너 모두를 보여준다.
6. docker exec -it 컨테이너ID /bin/bash를 입력하면 도커내부를 접속 할 수 있다.
7. 일반 vscode에서 터미널에서처럼 pwd 현재위치 ls 현재위치에 저장된 목록을 확인할 수 있다.
8. cat 파일이름 을 입력하면 파일에적힌 정보를 읽을 수 있다.
9. exit 도커내부접속을 종료할 수 있는 명령어이다.
10. docker rm 컨테이너ID 를 통해 컨테이너를 완전히 지울 수 있다.
11. docker rmi 이미지ID 를 통해 이미지를 완전히 지울 수 있다.
*하나씩 지우기 번거로울때
1) 컨테이너목록 전부 지우는 명령어 : docker rm docker ps -a -q를 입력하면된다.
2) 이미지목록 전부 지우는 명령어 : docker rmi docker images -q를 입력하면된다.
3) 컨테이너목록, 이미지목록 함께 전부 지우는 명령어 docker system prune -a 를 입력하면 된다 (임시저장 캐시들도 모두 삭제됨)
@ 이때 지워지는 항목들은 사용안하는 이미지, 컨테이너들이다. 사용중인 이미지와 컨테이너는 지워지지 않는다.

profile
안녕하세요.

0개의 댓글