[새싹 x 코딩온] 웹 풀스택 영등포 5기 24주차 회고 - 1

용가리🐉·2023년 12월 27일
0
post-thumbnail

📌 Docker Desktop

  • Windows, macOS, Linux 등 다양한 운영체제에서 사용할 수 있는 Docker 플랫폼의 데스크톱 버전
  • 그래픽 사용자 인터페이스(GUI)를 제공해 Docker 컨테이너를 쉽게 생성하고 실행, 관리가 가능함

📣 Docker Desktop의 기능

  • 컨테이너 생성 및 실행
    • Docker Hub에서 이미지를 다운로드하거나 직접 이미지를 빌드하여 컨테이너를 생성하고 실행할 수 있음
  • 컨테이너 관리
    • 컨테이너를 시작, 중지, 재시작, 삭제할 수 있음
    • 컨테이너 상태를 모니터링하고, 컨테이너 로그를 볼 수 있음
  • 컨테이너 네트워킹
    • 컨테이너 간에 네트워크를 연결할 수 있음
  • 컨테이너 보안
    • 컨테이너 보안을 강화할 수 있음

📌 컨테이너 실행하기

📣 Image와 Container 관계

  • Docker는 pull 명령어로 Docker Hub에서 이미지를 가져오고, run 명령어로 이미지를 사용해 컨테이너를 실행함

📣 CLI를 이용한 Nginx 컨테이너 실행

CLI 란?

  • 명령줄 인터페이스
  • 글자를 입력하여 컴퓨터에 명령을 내리는 방식
  1. Docker Hub에서 최신 버전의 Nginx 이미지 가져오기
docker pull nginx:latest

# 특정 버전의 이미지를 다운받는 방법 : ':' 다음에 원하는 버전 입력
  1. 다운로드 받은 이미지 목록 확인
docker images
  1. Docker 컨테이너 실행하기 (-p 옵션으로 컨테이너가 포트 80을 이용해 외부에서 엑세스 가능)
    • -d(daemon)는 컨테이너를 백그라운드에서 실행하도록 하는 옵션
    • --name컨테이너 이름을 설정해주는 옵션
    • -p 80:80은 Host의 80 포트로 유입되는 트래픽을 Container의 80 포트로 전달되게 하는 명령 (Nginx의 default 포트: 80)
docker run -d --name nginx-ws -it -p 80:80 nginx:latest

# docker run -d --name {컨테이너_이름} -it -p <host port number>:<container port number> {이미지_이름}
  1. ps 명령어를 통해 실행 중인 컨테이너 확인 가능(-a 옵션은 컨테이너 목록)
docker ps
  1. 브라우저에서 localhost 입력 시, 접속 확인 (80번 포트번호 생략 가능)

  2. 실행한 컨테이너 중지시키기

    • ps 명령어로 실행 중인 컨테이너 목록에서 사라진 것 확인 가능
docker stop nginx-ws

# docker stop {컨테이너_이름}
# docker stop {컨테이너_ID}
  1. 컨테이너 삭제하기
    • ps -a 명령어로 컨테이너 목록에서 사라진 것 확인 가능
docker rm nginx-ws

# docker rm {컨테이너_이름}
# docker rm {컨테이너_ID}

📣 GUI를 이용한 MYSQL 컨테이너 실행

  1. Docker Hub에서 MySQL 이미지 가져오기
docker pull mysql:latest
  1. Docker Desktop의 Images 탭에서 이미지 확인

  2. 컨테이너 실행하기

    • 컨테이너 이름에 mysql-db로 이름 지정
    • -e 옵션으로 컨테이너의 MYSQL_ROOT_PASSWORD 환경변수 값으로 xxxx 지정 → MYSQL 루트 사용자의 암호를 해당 암호로 설정 (해당 암호 미설정 시, 컨테이너 시작 불가)
    • Container 탭에서 컨테이너 생성 확인 가능
    docker run --name mysql-db -e MYSQL_ROOT_PASSWORD=**** mysql

  1. 명령 실행하기

    • Exec 탭은 실행 중인 컨테이너에 명령을 실행하는데 사용됨 → 컨테이너에 연결해서 명령을 실행할 수 있는 터미널
    • mysql -u root -p 를 통해 mysql에 접속 가능
  2. 컨테이너 중지, 삭제하기

    • 중지, 삭제 아이콘으로 컨테이너를 쉽게 중지, 삭제 가능

