
4. Dockerfile과 Image *미완성*
Dockerfile과 이미지에 대해서 알아봅시다.
2024년 10월 15일
Jisoo.
기술블로그
Docker를 설치하고 어떻게 사용하는지 알아봅시다.
Docker를 사용하려면 Docker Engine, CLI, Compose를 설치해야 합니다.
macOS에서는 brew
를 통해 설치할 수 있습니다.
1brew install docker 2brew install docker-compose
Docker Engine은 컨테이너를 생성하고 관리하는 기능을 제공하는 서버에 해당합니다.
커뮤니티 에디션과 엔터프라이즈 에디션으로 나뉩니다. 보통 커뮤니티 에디션을 사용합니다.
사용자는 Docker CLI를 통해 명령어를 보내어 엔진과 상호작용할 수 있습니다.
전송된 명령어는 서버(Daemon)를 통해 컨테이너 관련 작업을 수행합니다.
Docker Engine은 리눅스 환경에서 실행되므로 Windows, macOS에서 docker를 사용하기 위해서는 리눅스 가상머신을 설정해야 합니다.
Docker Desktop은 리눅스 가상 머신을 설정하여 별 다른 세팅 없이 Docker를 사용할 수 있게 하는 어플리케이션입니다.
Engine, CLI, Compose + 추가 기능을 제공합니다.
Docker 자체는 오픈 소스지만 Docker Desktop의 경우 개인 사용자는 무료이고 규모가 큰 회사는 유료입니다.
Docker Desktop 이외에도 minikube
등을 사용해서 리눅스 VM 설정을 할 수 있습니다.
복수의 컨테이너를 하나의 서비스로 정의하는 도구입니다.
docker-compose.yml
파일을 작성하여 컴포즈를 실행할 수 있습니다.
터미널에서 해당 명령어를 입력하여 Docker 설치 여부를 알 수 있습니다.
1docker -version 2docker-compose -v
올바르게 설치되었다면 터미널에 버전 정보가 표시됩니다.
Docker의 실행은 Docker Desktop을 실행하거나 리눅스 환경에서 서비스를 시작할 수 있습니다.
1sudo systemctl start docker
Docker를 사용하기 위해서는 이미지
가 필요합니다.
이미지를 생성(빌드)하기 위해서는 실행 파일과 Dockerfile
이 필요합니다.
먼저 호스트 이름, IP, 주소를 출력하는 리눅스 파일을 작성해보겠습니다.
1echo --------------------- 2echo My name is: 3echo $(hostname) 4echo --------------------- 5echo I''m running on: 6echo $(uname -s -r -m) 7echo --------------------- 8echo My address is: 9echo $(ifconfig eth0 | grep inet) 10echo ---------------------
다음으로 Dockerfile
을 작성합니다.
1FROM alpine:3.9 2COPY cmd.sh . 3RUN chmod +x cmd.sh 4CMD ./cmd.sh
실행 파일과 Dockerfile
이 준비되었습니다.
이미지는 다음의 명령어로 생성 가능합니다.
1docker build -t 이미지명 .
일련의 빌드 과정을 거쳐 test
라는 이름의 이미지가 생성되었습니다.
생성된 이미지들의 목록은 다음 명령어로 확인 가능합니다.
1docker images
test
Repository를 가진 이미지가 제대로 생성된 것을 확인할 수 있습니다.
생성된 이미지를 통해 컨테이너를 실행해보겠습니다.
1docker container run 이미지명
컨테이너 실행 시 미리 작성한 실행 파일대로 해당 컨테이너의 내용과 호스트 이름, IP 주소가 함께 출력됩니다.
Docker Desktop
에서 생성된 컨테이너와 이미지, 상태 등을 확인할 수 있습니다.
생성된 컨테이너는 별도의 처리를 하지 않을 경우 실행 파일을 읽은 후 종료(Exited)됩니다.
해당 이미지를 사용하여 계속해서 컨테이너를 생성 할 경우, 생성될 때마다 호스트 이름이 바뀌는 것을 알 수 있습니다.
이는 각각의 컨테이너가 독립적인 환경을 갖고 있다는 것을 의미합니다.
간단하게 Docker 설치 방법과 구성 요소에 대해 알아보았습니다.
또한 이미지를 생성하고 컨테이너를 실행해 보았습니다.
다음은 컨테이너에 대해서 간단히 알아보겠습니다.
1