본문 바로가기
Docker

Docker 얄코님 따라하기 & 명령어 정리

by codeok 2023. 1. 29.
반응형

이번에는 사내에서 도커를 사용하게 되어서 얄코님의 예제를 따라 해보면서 명령어를 정리해보려고 한다.

 

참고한 사이트는 다음과 같다. 진짜 해당 영상만 봐도 도커의 기본을 쉽게 알 수 있다! 강추!!

 

 

얄코님 예제 따라하기

얄코님의 예제는 다음과 같이 이뤄진다.

  • frontend, backend, database 각각의 Dockerfile을 이미지로 만들고 컨테이너로 실행시키기
  • docker-compose를 활용해서 frontend, backend, database 모두 연동해서 실행시키기

 

여기서는 frontend Dockerfile을 이미지로 만들고 컨테이너로 실행시키는 과정만 따라 해본다.

 

docker image와 docker container의 차이점을 간단하게 확인하고 바로 시작해 보자!

 

docker image

  • 운영체제 관점 : 실행파일
  • (서버 프로그램 + 소스코드 및 라이브러리 + 컴파일된 실행 파일) 총 집합 파일

docker  container

  • 운영체제 관점 : 프로세스
  • 이미지를 실행한 상태

 

얄코님 따라하기 시작 - git clone

얄코님의 예제를 따라 하기 위해서 gitlab URL을 복제한다.

git clone https://gitlab.com/yalco/practice-docker

 

복제한 디렉토리 경로로 이동을 해서 dir로 현재 폴더의 목록을 확인해 보면 다음과 같은 파일들이 존재한다.

 

도커 이미지 목록 조회(docker images)

현재 존재하는 도커 image 목록을 확인한다.

도커를 처음 사용한다면 당연하게 아무것도 존재하지 않는다.

docker images

 

도커 컨테이너 목록 조회(docker ps -a)

도커 컨테이너도 조회해 본다. 역시나 아무것도 존재하지 않는다.

 

  • -a : 종료된 컨테이너 모두 조회
docker ps -a

 

도커파일(Dockerfile) 뜯어보기

frontend 폴더에서 Dockerfile을 이미지로 만들기 전에 어떻게 구성되어 있는지 확인해 본다.

frontend 폴더로 이동을 하면 Dockerfile 이 존재한다. 

# node:12.18.4 이미지를 기본으로 사용
FROM node:12.18.4

# 이미지 생성 과정에서 실행할 명령어
RUN npm install -g http-server 

# 이미지 내에서 명령어를 실행할(현 위치로 잡을) 디렉토리 설정
WORKDIR /home/node/app

# 컨테이너 실행시 실행할 명령어
CMD ["http-server", "-p", "8080", "./public"]

 

Dockerfile로 이미지 만들기(docker build)

frontend 폴더로 이동을 해서 Dockerfile이 있는 위치에서 이미지를 만드는 명령어를 입력한다.

 

  • -t, --tag : 이름과 'name:tag' 태그를 붙이기 위한 옵션
docker build -t frontend-img .

 

Dockerfile에 작성되어 있는 명령어 단계로 이미지가 생성된다.

 

이미지 생성 확인(docker images)

frontend-img 이름으로 이미지가 생성된 것을 확인이 가능하다.

 

컨테이너 생성(docker run)

생성한 도커 이미지를 활용해서 실행되는 컨테이너를 만들어 본다.

 

  • --name : 컨테이너명
  • -v : {host 폴더}:{컨테이너 폴더}
    • host와 공유할 폴더 
  • -p : {host port}:{컨테이너 port}
    • host와 연결할 포트
# docker run --name {컨테이너명} -v {host 폴더}:{컨테이너 폴더} -p {host port}:{컨테이너 port} {이미지명}
docker run --name frontend-con -v "$(pwd):/home/node/app" -p 8080:8080 frontend-img

 

위와 같이 명령어가 나온다면 성공적으로 실행된 것이다.

브라우저에서 http://localhost:8080/ 링크로 들어가 보면 하단과 같이 나온다면 정상적으로 frontend 컨테이너가 실행된 것이다.

 

 

도커 컨테이너 백그라운드 실행(docker run -d)

이번에는 백그라운드로 실행하기 위해서 -d 옵션만 추가해서 실행한다.

명령어를 입력하고 나면 실행된 컨테이너 id가 나타나면 정상적으로 실행된 것이다.

docker run --name frontend-con -v "$(pwd):/home/node/app" -p 8080:8080 -d frontend-im

 

도커 컨테이너 로그 확인(docker logs)

백그라운드로 실행시킨 데몬을 로그로 확인이 가능하다.

 

# docker logs -f {컨테이너명}
docker logs -f frontend-con

 

 

도커 컨테이너 삭제 명령어(docker stop, docker rm)

이번에는 만들었던 컨테이너를 삭제해 본다.

현재 실행 중인 컨테이너는 삭제되지 않기에 정지를 선행하고 삭제한다.

 

docker ps -aq 명령어는 -a는 종료된 것 모두, -q는 다른 정보 제외 id만 나오게 해서 조회하는 것이다.

docker stop $(docker ps -aq) 명령어로 현재 실행중인 모든 컨테이너를 중지한다.

지금은 테스트 환경이기에 전체 삭제로 간편하게 하지만, 실제로는 다음과 같은 명령어를 사용하면  안 되고 중지를 원하는 컨테이너 id만 선택해서 중지나 삭제를 해야 한다.

docker stop $(docker ps -aq)

docker rm $(docker ps -aq)

 

위의 명령어를 입력하면 정상적으로 실행되면 정지된 컨테이너 id와 삭제된 컨테이너 id가 나타난다.

 

도커 이미지 삭제(docker rmi)

docker images -q로 도커 이미지 id 목록을 출력하고 모두 삭제를 한다.

현재 필자는 다른 이미지가 존재하지 않기에 간편하게 삭제하기 위해 다음과 같은 명령어를 사용했다.

실제로는 해당 명령어는 따라 하면 안 된다.

docker rmi frontend-img와 같이 이름이나 id를 선택해서 삭제하고자 하는 이미지만 삭제해야 한다.

 

도커의 아주 아주~ 기본적인 명령어 사용방법에 대해서 알아봤다.

앞으로 추가 학습을 위해서 도커 공부 사이트를 나열하고 끝!!

 

https://pyrasis.com/jHLsAlwaysUpToDateDocker

 

PYRASIS.COM: 이재홍의 언제나 최신 Docker

© 2022 Jae-Hong Lee. All rights reserved. 상호명 : 제이에이치엘 | 대표자 : 이재홍 사업자등록번호 : 544-03-02533 통신판매업신고 : 2022-서울서초-2713 주소 : 서울특별시 서초구 강남대로107길 21(잠원동) 2층

pyrasis.com

 

https://docs.docker.com/engine/reference/commandline/docker/

 

docker

docker: The base command for the Docker CLI.

docs.docker.com

 

 

반응형

'Docker' 카테고리의 다른 글

[WSL2][Ubuntu 20.04 LTS] pbcopy 사용방법  (0) 2022.08.20
[WSL2][Ubuntu 20.04 LTS] nodejs 설치 및 npm init  (0) 2022.08.20