Hackathon 3일차 - 도커 사용

이강민·2024년 7월 23일
0

커널360

목록 보기
12/56
post-thumbnail

도커란?

도커(Docker)는 애플리케이션을 컨테이너(container)라는 격리된 환경에서 실행할 수 있게 해주는 오픈 소스 플랫폼입니다. 도커는 개발자가 코드를 로컬에서 작성하고 테스트한 뒤, 동일한 환경에서 배포할 수 있도록 지원합니다. 이를 통해 '작동하지 않는다'는 문제를 해결하고, 일관성 있는 배포가 가능해집니다.

도커는 어디에 쓰일까?

  • 애플리케이션 개발 및 테스트: 개발자는 로컬 환경에서 동일한 환경을 재현할 수 있습니다.
  • 지속적 통합 및 배포(CI/CD): 도커를 사용하여 애플리케이션을 빌드, 테스트, 배포할 수 있습니다.
  • 마이크로서비스 아키텍처: 각각의 서비스가 독립적으로 배포되고, 실행될 수 있습니다.
  • 클라우드 네이티브 애플리케이션: 클라우드 환경에서 확장 가능한 애플리케이션을 손쉽게 구축할 수 있습니다.

도커를 왜 쓸까?

  • 일관된 개발 환경: 도커는 어디서나 동일한 환경을 제공하므로, 환경 문제를 줄일 수 있습니다.
  • 이식성: 도커 컨테이너는 어디서든 실행 가능하므로, 개발 환경에서 프로덕션 환경으로의 이식이 쉽습니다.
  • 확장성: 컨테이너를 쉽게 복제하고 확장할 수 있어, 트래픽이 증가할 때 빠르게 대응할 수 있습니다.
  • 경량화: 도커 컨테이너는 가볍고, 빠르게 시작할 수 있어 효율적입니다.

내 컴퓨터에서 도커 세팅하기

맥에서 도커를 설치하고 설정하는 방법은 다음과 같습니다:

도커 데스크톱 설치

Docker Desktop for Mac을 다운로드합니다.
설치가 완료되면, Docker Desktop을 실행합니다.

도커 설치 확인

터미널을 열고 다음 명령어를 실행하여 도커가 제대로 설치되었는지 확인합니다:

docker --version

도커 버전이 출력되면, 설치가 완료된 것입니다.

도커 사용해보기

도커를 사용하여 간단한 MySQL 데이터베이스를 실행해보겠습니다.

MySQL 이미지 다운로드

먼저, 도커 허브에서 MySQL 이미지를 다운로드(pull)합니다.

docker pull mysql:latest

MySQL 컨테이너 실행

MySQL 컨테이너를 실행합니다.
여기서 my-mysql은 컨테이너의 이름이고, my-secret-pw는 MySQL 루트 사용자 비밀번호입니다.

docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql:latest

위 명령어는 MySQL 컨테이너를 my-mysql이라는 이름으로 백그라운드에서 실행하고, 호스트의 3306 포트를 컨테이너의 3306 포트에 매핑합니다.

MySQL 컨테이너 확인

실행 중인 컨테이너를 확인하려면 다음 명령어를 사용합니다:

docker ps

MySQL 접속

터미널을 통해 MySQL 컨테이너에 접속하려면 다음 명령어를 사용합니다:

docker exec -it my-mysql mysql -uroot -p

my-secret-pw를 입력하여 MySQL에 접속할 수 있습니다.

컨테이너 관리

실행 중인 컨테이너를 중지하려면 다음 명령어를 사용합니다:

docker stop my-mysql

중지된 컨테이너를 제거하려면 다음 명령어를 사용합니다:

docker rm my-mysql

프로젝트 적용 코드


$ cd {본인의 경로}/hackathon2-CodeArena-docker

$ docker compose -f docker-compose.yaml up

#도커 컨테이너가 종료된 상태일 경우
$ docker start code-arena-mysql

#도커 실행 후 mysql 터미널 접속
$ docker exec -it code-arena-mysql sh

# docker container 안의 작업입니다.
$ mysql -u root -p
# 비밀번호 입력
$ source /var/lib/mysql-files/init_db.sql
# schema 초기화 확인 
$ show tabels;
profile
AllTimeDevelop

0개의 댓글

관련 채용 정보