이번 글에서는 도커 컨테이너를 실제 배포하기 위해 도커 이미지로 빌드하는 것에 대해 알아보려고 한다. 도커 이미지 구조를 알아보고, Dockerfile에 대해 알아본다. 도커 이미지 구조 다음 이미지는 도커 이미지의 구조를 도식화한 그림이다. 왼쪽은 도커 이미지이고, 오른쪽은 도커 컨테이너이다. Docker Image에는 ubuntu, nginx, web app 의 세 가지 이미지로 구성되어 있다. nginx는 ubuntu 를 기반으로 만들어졌다고 가정하고, web app 이미지는 nginx 이미지를 기반으로 만들어졌다고 가정하겠다. Ubuntu 이미지의 경우 Layer A, B, C 의 세 레이어로 구성되어 있는 것을 볼 수 있는데, 실제로 도커 이미지의 구조는 레이어 아키텍처로, 새로운 변경 사항이 ..
컨테이너를 관리함에 있어 로그를 어떻게 관리할 것인가는 운영 측면에서 중요한 사항이다. 이번 글에서는 컨테이너의 로그를 확인하고, 호스트 운영체제에서 로그는 어디에 저장되는지, 로그 용량 관리 등에 대해 알아보고자 한다. 표준 출력 (STDOUT), 표준 에러 (STDERR) 애플리케이션에서 로그를 다룰 때, 일반적으로 해당 언어에서 지원하는 로그 프레임워크를 사용하여 표준 출력이나 ElasticSearch 와 같은 서비스와 연동하는 등 다양한 방법이 있는데, 도커 컨테이너에서는 STDOUT과 STDERR 로 내보내는 것을 표준으로 삼아야 한다. 도커가 해당 출력 로그를 쌓아 로깅 드라이버가 처리할 수 있도록 하는데, 로깅 드라이버를 다양하게 제공한다. 본인의 사용 목적에 맞는 드라이버를 선택하여 사용하..
도커의 네트워크 구조를 알아보고, 실행시키는 컨테이너의 포트를 노출시키는 방법을 알아보고, Expose 와 Publish 에 대해 알아본다. 도커 네트워크 구조 도커를 호스트 운영체제에 설치하면 기본적으로 여러 네트워크 드라이버가 설치된다. 기본적으로 도커 컨테이너를 실행할 때 사용할 네트워크를 지정할 수 있다. eth0 : 호스트에서 사용하고 있는 기본 네트워크인데, EC2를 사용하고 있다면 EC2 의 private IP 가 설정되어 있는 네트워크 장치이다. 컨테이너를 실행한 후 네트워크 장치 목록을 확인해 보면 eth0과 l0 의 두 가지 네트워크가 설치되어 있는 것을 확인할 수 있다. docker0 : 네트워크를 따로 지정하지 않으면 기본적으로 생성되는 docker0 이라고 하는 브릿지 네트워크를 ..
이번 글에서는 도커의 명령어 중 exec 명령어에 대해 다루어 보고자 한다. exec 명령어는 실행 중인 컨테이너에 특정 명령어를 실행하는 도커 명령어이다. 기존에 실행 중인 컨테이너에 대해 특정 이슈를 해결하기 위해 빈번하게 사용되는 명령어이다. 기본적인 명령어 체계는 다음과 같다. docker exec [container] [command] 우선 실습을 위해 test-container 의 이름을 가진 nginx 이미지 기반의 컨테이너를 하나 띄워 본다. docker run -d --name test-container nginx 현재 실행 중인 것을 확인한 후, exec 명령어를 이용하여 env 명령어를 전달해 본다. 다음과 같이 컨테이너의 환경변수가 나열되는 것을 확인할 수 있다. docker exe..
이번 글에서는 도커 컨테이너의 환경변수에 대해 공부해보려고 한다. 도커 컨테이너를 실행할 때 필요한 변수, 파일과 같은 것들을 주입하여야 하는데, 컨테이너에 변수를 주입하는 방법으로 가장 대표적인 방법이 환경변수를 통한 방법이다. 환경변수를 어떻게 주입할 수 있는지 다루어 본다. 도커를 통해 환경변수를 주입하는 방법은 두 가지가 있다. -e 옵션을 이용하여 docker run 시에 환경변수 주입 -e 라는 옵션을 이용하여 환경 변수를 주입할 수 있다. 다음 명령어를 통해 MY_HOST=tistory.com 이라는 환경변수를 주입한 ubuntu:focal 이미지를 기반으로 하는 컨테이너를 실행하고, bash 쉘로 접속할 수 있다. docker run -i -t -e MY_HOST=tistory.com ub..
이번 글에서는 도커 컨테이너의 엔터리포인트와 커맨드에 대해 알아보고자 한다. 엔트리포인트와 커맨드의 개념이 Dockerfile 과 도커 명령어에서 사용될 수 있다. 엔트리포인트 (Entrypoint) 도커 컨테이너가 실행될 때 하나의 프로세스로서 실행되게 된다. 이때 고정적으로 실행되는 스크립트 혹은 명령어를 말한다. 이는 생략할 수 있으며, 생략할 경우 커맨드에 지정된 명령어로 수행된다. 엔트리포인트를 지정할 경우, 다음과 같은 형식으로 엔트리포인트가 prefix 처럼 실행되고, 그 뒤에 커맨드가 실행된다. [Entrypoint] [Command] 커맨드 (Command) 도커 컨테이너가 실행할 때 수행할 명령어 혹은 엔트리포인트에 지정된 명령어에 대한 인자 값으로 사용된다. 엔트리포인트와 커맨드는 D..
이번 글에서는 도커 컨테이너를 생성하는 단계부터, 실행하고, 중지하고, 삭제하는 과정까지의 라이프사이클 (생명주기) 에 대해 알아보고자 한다. Create 새로운 컨테이너를 생성하는 주기이다. docker create 명령어를 활용할 수 있다. 컨테이너 생성 docker create [image] 컨테이너 생성 및 시작 (가장 많이 사용) docker run [image] 이미지가 없을 경우 자동으로 pull 을 먼저 수행하여 이미지를 다운로드 받는다. 이외에도 다양한 옵션들이 있다. docker run \ -i \ # [interactive] 호스트의 표준 입력 (키보드 등) 을 컨테이너와 연결한다. -t \ # [terminal] TTY을 할당하여 Terminal (Shell) 을 사용할 수 있도록 ..
지난 글에 이어 이번 글에서는 도커 설치 후 도커의 이미지와 컨테이너의 구성 요소에 대해 알아보고자 한다. 도커 이미지와 컨테이너는 도커에서 가장 중요한 단위이다. 도커를 활용하다 보면 이미지 다운로드, 컨테이너 실행, 이미지 빌드 등 대부분의 과정이 이미지와 컨테이너에 관련된 작업이다 보니 이에 대해 이해하는 것이 중요하다. 이미지 컨테이너를 생성할 때 필요한 기본 요소이다. 컨테이너의 목적에 맞는 바이너리와 라이브러리가 기본적으로 설정되어 있다. 예를 들어 nginx 이미지를 다운로드하면, 별도의 작업을 거치지 않아도 nginx 실행에 필요한 라이브러리들이 기본적으로 설치되어 있는 것을 볼 수 있다. 컨테이너 이미지를 통해 만들어진 프로세스이다. 호스트와 다른 컨테이너로부터 격리되어 있다. 격리된 시..
- Total
- Today
- Yesterday
- uiux
- 메터리얼
- ecr
- main
- dockerfile
- DESIGN
- 자료형
- Container
- EC2
- 테라폼
- HCL
- Java
- 안드로이드
- cmd
- 스타트업
- Android
- 머티리얼
- env
- 도커
- AWS
- 자바
- Material
- 디자인
- dockerhub
- Terraform
- Operator
- 자격증명
- 컨테이너
- entrypoint
- docker
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |