docker

minjun kim·2025년 4월 23일

docker 정리글

2) docker 동작확인

해당 글에서는 Docker 동작 과정으로 Docker Image를 생성하고 이미지를 Docker Container화 합니다. 그리고 Container를 Registry내에 올리는 과정을 확인해 봅니다.

💡 Docker 클라이언트, 도커 호스트, 도커 레지스트리 간 흐름

1. [Client → Docker Host] 클라이언트는 도커 명령어를 사용하여 도커 호스트에 요청을 보냅니다.

2. [Docker Host] 도커 호스트는 클라이언트의 요청을 받아들이고, 해당 요청에 따라 컨테이너를 생성, 중지, 제거하거나 이미지를 관리합니다.

3. [Docker Host → Registry] 만약 클라이언트가 이미지를 생성하거나 업로드하려면, 도커 호스트는 해당 이미지를 도커 레지스트리에 업로드합니다.

4. [Registry] 도커 레지스트리는 이미지를 저장하고 관리하는 중앙 집중식 저장소입니다. 도커 호스트는 도커 레지스트리에 이미지를 업로드하거나 다운로드할 수 있습니다.

5. [Docker Host → Client] 컨테이너가 종료되면, 도커 호스트는 해당 컨테이너의 상태와 결과를 클라이언트에게 반환합니다.

- 이렇게 클라이언트, 도커 호스트, 그리고 도커 레지스트리는 도커 환경에서 상호 작용하며, 이미지의 업로드와 다운로드, 컨테이너의 생성과 관리 등의 작업을 수행합니다.

도커 설치 확인

$ docker -v

nginx 다운

# docker hub에서 nginx를 다운로드 받습니다.
https://adjh54.tistory.com/350

컨테이너 생성하고 실행

해당 명령어는 ‘nginx’ 이미지를 기반으로 ‘my-nginx’라는 이름의 Docker 컨테이너를 생성하고 실행하는 명령어

1. d 옵션은 컨테이너를 백그라운드에서 실행하는 detached 모드로 실행합니다.
2. p 80:80 옵션은 호스트 머신의 80 포트를 컨테이너의 80 포트로 매핑하여 컨테이너 내에서 실행 중인 NGINX 웹 서버에 접근할 수 있도록 합니다.
3. -name my-nginx 옵션은 컨테이너에 "my-nginx"라는 이름을 할당합니다.
4. nginx 인자는 컨테이너를 생성할 때 사용할 Docker 이미지의 이름을 지정합니다.
# nginx 이미지를 기반으로 my-nginx 이름의 Docker 컨테이너를 생성하고 실행하는 명령어
$ docker run -d -p 80:80 --name my-nginx nginx

💡 [참고] Docker Desktop을 종료하면 해당 nginx는 종료가 될까?

  • Docker Desktop은 로컬 컴퓨터에서 도커를 실행하기 위한 도구
  • Docker Desktop을 종료하더라도, 이미지와 컨테이너는 로컬 환경에 남아 있을 수 있다 따라서, Docker Desktop을 종료해도 이전에 실행한 Nginx 컨테이너는 여전히 실행 중이며, 해당 컨테이너에 접근할 수 있습니다.
  • 다만, Docker Desktop을 다시 시작하지 않고 새로운 컨테이너를 생성하려면 접근할 수 없다.

docker 명령어 설명

docker -v : docker 버전
docker ps -a : docker의 컨테이너 목록을 확인
docker pull [docker image] :docker의 이미지를 다운
docker build : docker 이미지를 빌드합니다.
docker push : docker 이미지를 레지스트리에 업로드
docker run : docker 이미지를 기반으로 컨테이너를 생성하고 실행
docker login : docker 계정 로그인을 수행합니다.
docker image ls docker : 이미지 목록들을 확인
docker tag : docker 이미지에 이름 또는 태그를 할당
docker pull: docker 이미지를 레지스트리에서 가져옴

docker 컨테이너 명령어 설명

  • 컨테이너 생성 (Create Container):
    docker create --name <container-name> <image-name>

  • 컨테이너 시작 (Start Container): docker start <container-id/name>

  • 컨테이너 실행 (Run Container): docker run -it -d --name <container-name> <image-name> bash

  • 컨테이너 일시 정지 (Pause Container): docker pause <container-id/name>

  • 컨테이너 재개 (Unpause Container) : docker unpause <container-id/name>

  • 컨테이너 중지 (Stop Container): docker stop <container-id/name>

  • 컨테이너 재시작(Restart Container): docker restart <container-id/name>

  • 컨테이너 종료(Kill Container): docker kill <container-id/name>

  • 컨테이너 제거 (Remove Container): docker rm <container-id/name>


  • it는 "interactive"와 "tty"를 의미하는 옵션으로, 컨테이너의 셸과 상호작용할 수 있도록 해줍니다.

  • bash는 컨테이너 내부에서 실행할 명령어로, 이 경우에는 bash 셸을 시작합니다.

참고글
https://adjh54.tistory.com/350

Nginx

  • 주로 정적 파일의 서비스, 리버스 프록시, 로드 밸런싱, HTTP 캐싱 등 다양한 기능을 제공하는 오픈 소스 소프트웨어.

  • 정적 컨텐츠를 서비스하는 데 사용되곤 하며, 이는 빠른 응답 시간과 낮은 메모리 사용량으로 인해 가능
    또한, 리버스 프록시로서의 역할을 수행하여 백엔드 서버의 부하를 분산시키고, 캐싱, SSL 종료, HTTP/2 처리 등의 기능을 제공합니다.

  • 웹 서버 소프트웨어로, 고성능이며 확장성이 좋음

  • Nginx는 경량화되어 리소스 사용량이 적고, 동시 접속자 처리에 효율적

💡 Docker 이미지로 다운로드하는 것은 어디서 받아지는 것인가?

  • Docker Hub 또는 다른 Docker 레지스트리에서 다운.

도커 이미지

애플리케이션과 그 실행에 필요한 모든 것을 포함하는 불변 템플릿

도커 컨테이너

도커 컨테이너는 이미지의 실행 가능한 인스턴스

  • 추후 포스트에서 한번 더 다룬다!
profile
배움의 흔적을 남기고 싶습니다.

0개의 댓글