Siner's Blog


awscheat sheetcomputer sciencecontainercrawlingdartdatabasedjangodockergitgolanggraphqlhrhttpiacjavakubernetesmapmonitoringnestjsnetworknodeooppythonsecurityserverlessstorageterraformttbkktypescript,javascriptuxvalidation

https://user-images.githubusercontent.com/34048253/138473541-ca9eef72-8d1f-4a24-8115-fe96b01f1eb0.png
도커와 컨테이너 생태계의 변화과정
의식의 흐름대로 알아보는 도커와 쿠버네티스의 세부구조
17 min read2021.10.23

container 생태계의 변화 2013년 Docker가 처음으로 세상에 나타난 이후 IT업계는 정말 크게 변했습니다. 어플리케이션의 배포단위는 이제 war, jar, zip 등이 아니라 Docker 이미지가 되었고 Docker를 사용할 수 있는 환경이기만 하면 어플리케이션은 Windows에서든, Ubuntu에서든 동일하게 동작하였습니다. Docker의 이러한 특성을 이용해 수백 수천대의 서버를 운영하는 환경에서 Docker를 도입하는 사례들이 늘어나기 시작했습니다. 하지만 포맷과 런타임에 대한 특정한 규격이 없다 보니 컨테이너의 미래는 불안했습니다. 도커가 사실상의 컨테이너 표준 역할을 했지만 코어OS(CoreOS)는 도커와는 다른 규격으로 표준화를 추진하려 했습니다. 이때 Docker Engine에는 API, CLI, 네트워크, 스토리지 등 많은 기능들이 하나의 패키지에 담겨있었고, Docker 측에서는 Monolithic한 Docker Engine…

https://user-images.githubusercontent.com/34048253/155849229-de13c0fb-a354-4129-96f7-96f346bcb56d.png
[번역] Dockerfile 레퍼런스 (2) - Buildkit
동시성을 가지며, 캐시 효율적이며 Dockerfile에 독립적인 빌더 툴킷
2 min read2020.3.29

공식 레퍼런스를 토대로 작성되었습니다. BuildKit 도커 버전 18.09부터, moby/buildkit를 통한 빌드를 지원합니다. Buildkit 백엔드는 기존 빌드방식과 비교해 많은 이점이 있습니다. 사용하지 않는 빌드 단계를 탐지하여 실행하지 않음 독립적인 빌드 스테이지의 병렬화 변경된 context만 전송 context안의 사용하지 않는 파일을 탐지하여 전송하지 않음 새로운 기능들과 함께 외부 도커파일 사용 중간 이미지 및 컨테이너 관련 API 사용함에 있어서 생기는 부작용 방지 자동 정리를 위한 캐시 우선순위 지정 Buildkit 백엔드를 사용하려면 docker build 명령어를 사용하게 전에 CLI를 통해 DOCKER_BUILDKIT=1이라는 환경변수를 지정해야합니다. Buildkit 기반의 빌드를 가능하게 하는 실험적인 도커파일 문법은 BuildKit 저장소의 문서를 참조해주세요.

https://user-images.githubusercontent.com/34048253/155849229-de13c0fb-a354-4129-96f7-96f346bcb56d.png
[번역] Dockerfile 레퍼런스 (3) - Format
가독성을 높이는 명령어 포맷
1 min read2020.3.29

공식 레퍼런스를 토대로 작성되었습니다. Format Dockerfile의 포맷은 다음과 같습니다. Instruction은 대문자 소문자를 가리지는 않습니다, 하지만 이러한 컨벤션을 지킴으로써, arguments를 좀더 쉽게 파악할 수 있습니다. 도커는 Dockerfile에 있는 instruction을 순서대로 실행시킵니다. Dockerfile은 반드시 `FROM`명령어로 시작해야합니다. FROM 명령어 이전에 parser directives, comments, ARG를 사용할 수도 있습니다. parser directives, comments, ARG에 대한 번역은 추후 작성될 예정입니다.

https://user-images.githubusercontent.com/34048253/155849229-de13c0fb-a354-4129-96f7-96f346bcb56d.png
[번역] Dockerfile 레퍼런스 (4) - Parser Directives
FROM 명령어 이전에 사용할 수 있는 지시문
12 min read2020.3.29

공식 레퍼런스를 토대로 작성되었습니다. Parser directives 파서 지시어는 선택사항이며, 이 지시어 아랫줄부터 영향을 주게 됩니다. 파서 지시어는 빌드를 레이어를 추가하지 않고, 빌드 단계에서 나타나지 않습니다. 파서 지시어는 # directive=value와 같은 주석 형태로 표기됩니다. 같은 종류의 지시어를 여러번 사용할 수 없습니다. 지시어 이후에 빈 라인이 나타나거나 빌더 명령어가 실행되면, 도커는 그 이후에 나타나는 파서 지시어를 모두 주석으로 간주하고 유효성 검사를 하지 않습니다. 그러므로, 모든 파서 지시어는 Dockerfile…