📌 Docker 명령어

📣 일반 명령어

  • docker version : Docker 클라이언트 및 서버의 버전 표시
  • docker info : Docker 설치 상태 및 정보 표시
  • docker help : Docker 명령어의 도움말 표시

📣 이미지 명령어

  • docker pull : Docker Hub에서 이미지를 가져옴
  • docker push : Docker Hub에 이미지를 푸시
  • docker images : Docker 이미지 목록을 표시
  • docker search : Docker Hub에서 이미지를 검색

📣 컨테이너 명령어

  • docker run : 이미지를 사용하여 컨테이너 실해
  • docker stop : 컨테이너 중지
  • docker start : 중지된 컨테이너 시작
  • docker restart : 실행 중인 컨테이너 다시 시작
  • docker ps : 실행 중인 컨테이너 목록 표시 (-a 옵션: 모든 컨테이너 목록 표시)
  • docker logs : 컨테이너의 로그 표시
  • docker kill : 강제로 컨테이너 종료
  • docker rm : 컨테이너 삭제

📌 Dockerfile

📣 Dockerfile 이란?

  • Docker Image를 생성하기 위한 스크립트(설정 파일)
  • Dockerfile을 사용해 컨테이너에 필요한 이미지, 런타임, 라이브러리, 소스 코드 지정 가능
    • Docker 컨테이너를 빌드하기 위한 스크립트
  • Dockerfile을 해석해 이미지가 어떻게 구성되어 있는지 파악 가능

🟠 특징

  • 텍스트 기반 스크립트 → 사람이 이해하고 관리하기 쉬움
  • 이미지 기반 빌드 지원 → 컨테이너의 크기 최소화 가능
  • 이미지 재사용 지원 → 동일한 애플리케이션을 여러 환경에서 배포하기 쉬움

🟠 장점

  • 애플리케이션의 배포 및 관리 단순화
  • 애플리케이션의 일관성 보장
  • 애플리케이션의 보안 강화

🟠 단점

  • Dockerfile을 작성하고 관리하는데 시간 소요
  • Dockerfile이 복잡해질 수 있음

📣 Dockerfile 구조

FROM <이미지>

RUN <명령어>

CMD <명령어>
  • FROM 키워드 다음으로는 컨테이너의 기본 이미지 지정
    • FROM은 항상 Dockfile의 맨 첫 줄에 있어야 함
  • RUN 키워드 다음으로는 컨테이너를 실행하기 전에 실행할 명령어 지정
  • CMD 키워드 다음으로는 컨테이너가 시작될 때 실행할 명령어 지정

📣 Dockerfile 명령어

  • FROM : 컨테이너의 기본 이미지를 지정
  • RUN : 컨테이너를 실행하기 전에 실행할 명령어를 지정
  • CMD : 컨테이너가 시작될 때 실행할 명령어를 지정
  • EXPOSE : 컨테이너의 외부 포트를 지정
  • ENV : 컨테이너의 환경 변수를 설정
  • ADD : 컨테이너에 파일 추가
  • COPY : 컨테이너에 파일 복사
  • VOLUME : 컨테이너의 볼륨을 지정
  • USER : 컨테이너의 사용자를 지정
  • WORKDIR : 컨테이너의 작업 디렉토리를 지정

📣 Dockerfile 실행

  • 실행
docker build -t <이미지 이름>
  • 이미지 생성 확인
docker images

📌 Dockerfile 사용 예제

FROM ubuntu:latest

RUN apt-get update && apt-get install -y nginx

CMD ["nginx", "-g", "daemon off;"]
  • Ubuntu의 최신 이미지를 기반으로 하고, nginx 웹 서버를 설치하며 nginx 웹 서버를 데몬 모드로 실행함
  • 위 Dockerfile을 사용해 이미지로 빌드
    • 현재 디렉토리의 Dockerfile을 사용해서 nginx 이미지를 빌드
docker build -t nginx
profile
자아를 찾아 떠나는 중,,,

0개의 댓글

관련 채용 정보