도커의 근간 기술을 이해하기 위해 도커의 역사를 살펴보고, 클러스터 환경으로 컨테이너 환경을 운영하는 쿠버네티스에 대한 핵심 개념에 대해 알아봅니다. 마지막으로 쿠버네티스 클러스터를 손쉽게 생성하고 관리할 수 있는 네이버 클라우드 플랫폼 Kubernetes service를 데모를 통해 소개해드립니다 | To understand Docker's underlying technology, we look at Docker's history and learn about the core concepts of Kubernetis, which operates a container environment in a cluster environment. Lastly, I will introduce Naver's cloud platform Kubernetes service, which allows you to easily create and manage Kubernetes clusters, through a demo.
도커의 근간 기술을 이해하기 위해 도커의 역사를 살펴보고, 클러스터 환경으로 컨테이너 환경을 운영하는 쿠버네티스에 대한 핵심 개념에 대해 알아봅니다. 마지막으로 쿠버네티스 클러스터를 손쉽게 생성하고 관리할 수 있는 네이버 클라우드 플랫폼 Kubernetes service를 데모를 통해 소개해드립니다 | To understand Docker's underlying technology, we look at Docker's history and learn about the core concepts of Kubernetis, which operates a container environment in a cluster environment. Lastly, I will introduce Naver's cloud platform Kubernetes service, which allows you to easily create and manage Kubernetes clusters, through a demo.
2016 아이펀팩토리 Dev Day 발표 자료
강연 제목 : Docker 로 Linux 없이 Linux 환경에서 개발하기
발표자 : 김진욱 CTO
<2016>
- 일시 : 2016년 9월 28 수요일 12:00~14:20
- 장소 : 넥슨 판교 사옥 지하 1층 교육실
도커부터 시작하여 쿠버네티스까지 각 서비스의 기능 및 구성요소에 대해 자세히 소개해 드립니다 | Learn more about the features and components of each service, starting with a Docker and ending with Kubernetes.
[17.01.19] docker introduction (Korean Version)Ildoo Kim
Docker(도커) 소개를 위해 사용했던 자료입니다.
제가 속한 개발팀에서는 도커 컨테이너를 기반으로 개발부터 배포까지 가능한 환경 및 인프라를 구축하여 개발팀에서 대다수의 오퍼레이션까지 관여하면서 Devops 형태로 운영합니다.
Docker(도커)를 처음 사용하거나 개념적으로 익숙하지 않은 초보를 위해 만든 자료입니다.
슬라이드에서 사용된 스크립트/코드는 아래에 있습니다.
https://github.com/ildoonet/docker_introduction
----
김일두, Software Engineer @ Kakao
Github : https://github.com/ildoonet
Linkedin : https://www.linkedin.com/in/ildoo-kim-56962034/
이 발표는 [야생의 땅: 듀랑고]의 지형 배포 시스템과 생태계 시뮬레이션 자동화 시스템에 대한 이야기를 다룹니다. 듀랑고의 각 섬은 크기와 지형, 기후 조건이 다양하고 섬의 개수가 많아서 수동으로 관리하는 것은 사실상 불가능합니다. 몇번의 사내 테스트와 베타 테스트를 거치면서 이러한 문제를 해결해주는 자동화된 도구의 필요성이 절실해졌고, 작년에 NDC에서 발표했던 생태계 시뮬레이터와 Docker, 그리고 아마존 웹서비스(AWS)를 이용하여 수많은 섬들을 자동으로 생성하고 관리하는 자동화 시스템을 구축하게 되었습니다. 그 과정에서 했던 고민들, 기존의 애플리케이션을 "Dockerizing" 했던 경험, AWS의 각 서비스들을 적절히 활용했던 이야기, AWS의 각 지역별 요금이 상이하다는 점을 이용해서 비용을 절감한 사례, 그리고 자동화 시스템의 문제점과 앞으로의 방향에 대해서 이야기 할 계획입니다.
2016 아이펀팩토리 Dev Day 발표 자료
강연 제목 : Docker 로 Linux 없이 Linux 환경에서 개발하기
발표자 : 김진욱 CTO
<2016>
- 일시 : 2016년 9월 28 수요일 12:00~14:20
- 장소 : 넥슨 판교 사옥 지하 1층 교육실
도커부터 시작하여 쿠버네티스까지 각 서비스의 기능 및 구성요소에 대해 자세히 소개해 드립니다 | Learn more about the features and components of each service, starting with a Docker and ending with Kubernetes.
[17.01.19] docker introduction (Korean Version)Ildoo Kim
Docker(도커) 소개를 위해 사용했던 자료입니다.
제가 속한 개발팀에서는 도커 컨테이너를 기반으로 개발부터 배포까지 가능한 환경 및 인프라를 구축하여 개발팀에서 대다수의 오퍼레이션까지 관여하면서 Devops 형태로 운영합니다.
Docker(도커)를 처음 사용하거나 개념적으로 익숙하지 않은 초보를 위해 만든 자료입니다.
슬라이드에서 사용된 스크립트/코드는 아래에 있습니다.
https://github.com/ildoonet/docker_introduction
----
김일두, Software Engineer @ Kakao
Github : https://github.com/ildoonet
Linkedin : https://www.linkedin.com/in/ildoo-kim-56962034/
이 발표는 [야생의 땅: 듀랑고]의 지형 배포 시스템과 생태계 시뮬레이션 자동화 시스템에 대한 이야기를 다룹니다. 듀랑고의 각 섬은 크기와 지형, 기후 조건이 다양하고 섬의 개수가 많아서 수동으로 관리하는 것은 사실상 불가능합니다. 몇번의 사내 테스트와 베타 테스트를 거치면서 이러한 문제를 해결해주는 자동화된 도구의 필요성이 절실해졌고, 작년에 NDC에서 발표했던 생태계 시뮬레이터와 Docker, 그리고 아마존 웹서비스(AWS)를 이용하여 수많은 섬들을 자동으로 생성하고 관리하는 자동화 시스템을 구축하게 되었습니다. 그 과정에서 했던 고민들, 기존의 애플리케이션을 "Dockerizing" 했던 경험, AWS의 각 서비스들을 적절히 활용했던 이야기, AWS의 각 지역별 요금이 상이하다는 점을 이용해서 비용을 절감한 사례, 그리고 자동화 시스템의 문제점과 앞으로의 방향에 대해서 이야기 할 계획입니다.
저번 시간에 CI/CD에 대해서 간단하게 공부해봤으니 이번에는 툴 하나를 정해서 사용해보려고 합니다.
Jenkins, AWS Codepipeline 등 유명한 CI/CD 툴이 많지만 이번에는 github action을 사용해보려고 해요!
전세계적으로 많이 사용되는 github에서 지원하는 CI/CD 기능으로 진행 중인 프로젝트에 아주 간단하게 적용할 수 있는데 같이 공부해봐요!
2. 지난 이야기 - 0
● 도커 컨테이너의 network interface가 host 머신에서 안 보이는 이유
● 도커 컨테이너에서 loopback network interface가 다뤄지는 방식
3. linux namespace
● namespace에 속해있는 프로세스들에게 고유한 리소스를 사용하는
듯한 추상화를 제공하는 기능
● cgroup, IPC, network, mount, pid, time, user, UTS 타입의
namespace가 존재
https://man7.org/linux/man-pages/man7/namespaces.7.html
4. linux namespace
● namespace에 속해있는 프로세스들에게 고유한 리소스를 사용하는
듯한 추상화를 제공하는 기능
● cgroup, IPC, network, mount, pid, time, user, UTS 타입의
namespace가 존재
https://man7.org/linux/man-pages/man7/namespaces.7.html
네트워크 namespace를 이용해서
도커 컨테이너의 interface와
host 머신의 network interface를
분리되고 있던 것!
5. 지난 이야기 - 1
● 기본적인 docker network 구성 방식
○ bridge network
○ host network
○ overlay network
○ ipvlan network
○ macvlan network
○ user-defined bridge network
6. 자주 보게 될 docker 네트워크 종류
● bridge
○ 네트워크 옵션 없이 컨테이너를 실행시키면 bridge 네트워크 드라이브를 이용
○ 기본적으로 docker0 브릿지로 바로 연결됨
● host
○ 컨테이너의 네트워크 격리 없이 호스트 머신의 네트워크를 그대로 사용하고 싶을 때 사용
○ 컨테이너를 단순히 소프트웨어 패키징으로 사용하는 것
10. Container Orchestration Tool
● 배포, 리소스 할당, 스케일링, 네트워킹, 로드밸런싱 등의 기능
을 제공하여 태스크를 자동화하고 관리할 수 있도록 도와준
다
● docker compose, docker swarm, kubernetes(k8s), mesos 등
다양한 툴이 존재
https://www.redhat.com/ko/topics/containers/what-is-container-orchestration
https://devopscube.com/docker-container-clustering-tools/
11. Docker Compose
● 아주 간단한 container orchestration 도구로 기능이 제한적이지만
손쉽게 도커 어플리케이션을 배포할 수 있음
● yaml 파일을 이용하여 여러 개의 컨테이너로 구성된 도커 어플리케
이션의 실행, 관리를 도와주는 도구
● 도커 어플리케이션이 사용할 도커 네트워크를 자동으로 생성
https://docs.docker.com/compose/
15. 실전 문제 3. ***
docker compose로 프로젝트 스택을 구성할 때
를 기억해봅시다.
웹서버 혹은 웹어플리케이션에서 DB로 연결할
때, `postgresql` 혹은 `mysql` 이런 식으로 URI
를 입력해도 연결이 잘 되었을거에요!
이게 어떻게 가능한지 알려주세요🙏