BackEnd/docker
-
도커 컴포즈(Docker Compose)BackEnd/docker 2022. 3. 24. 22:04
도커 컴포즈(Docker Compose)는 컨테이너를 이용한 서비스의 개발과 CI를 위해 여러 개의 컨테이너를 하나의 프로젝트로서 다룰 수 있는 작업 환경을 제공합니다. 즉, 매번 run 명령어에 옵션을 설정해 CLI(Command Line Interface)로 컨테이너를 생성하는 것은 어렵기에 여러 개의 컨테이너를 하나의 서비스로 정의해 컨테이너 묶음으로 관리하는 것입니다. 도커 컴포즈는 여러 개의 컨테이너의 옵션과 환경을 정의한 파일을 읽어 컨테이너를 순차적으로 생성하는 방식으로 동작합니다. 도커 컴포즈의 설정 파일은 run 명령어의 옵션을 그대로 사용할 수 있으며, 각 컨테이너의 의존성, 네트워크, 볼륨 등을 함께 정의할 수 있습니다. 또한 설정 파일에 정의된 서비스의 컨테이너 수를 유동적으로 조절..
-
도커 데몬(Docker Daemon)BackEnd/docker 2022. 3. 19. 10:04
도커의 구조는 크게 두 가지로 나뉩니다. 하나는 클라이언트로서의 도커이고, 다른 하나는 서버로서의 도커입니다. 실제로 컨테이너를 생성하고 실행하며 이미지를 관리하는 주체는 도커 서버이고, 이는 dockerd 프로세스로서 동작합니다. 도커 엔진은 외부에서 API 입력을 받아 도커 엔진의 기능을 수행하는데, 도커 프로세스가 실행되어 서버로서 입력을 받을 준비가 된 상태를 도커 데몬이라고 이야기합니다. 다른 하나는 도커 클라이언트입니다. 도커 데몬은 API를 입력을 받아 도커 엔진의 기능을 수행하는데, 이 API를 사용할 수 있도록 CLI(Command Line Interface)를 제공하는 것이 도커 클라이언트입니다. 사용자가 docker로 시작하는 명령어를 입력하면 도커 클라이언트를 사용하는 것이며, 도커..
-
Dockerfile 명령어BackEnd/docker 2022. 3. 18. 21:27
해당 페이지에서는 Dockerfile의 명령어와 자주 쓰는 각종 build 옵션에 대해 알아보겠습니다. 전체 목록을 확인하고 싶다면 도커 공식 사이트의 Dockerfile 레퍼런스를 참고하기 바랍니다. ENV: Dockerfile에서 사용될 환경변수를 지정합니다. 설정한 환경변수는 ${ENV_NAME} 또는 $ENV_NAME의 형태로 사용할 수 있습니다. 이 환경변수는 Dockerfile뿐 아니라 이미지에도 저장되므로 빌드된 이미지로 컨테이너를 생성하면 이 환경변수를 사용할 수 있습니다. 다음 Dockerfile에서는 test라는 환경변수에 /home이라는 값을 설정했습니다. # vi Dockerfile FROM ubuntu:14.04 ENV test /home WORKDIR $test RUN touch..
-
DockerfileBackEnd/docker 2022. 3. 16. 22:33
개발한 애플리케이션을 컨테이너화할 때 가장 먼저 생각나는 방법은 아래와 같습니다. 1. 아무것도 존재하지 않는 이미지(우분투, CentOS 등)로 컨테이너를 생성 2. 애플리케이션을 위한 환경을 설치하고 소스코드 등을 복사해 잘 동작하는 것을 확인 3. 컨테이너를 이미지로 커밋(commit) 위와 같은 방법을 사용하면 애플리케이션이 동작하는 환경을 구성하기 위해 일일이 수작업으로 패키지를 설치하고 소스코드를 깃(Git)에서 복제하거나 호스트에서 복사해야 합니다. 도커는 위와 같은 일련의 과정을 손쉽게 기록하고 수행할 수 있는 빌드(build) 명령어를 제공합니다. 완성된 이미지를 생성하기 위해 컨테이너에 설치해야 하는 패키지, 추가해야 하는 소스코드, 실행해야 하는 명령어와 셸 스크립트 등을 하나의 파일..
-
이미지 배포(Image Deploy)BackEnd/docker 2022. 3. 15. 22:10
도커 허브 저장소 저장소를 생성하려면 로그인이 필요하므로 메인 화면이나 페이지 오른쪽 위 [Sign up]을 클릭해 가입합니다. 이미지 저장소(Repository) 생성 상단 Repositories을 클릭하면 아래와 같은 화면을 볼 수 있습니다. 우측 상단에 [Create Repository] 버튼을 클릭해 저장소를 생성합니다. 저장소에 저장할 이미지의 이름: my-image-name과 간단한 설명: This image repository is for testing.을 입력합니다. 마지막으로 저장소의 Visibility를 설정해 저장소를 다른 사람에게 공개할지 여부를 결정합니다. 기본적으로 비공개 저장소는 1개만 무료이고 그 이상 사용하려면 매달 일정 금액을 결제해야 합니다. [Create] 버튼을 눌러..
-
도커 이미지(Docker Image)BackEnd/docker 2022. 3. 15. 07:30
도커는 기본적으로 도커 허브(Docker Hub)라는 중앙 이미지 저장소에서 이미지를 내려받습니다. 도커 허브는 도커가 공식적으로 제공하고 있는 이미지 저장소로서, 도커 계정을 가지고 있다면 누구든지 이미지를 올리고 내려받을 수 있기 때문에 다른 사람들에게 이미지를 쉽게 공유할 수 있습니다. 단, 도커 허브는 누구나 이미지를 올릴 수 있기 때문에 공식(Official) 라벨이 없는 이미지는 사용법을 찾을 수 없거나 제대로 동작하지 않을 수 있습니다. 또한 이미지 저장소를 다른 사람들에게 공개하지 않기 위해 비공개(Private) 저장소를 사용하려면 비공개 저장소의 수에 따라 요금을 지불해야 합니다. docker create, docker run, docker pull의 명령어로 이미지를 내려받을 때 도커..
-
컨테이너 자원 할당 제한BackEnd/docker 2022. 3. 12. 09:54
컨테이너를 생성하는 run, create 명령어에서 컨테이너의 자원 할당량을 조정하도록 옵션을 입력할 수 있습니다. 컨테이너에 자원 할당 옵션을 설정하지 않으면 호스트의 자원을 전부 점유해 다른 컨테이너들뿐 아니라 호스트 자체의 동작이 멈출 수도 있습니다. 현재 컨테이너에 설정된 자원 제한을 확인하는 가장 쉬운 방법은 docker inspect 명령어를 입력하는 것입니다. $ docker inspect 컨테이너 이름 Note. run 명령어에서 설정된 컨테이너의 자원 제한을 변경하려면 update 명령어를 사용합니다. $ docker update (변경할 자원 제한) (컨테이너 이름) $ docker update --cpuset-cpus=1 centos ubuntu 컨테이너 메모리 제한 docker ru..
-
컨테이너 로깅(Container Logging)BackEnd/docker 2022. 3. 12. 09:06
json-file 로그 사용 도커는 컨테이너의 표준 출력(StdOut)과 에러(StdErr) 로그를 별도의 메타데이터 파일로 저장하며 이를 확인하는 명령어를 제공합니다. mysql 5.7 버전의 컨테이너를 생성합니다. docker run -d --name mysql \ > -e MYSQL_ROOT_PASSWORD=1234 \ > mysql:5.7 docker logs 명령어로 컨테이너의 표준 출력을 확인함으로써 애플리케이션이 잘 구동되는지 확인합니다. 컨테이너의 로그가 너무 많아 읽기 힘들다면 --tail 옵션을 써서 마지막 로그 줄부터 출력할 줄의 수를 설정할 수 있습니다. 컨테이너에서 실시간으로 출력되는 내용을 확인하려면 -f 옵션을 써서 로그를 스트림으로 확인할 수도 있습니다(애플리케이션 개발 시 ..