코딩/Docker

Docker

춘 몽 2024. 3. 8. 10:41

Docker란?

간단히 말해 컴퓨터안의 컴퓨터이다.

맥북에서는 되는데 윈도우에서는 안되는데요?? 같은 일을 방지하고자 같은 운영체제, 같은 프로그램 버전을 사용하게 된다.

Docker는 이를 위해 성능을 향상시켰고, 무엇보다 자신의 세팅을 공유할 수 있다.

https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.

hub.docker.com

 

설치는 Docker 공식 사이트에서 하면 된다.

https://www.docker.com/products/docker-desktop/

 

Docker Desktop: The #1 Containerization Tool for Developers | Docker

Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux.

www.docker.com

or

brew install --cask docker

 

docker를 설치하고, VSCode에서 Dockerfile 이라는 파일을 만든 후, 안에 코딩을 하면 된다. 기본적으로

FROM 으로 앞서 말하고 링크한 hub.docker에서 다운받을 수 있다.

기본적으로 FROM ubuntu:버전 으로 우분투를 설치하고,

RUN sudo apt install nodejs 으로 node를 설치해야 하지만,

앞서말한 자신의 세팅을 공유할 수 있다는 장점을 활용하여 node가 설치된 ubuntu를 받을 수 있다.

FROM node:버전 으로 node를 다운 받은 후, COPY 내컴퓨터파일 /도커컴퓨터 식으로  복사가 가능하다. 

(ex1 COPY ./index.js /index.js 내컴터 index.js 파일을 도커컴터에 index.js로 넣는다)

(ex2 COPY . /myfoler 내 컴터 모든 파일을 myfoler에 넣는다)

RUN은 실행까지 저장되는것과 달리 CMD의 경우 만든 이미지를 실행할때 실행된다.

# 1. 운영체제 및 프로그램 설치 (하나하나 입력하는 방식)
# FROM ubuntu:22.04

# RUN sudo apt install nodejs
# RUN sudo npm install -g yarn

# 1. 운영체제 및 프로그램 설치 (이미 리눅스, node, npm, yarn 까지 모두 깔려있는 컴퓨터 다운로드하는 방식)
FROM node:14

# 2. 내 컴퓨터에 있는 폴더나 파일을 도커 컴퓨터 안으로 복사하기
COPY ./index.js /index.js

# 3. 도커안에서 index.js 실행시키기
# RUN node index.js RUN: 실행까지 저장됨, CMD: 제외하고 저장됨, 저장한걸 실행할 때 실행됨, 한번만 가능
CMD node index.js

 

그렇게 코딩을 끝냈다면

docker build .

으로 docker를 빌드하고,

docker images

로 이미지를 표시한 후,

표시된 IMAGE ID를 복사한 후,

docker run 이미지ID
// 위의 경우
docker run b29a73633b87

 로 해당 이미지를 실행한다.

 

++ ( 포트포워딩이 필요하다면

docker run -p 인:아웃 이미지ID
// 위의 경우
docker run -p 2500:3000 b29a73633b87
// Postman에서 localhost:2500으로 요청하면 docker의 localhost:3000으로 요청이 들어간다

2500 -> 3000이라는 내용이 추가됨. )

 

 

가 떴다면 터미널 창을 나누어

 

docker ps 
// ps = Process Status

로 실행중인 docker를 출력하면 방금 실행한 docker가 나오며,

 

 

docker exec -it 콘테이너ID /bin/bash

// 위의 경우
docker exec -it 2f48dc62ca3d /bin/bash

를 입력하면 해당 콘테이너에서 명령어를 사용할 수 있다.

 

안에서 ls, mkdir 등의 명령어 사용 가능

 

파일을 열어보는 방법은

cat 파일이름

// 위의 경우
cat index.js

 이다.

 

docker를 종료하려면 우선

exit

로 해당 docker에서 나온 후

 

docker stop 콘테이너ID
// 위 경우
docker stop 2f48dc62ca3d

 로 종료가 가능하다. (콘테이너ID 기억 안나면 docker ps)

그럼 잠시 후 종료가 된다.

 

한번에 종료하는 명령어

docker stop $(docker ps -aq)

 

- 콘테이너 삭제

docker ps -a

로 모든 정지되있는거 출력 한 후

docker rm 컨테이너ID
// 위의 경우
docker rm 2f48dc62ca3d

로 한개씩 삭제 가능,

docker rm `docker ps -a -q`

 로 한번에 삭제 가능 (docker ps -a -q 는 모든 컨테이너ID를 가져오는거, 백틱으로 묶어주면 해당 명령어가 먼저 익식 => 모든 컨테이너ID 가져와서 삭제 명령어에 넣는거)

 

- 이미지 삭제

콘테이너 삭제와 같음 

docker rmi 이미지ID
// 위의 경우
docker rmi b29a73633b87

로 한개씩 삭제 가능,

docker rmi `docker images -q`

로 한번에 삭제 가능

 

- 한번에 삭제

docker system prune -a

 

++ 참고로 앞선 명령어 포함하여 지금 실행중인 녀석들은  제거 안됨

728x90

'코딩 > Docker' 카테고리의 다른 글

Docker vs Virtual Machine  (0) 2024.10.11
docker-compose, volumes  (0) 2024.03.15