공부한 내용을 정리한 자료입니다.
오탈자 및 부정확한 정보가 있을 수 있습니다.
Docker
"컨테이너 기반의 오픈소스 가상화 플랫폼"이며,
컨테이너는 OS와 응용프로그램들까지 담는 환경이라고 알아두자.
처음 도커라는 개념을 알고, 사용하였을 때 이전에 리눅스로 가지고 놀았던 가상머신(VM)이 떠올랐고
이 둘은 무슨 차이일까? 궁금해서 해당 내용을 찾아보았다.
https://89douner.tistory.com/95
찾아보니 두 블로그의 글이 정리가 잘 되어있어 정독을 했지만 내 머리로는
글을 읽고나서 부족한 머리로 정리하자면 "Docker는 여러개의 Docker가 운영될 때 Host OS에서 동작되기 때문에 각 OS커널과 다른 컨테이너 사이에 데이터 공유가 가능하며 VM보다 메모리 공간을 적게 차지한다" 는 것이 VM과 다른점이다.
아니 그러면 빠르고 메모리 적게 차지하는 도커가 짱짱아닌가? 라고 생각이 들었지만
윈도우 환경에서 도커의 단점은 GUI지원이 안된다. 딥러닝 같이 이미지작업이 필수적인 프로젝트에서는 이를 사용하기 어렵다. 메인 토픽은 이것이 아니므로 자세히 다루지 않겠다..
Docker 장점
1. 개발 환경 동일화
어떠한 프로젝트를 협업하여 진행한다고 가정하자. 누구는 윈도우 누구는 맥OS 누구는 리눅스 등등을 쓴다면 자기 운영체제에 맞는 패키지와 개발환경을 구성하여 개발해야한다. 또한 각 OS마다 호환성 이슈도 있으며 서로 동일한 버전을 맞추어야 한다. 이러한 수고를 덜기 위해 Docker를 이용하며, 로컬에서 도커파일만 실행시키면 다른 개발환경에서 실행가능하다는 장점이 있다.
2. 격리된 보안성
어떤 컨테이너가 해킹되어도 각 컨테이너는 격리되어 있어 서버에 영향을 미치지 않는다.
설치방법
도커 설치는 아래 블로그를 보면서 진행하였다.
설명 잘되어 있어서 금방금방 한다.
Docker 작동과정
대강 이런 매커니즘으로 실행된다. 이미지 설정파일인 도커파일에서 build명령어로 이미지를 만들고 이를 컨테이너로 만들어 실행시킨다.
Docker 명령어
공식문서가 따로 있다.
https://docs.docker.com/engine/reference/run/
(이래서 개발자는 영어를 잘해야 된다고 하는것을 느낀다.)
일단 아무 폴더에 dockfile을 만들고 다음과 같이 코드를 작성한다.
FROM node:14
이미지의 기본 버전 설정을 한다.
Dockerfile이란?
- Docker 이미지 설정 파일이다.
- Docker에서 Dockerfile이라는 설정 파일을 읽게끔 설정이 되어있다.
이미지관련 명령어
이미지 파일 생성
docker build [filelocation] -t [filename]:[tagname]
ex) docker build . -t study/hello-node:step1
이미지 목록 출력
docker images
이미지 삭제
docker rmi [imageID]
이미지 강제 삭제
docker rmi [imageID] -f
컨테이너 관련 명령어
컨테이너 생성
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
docker create -i -t --name (내가 설정하려는 컨테이너 이름) (이미지 이름)
ex)docker create -it --name doc-node-text study/hello-node:step1
- -i 는 상호 입출력
- -t 는 tty를 활성화해서 bash 셸을 사용
- --name 컨테이너 이름 설정
- study/hello-node:step1 -> 이미지 이름:태그
컨테이너 실행 목록 출력
docker ps
컨테이너 전체 목록 출력
docker ps -a
컨테이너 시작
docker start [컨테이너ID]
컨테이너 내부 접속
docker exec -it [컨테이너ID] bash
컨테이너 접속해제
exit
컨테이너 실행 중지
docker stop [컨테이너ID]
컨테이너 제거
docker rm [컨테이너ID]
컨테이너 강제 제거
docker rm -f [컨테이너ID]
'Infra > Docker' 카테고리의 다른 글
Dockerfile을 활용하여 자체 이미지 빌드, 컨테이너 실행 (0) | 2023.06.16 |
---|---|
[Docker] Mongo-DB 설치 & MongoDB Compass 사용 (0) | 2021.08.11 |
Docker 외부 접속 실습 - (feat. vscode) (0) | 2021.08.11 |