[Docker] docker 란 ? docker 의 기본개념 및 사용법
by 코박7docker 의 기본개념
- 도커란 컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고 배포하고 실행할 수 있도록 설계된 도구 이며 컨테이너 기반의 오픈소스 가상화 플랫폼.
docker 를 사용해야 하는 이유.
- 어떤 프로그램을 다운받아 사용할때, 일반적으로 위와 같은 과정을 거치는데, 프로그램 OS, 프로그램 버전에 따라 오류가 발생할 수 있음.
- 하지만 도커를 이용해서 다운받게되면 환경에 제약없이 이미지만 다운 받아 사용하면 되기 때문에 매우 간편
docker 이미지란 ?
- 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용 프로그램을 실행하는 데 필요한 모든 것을 포함하는 가볍고 독립적이며 실행 가능한 소프트웨어 패키지.
- 컨테이너 이미지는 런타임에 컨테이너가 되고 도커 컨테이너의 경우 도커 엔진에서 실행될 때 이미지가 컨테이너가 된다.
- 예를 들어 카카오톡 이미지가 있다고 하면 카카오톡 이미지는 카카오톡을 실행하기 위한 모든 패키지가 들어있고 해당 이미지로 컨테이너를 생성할 수 있다고 생각하면 된다.
- 베이스 이미지란 기본적인 운영체제, 런타임 환경을 제공하는 이미지 입니다.(ubuntu, centos 등..)
- 이렇게 모인 이미지들이 런타임에 컨테이너가 됨.
docker 컨테이너란 ?
- 컨테이너의 계층. 분리된 프로세스를 실행하기 위한 운영 체제를 가상화 할 수 있습니다.
이미지를 만들어 컨테이너 만들기
// 베이스 이미지를 명시.
FROM
// 추가적으로 필요한 파일들을 다운로드 받는다.
RUN
// 컨테이너 시작 시 실행 될 명령어를 명시해준다.
CMD
- docker image 를 만들기 위해선 docker file 이 필요하다.
- docker file 에 입력된 것들이 docker build 시 도커 클라이언트에 전달되어서 도커 서버가 인식을 한다.
- build 명령어 입력 시 해당 디렉토리 내에서 dockerfile 이라는 파일을 찾아서 도커 클라이언트에 전달하는 역할.
Node.js 로 작성된 이미지 및 컨테이너
// dockerfile
FROM node:10 => 베이스 이미지
COPY ./ ./ => server.js, package.json 를 사용하기 위한 COPY
RUN npm install => 추가적으로 nodeJs 에서 사용할 파일들 다운
CMD ["node", "server.js"] => 컨테이너 시작 시 실행 될 명령어.
- COPY 를 사용하는 이유는 Dockerfile 를 읽어 컨테이너를 만들지만 server.js, package.json 은 Dockerfile 이 바로 읽을 수 없으므로 같은 디렉토리에 있는 파일들을 컨테이너에 COPY 하기 위함.
// package.js => node 에서 사용할 의존성.
{
"name": "docker",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \\"Error: no test specified\\" && exit 1"
},
"dependencies": {
"express": "4.18.2"
},
"author": "",
"license": "ISC"
}
- docker build 를 통해 docker client 에게 전달.
- build 완료 후 나오는 image 이름
docker run < -p 49160:8080 > 이미지 이름
- 49160 ⇒ 브라우저에서 입력하는 포트
- 8080 ⇒ 컨테이너 안에 있는 포트
- 49160 을 입력하면 컨테이너 8080 포트와 매핑 시켜줌.
이미지 이름 변경
docker build ./ -t tnuren/hello:latest
-t <나의 도커 아이디> / <저장소/프로젝트 이름> : 버전
'docker' 카테고리의 다른 글
[Docker] Docker cannot copy to non-directory error (0) | 2024.01.30 |
---|---|
[Docker] docker container 내부 vim 설치 에러 (0) | 2024.01.30 |
[Docker] windows Hypervisor is not present 에러 발생 (0) | 2023.08.20 |
[Docker] WSL kernel version too low 해결 (0) | 2023.08.20 |
블로그의 정보
코딩박스
코박7