- 이번 퀘스트에서는 컨테이너 기술과 그 활용에 대해 알아보겠습니다.
- 컨테이너 기술
- Docker
- docker-compose
컨테이너는 어떻게 동작하나요? 다른 배포판을 사용할 수 있게 하는 원리가 무엇일까요?
동작💡
- 컨테이너를 만들기 위해 필요한 이미지를 빌드하고 이미지는 컨테이너를 생성하기 위해 필요한 모든 파일, 설정, 실행 파일 등이 포함된 패키지이며, 이미지는 도커 등의 컨테이너 플랫폼에서 제공하는 빌드 도구를 사용해 생성합니다.
- 이미지를 사용하여 컨테이너를 실행하는 과정을 거치며, 컨테이너는 이미지를 기반으로 생성한 뒤 호스트 운영체제에서 격리된 공간에서 실행합니다. 컨테이너는 실행되면서 필요한 자원을 호스트 운영체제에서 가져와 사용하고, 실행 결과를 호스트 운영체제에 반환합니다.
다른 배포판 사용💡
컨테이너화된 애플리케이션을 배포하기 위해서는, 도커와 같은 컨테이너 관리 도구를 이용합니다. 이를 이용하면 컨테이너를 빠르게 생성하고 배포할 수 있으며, 다른 배포판을 사용하더라도 동일한 애플리케이션을 실행할 수 있습니다.
도커 컨테이너에 호스트의 파일시스템이나 네트워크 포트를 연결하려면 어떻게 해야 할까요?
호스트의 파일시스템을 컨테이너에 연결하려면 -v 옵션을 사용합니다.
$ docker run -v [연결하고 싶은 디렉토리 명 및 경로] : [컨테이너의 디렉토리] [도커 image 명]
호스트의 네트워크 포트를 컨테이너에 연결하려면 -p 옵션을 사용합니다.
$ docker run -p [호스트 포트 번호] : [컨테이너 포트 번호] [도커 image 명]
도커 컨테이너에서 런타임에 환경변수를 주입하려면 어떻게 해야 할까요?
환경변수 주입💡
$ docker run -e [환경 변수] = [설정 값] [도커 image 명]
여러개의 환경 변수 주입💡
- env.list 파일 수정
[환경 변수]=[설정 값]
[여러개의 환경 변수]=[여러개의 설정 값]
#ex
MY_ENV_VAR=my-value
ANOTHER_ENV_VAR=another-value
- 도커 실행
$ docker run --env-file ./env.list [도커 이미지 명]
도커 컨테이너의 stdout 로그를 보려면 어떻게 해야 할까요?
- 도커 CLI를 이용하는 방법
$ docker logs [OPTIONS] CONTAINER
실시간 모니터링이 필요 할때 💡
$ docker logs -f [컨테이너명]
- 도커 컨테이너 내부에서 로그를 출력하는 방법
$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
실행중인 도커 컨테이너에 들어가 bash 등의 쉘을 실행하고 로그 등을 보려면 어떻게 해야 할까요?
$ docker exec -it [컨테이너 명] [실행할 명령어]
- 도커를 설치하고 그 사용법을 익혀 보세요.
- 메모장 시스템 서버를 컨테이너 기반으로 띄울 수 있게 수정해 보세요. (docker-compose는 사용하지 않습니다)
- 컨테이너를 Docker Hub에 올리고, 발급받은 학습용 AWS 계정에 EC2 인스턴스를 생성한 뒤, 해당 컨테이너를 띄워서 서비스 해 보세요.
- docker-compose를 사용하여, 이미지 빌드와 서버 업/다운을 쉽게 할 수 있도록 고쳐 보세요.
- 도커 외의 컨테이너 기술의 대안은 어떤 것이 있을까요?
- 맥이나 윈도우에서도 컨테이너 기술을 사용할 수 있는 원리는 무엇일까요?