https://user-images.githubusercontent.com/34048253/155849229-de13c0fb-a354-4129-96f7-96f346bcb56d.png
[번역] Dockerfile 레퍼런스 (1) - Usage
도커 데몬의 작동방법, 이미지 빌드 & 태깅, 캐시이미지 가져오기
7 min read2020.3.29

공식 레퍼런스를 토대로 작성되었습니다. 도커는 Dockerfile을 읽어서 자동으로 이미지를 빌드할 수 있습니다. Dockerfile은 이미지를 만들기 위해 사용되는 모든 명령어를 담고있는 문서입니다. 이러한 명령어들은 실제로 유저가 CLI환경에서 한줄씩 입력하여 사용할 수 있는 명령어들입니다. docker build를 사용하여 여러 줄의 명령어로 이루어진 빌드 과정을 자동으로 진행할 수 있습니다. 이 페이지를 다 읽은 후에, Dockerfile Best Practices를 읽어보는 것을 추천드립니다. Usage docker build 명령어는 Dockerfile과 context로부터 정보를 가져와서 이미지를 빌드합니다. context는 파일들이 위치한 위치를 가리키며, PATH 또는 URL의 형태를 지닙니다. PATH는 로컬 파일시스템 내의 폴더이고, URL은 Git 저장소 경로가 됩니다. context 내용을 불러오는 방식은 재귀적으로 진행됩니다. 그러므로, PATH…

https://user-images.githubusercontent.com/34048253/155849543-18ab95ed-5c65-4020-9d31-c7071450e2df.png
포스트그레스(PostgreSQL)로 설명하는 도커 컴포즈(Docker Compose) 초간단 사용법
3 min read2019.3.2

이번 장에서는 Docker Compose의 일반적인 사용방법과, 이를 사용하여 PostgreSQL을 배포하는 방법에 대해서 설명하겠습니다. 0) Compose란? Overview of Docker Compose Compose란 여러개의 도커 컨테이너들을 한꺼번에 관리(빌드, 배포 등) 할 수 있는 Tool입니다. Compose를 사용하면 YAML 파일을 사용하여 응용 프로그램의 서비스를 구성 할 수 있습니다. YAML 파일을 작성하면 단 하나의 명령어만으로 모든 서비스을 시작할 수 있습니다. Dockerfile을 작성하세요. (없어도 무방합니다.) docker-compose.yml파일을 작성하여 모든 서비스가 한번에 배포되도록 하세요. docker-compose up명령어를 사용하여 모든 서비스를 한번에 배포하세요. 추가 설명을 붙이자면, docker run…

https://user-images.githubusercontent.com/34048253/155849594-90045484-a15e-4b3b-abf0-2ab382b9a518.png
나만의 도커(Docker) 이미지를 만들어서 장고(Django) 서비스 배포하기
6 min read2019.2.25

저번 장에서는 Django 공식 도커 이미지를 확인해보았고, Deprecated되었음을 확인했습니다. 이번 장에서는 나만의 Django 이미지를 직접 만들어서 배포해보고, docker hub에 업로드까지 해보겠습니다. 본 포스팅의 프로젝트 소스는 아래의 링크를 통해 얻을 수 있습니다. github.com/siner308/django-with-custom-image docker image from cultivatehq.com 0) Dockerfile 도커 이미지를 만들기 위해서는 Dockerfile이 필요합니다. Dockerfile 작성의 힌트를 얻기 위해, Django의 공식 Dockerfile을 확인해봅니다. Official Dockerfile (Deprecated) 아래는 제가 만든 Dockerfile입니다. 위의 Deprecated 버전과는 다르게 python3.6을 기반으로 하여 Django 2.0 이상의 버전을 사용하도록 하였습니다. My Dockerfile…

https://user-images.githubusercontent.com/34048253/155849664-c7f20fd7-0925-417c-9eed-16a16530facb.png
장고(Django) 공식 이미지로 설명하는 도커(Docker)의 기본적인 사용법
7 min read2019.2.16

이번 장에서는 Django 공식 이미지를 사용하여 Docker의 기본 개념에 대해 설명하겠습니다. Custom 이미지를 생성하여 Django를 배포하는 방법에 대해서는 다음 장에서 다루겠습니다. 0) Docker Docker란 무엇입니까? Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼입니다. Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있습니다. Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행될 것임을 확신할 수 있습니다. 1) Docker Hub Docker Hub에서는 컨테이너 이미지를 받아서 사용하고, 자신만의 이미지를 만들어서 업로드 할 수도 있습니다. 프로젝트에 사용할 Django 이미지를 얻기 위해 hub.docker.com…

1