글 쓰기 앞서 용어부터 간단하게 설명하고 넘어가겠습니다.
(컨테이너 실행은 도커 데스크탑을 통해 진행합니다.)
Docker Image
도커 이미지는 컨테이너를 실행하기 위한 불변의 템플릿이다. 이 이미지는 애플리케이션 실행에 필요한 모든 것을 포함한다 — 코드, 런타임, 애플리케이션과 관련된 라이브러리, 환경 변수 및 설정 파일 등. 도커 이미지는 여러 계층으로 구성되어 있으며, 각 계층은 변경 사항을 저장한다. 이미지는 컨테이너를 생성하는 데 사용되며, 일반적으로 도커허브와 같은 레지스트리에서 가져오거나 Dockerfile 을 사용해 직접 빌드할 수 있다.
Docker container
도커 컨테이너는 도커 이미지의 실행 인스턴스이다. 컨테이너는 이미지를 기반으로 하여 실행되며, 격리된 환경에서 애플리케이션과 그 의존성을 캡슐화한다. 컨테이너는 가벼우며 시스템 리소스를 효율적으로 사용한다는 장점이 있다. 컨테이너는 시작될 때 생성되고 종료될 때 제거된다. 개발자는 동일한 이미지를 사용하여 여러 컨테이너를 동시에 실행할 수 있으며, 각 컨테이너는 독립적으로 실행되고 관리된다.
DockerFile
Dockerfile 은 도커 이미지를 자동으로 빌드하기 위한 스크립트 파일이다. 이 파일은 기본 이미지 설정, 실행할 명령어, 추가할 파일 및 디렉토리, 환경 변수 설정 등 이미지 생성에 필요한 지시어를 담고 있다. Dockerfile 은 docker build 명령어와 함께 사용되어 새로운 도커 이미지를 생성한다.
Dockerfile 을 사용하면 애플리케이션의 배포 과정을 표준화하고 자동화할 수 있으며, 필요한 모든 설정과 의존성이 문서화되어 재현 가능하다.
1단계: 샘플 애플리케이션 준비하기
샘플 애플리케이션을 얻는 방법은 두 가지입니다. Git을 사용할 수 있다면 저장소를 복제하는 것이 좋습니다. Git을 사용하지 않는다면 애플리케이션을 직접 다운로드할 수도 있습니다.
직접 다운로드는 링크를 참조해주세요 : https://docs.docker.com/guides/walkthroughs/run-a-container/#step-4-run-your-container
- Git으로 복제하기: 터미널을 열고 다음 명령어를 입력하세요.
git clone https://github.com/docker/welcome-to-docker
모든 실행문들이 done이 떴다면 성공적으로 복제가 된 것.
2단계: Dockerfile 살펴보기
컨테이너에서 코드를 실행하기 위한 가장 기본적인 요소는 Dockerfile입니다. Dockerfile은 컨테이너 내부에 포함될 내용을 명시합니다. 이번 샘플에는 이미 Dockerfile이 준비되어 있습니다. 자신의 프로젝트를 위한 Dockerfile을 작성할 때 참고하세요.
3단계: 첫 번째 이미지 빌드하기
컨테이너를 실행하기 위해서는 이미지가 필수적으로 있어야한다. 터미널에서 다음 명령어를 실행하여 이미지를 빌드하자. (명령어 내의 /path/to/welcome-to-docker/는 실제 경로로 변경해주세요.)
Docker 명령을 실행하려면 터미널을 사용해야 합니다. 운영 체제에 따라 다음을 수행하여 터미널을 열 수 있습니다.
Windows의 경우 시작 메뉴를 선택하고 을 지정한 cmd다음 명령 프롬프트 를 선택합니다 .
Mac의 경우 Dock에서 LaunchpadTerminal 아이콘을 선택하고 검색 필드에 지정한 다음 터미널 을 선택합니다 .
(필자는 윈도우를 사용 중이라 cmd창으로 진행했습니다.)
- 이미지 빌드하기:
cd /path/to/welcome-to-docker/ docker build -t welcome-to-docker .
실습을 하던 중 갑자기 오류가 떴다.
자세히 보니 도커를 실행하지 않고 도커에 접속해서 뜨는 오류였다.
같은 실수가 나오지 않게 도커 데스크탑을 실행하고 다시 명령어 입력.
Building 126. 1s (11/11) FINISHED 라는 문구가 나왔다면 성공한 것이다.
이제 도커 컨테이너에 이미지가 생성됐는 지 확인하러 가보자.
docker build -t welcome-to-docker . 여기서 "-t" 플래그는 이미지에 welcome-to-docker라는 이름을 태그로 지정합니다.
" . " 은 Docker가 Dockerfile을 찾을 수 있는 현재 위치를 나타냅니다.
4단계: 컨테이너 실행하기
이미지를 컨테이너로 실행하는 방법은 다음과 같다.
Docker Desktop에서 이미지 탭으로 이동.
실행하고자 하는 이미지 옆에 있는 '실행'을 클릭.
우리는 이미지명을 welcome-to-docker로 지정했기 때문에 welcome-to-docker의 Actions 화살표 클릭.
설정을 통해 추가 옵션을 설정할 수 있는 데 우리는 포트만 바꿀 예정.
호스트 포트에서 8089를 지정.
'실행'을 선택하여 컨테이너를 시작.
이제 컨테이너가 실행 중이며, 지정한 포트를 통해 애플리케이션에 접근할 수 있게 됐다.
간단하게 컨테이너 생성,삭제를 하고 마무리 하겠습니다.
docker run(docker pull + docker create + docker start) : Docker 이미지를 바탕으로 새로운 컨테이너를 생성하고 시작
처음 컨테이너를 생성한다면 이처럼 실행문들이 길게 나올 겁니다.
Status : Downloaded newer image for 이 떴다면 성공.
이처럼 한 개의 컨테이너가 생성되고 초록불이 떴다면 성공.
그러면 다시 stop을 통해 실행중인 컨테이너를 중지해보겠습니다.
컨테이너가 회색빛으로 바꼈다면 성공.
컨테이너를 정지했으니 삭제하고 마무리하겠습니다.
컨테이너에 아무것도 안 보이면 성공.
깃배쉬 명령어를 통해 확인할 수도 있으나 더 자세한 글은 https://codingpool.tistory.com/57 을 참고바랍니다.
마무리
오늘은 아주 간단한 예제와 실행을 통해 이미지를 빌드하고, 컨테이너를 실행하는 과정을 살펴보았는데
다음 글에선 애플리케이션을 배포하는 글을 적을 거 같습니다.
시간상 배포 과정에서 생기는 문제들은 건너뛰고 작성을 할 거 같은데
더 자세한 내용은 따로 공부를 통해 올려보도록 하겠습니다.
'Docker' 카테고리의 다른 글
[Docker] 쿠버네티스 기본 개념 / github action 사용해서 ecr 에 업로드하기 (1) | 2024.04.15 |
---|---|
[Docker] 도커로 로컬 서버 배포하기 (0) | 2024.04.08 |
[Docker] Docker로 배포 경험하기 (1) | 2024.04.03 |
[원티드] 포트폴리오에 Docker로 배포 경험 더하기 | 프리온보딩 BE 챌린지 4월 (0) | 2024.03.21 |