Docker란?
간단히 말해 컴퓨터안의 컴퓨터이다.
맥북에서는 되는데 윈도우에서는 안되는데요?? 같은 일을 방지하고자 같은 운영체제, 같은 프로그램 버전을 사용하게 된다.
Docker는 이를 위해 성능을 향상시켰고, 무엇보다 자신의 세팅을 공유할 수 있다.
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
++ 참고로 앞선 명령어 포함하여 지금 실행중인 녀석들은 제거 안됨
'코딩 > Docker' 카테고리의 다른 글
Docker, docker-compose 요약 (작성 중) (0) | 2024.11.23 |
---|---|
Docker vs Virtual Machine (0) | 2024.10.11 |
docker-compose, volumes (0) | 2024.03.15 |