Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 3D
- 코틀린개발환경
- 3d프린터 초보
- C언어
- IoTNetwork
- 데이터 직렬화 포맷
- github
- docker container
- 3D프린터 입문
- Notification
- octoprint
- 3D프린터
- 3D모델링
- NAS HDD교체
- Jenkins
- gitlab
- nas
- git
- ci/cd
- OnlineIDE
- 3D 프린터 용어
- 리눅스 파일동기화
- kubernetes
- Token인증방식
- linux job
- docker
- data serialization formats
- 네이버클라우드
- 3D프린터입문
- Kotlin
Archives
- Today
- Total
0과 1을 공부하다.
[Docker] Docker 맛보기 - 특징과 설치 (1) 본문
728x90
등장 배경
서버 관리는 매우 복잡하다.
1. 많은 요구조건
2. 계속해서 바뀌는 서버환경
3. 계속해서 바뀌는 개발 환경
도커 등장 이전의 서버관리를 위한 노력들
첫 번째. 문서 작성
- 서버 관리를 위한 문서를 작성함.
- 하지만 다른 OS에서 설치해야하는 문제나 문서 업데이트가 주기적으로 이뤄지지 않을 경우 일관성 있는 서버관리가 이뤄지지 못함.
두 번째. 상태 관리 도구 이용
- 상태관리 도구(셰프(Chef), 퍼펫(Puppet), 엔서블(Ansible) 등)
- 전통적인 쉘 스크립트와 다르게 yaml 구문으로 비교적 이해하기 쉽고 가독성이 높으며, 절차적인 스크립트와 다르게 선언적인 방식을 사용함. 특정 OS에 종속적이지 않고 다양한 환경에서 이용이 가능함.
- 쉘 스크립트 명령어가 아닌 하나의 설정 파일로 작성하는 방법
- 하지만 해당 코드 작성하는 것이 어려워서 러닝 커브가 발생함(러닝커브: 신기술을 학습하는 데에 소요되는 시간을 나타내는 곡선)
세 번째. 가상머신 이용
- VMBox와 같은 가상 머신을 이용하여 관리함.
- 하지만 VMBox 초기 설정을 하기 위한 문제가 발생하고 서버 이미지 공유가 용이하지 않는 문제가 발생.
- 속도 저하 문제가 있음.
네 번째. 자원 격리
- 프로세스, 파일, 디렉토리를 가상으로 분리하는 기법.
- CPU, MEMORY, I/O 그룹별로 제한
- 리눅스 기능을 이용한 빠르고 효율적인 관리 가능 (가상 머신이 아님)
- 단, 사용하기 위한 기술이 너무 어려움.
도커는 위와 같은 노력을 해소하기 위한 컨테이너 기반의 가상화 도커가 등장하게 되었으며, 도커의 등장으로 플랫폼 및 프레임워크 의존성 문제를 해결할 수 있으며, 가상머신처럼 독립적으로 실행되지만 가상머신보다 빠르고 가상머신보다 쉽고 효율적으로 사용할 수 있게 되었다.
간단 설명
- 도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다.
1. 용어
- container: 격리된 공간에서 프로세스가 동작하는 기술.
- image: 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것. 상태값을 가지지 않고 변하지 않음.(Immutable)
- Dockerfile : Dockerfile은 DockerImage를 생성하기 위한 스크립트(설정파일). 순차적으로 실행되며, 여러 이미지를 마운트하여 작성할 수 있음.
- Docker Hub : Docker에서 운영하는 Docker 이미지 저장소 서비스.
- Docker Compose : 복수 개의 컨테이너를 실행시키는 도커 애플리케이션이 정의를 하기 위한 툴.
- Docker Swarm : 도커 컨테이너를 위한 클러스터링, 스케줄링 툴. 여러 개의 서버와 컨테이너 관리를 쉽게 가능.
2. 특징
- 확장성, 이식성이 좋음 → 도커만 설치되어 있으면 어디든지 컨테이너 실행 가능. 특정 회사나 서비스에 종속적이지 않음. 쉽게 개발서버를 만들 수 있음.
- 표준성 → 도커를 사용하지 않을 경우 배포 방식이 제각각 다름. 컨테이너라는 표준으로 머든 서비스 배포 과정이 동일해짐.
- 이미지 → 이미지에서 컨테이너를 생성하기 때문에 반드시 이미지를 만드는 과정 필요. Dockerfile을 이용하여 이미지를 만들고 처음부터 재현 가능. 빌드 서버에서 이미지를 만들면 해당 이미지를 이미지 저장소에 저장하고 운영서버에서 이미지를 불러옴.
- 설정관리 → 설정은 보통 환경변수로 제어함. 하나의 이미지가 환경변수에 따라 동적으로 설정 파일을 생성하도록 만들어져야함.
- 자원관리 → 컨테이너는 삭제 후 새로 만들면 모든 데이터가 초기화됨. 업로드 파일을 외부 스토리지와 링크하여 사용하거나 S3와 같은 별도 저장소 필요. 세션이나 캐시를 memcached나 redis와 같은 외부로 분리
3. 컨테이너(container)의 특징
- 격리된 환경에서 작동하는 프로세스이다.
- 리눅스 커널의 여러 기술을 활용한다.
- 하드웨어 가상화 기술보다 가볍다.
- 이미지 단위로 프로세스 실행 환경을 구성한다.
4. Docker 가 가져온 변화
- 클라우드 이미지보다 관리하기 쉬움
- 다른 프로세스와 격리되어 가성머신처럼 사용하지만 성능저하가 거의 없음.
- 복잡한 기술을 몰라도 됨.
- 이미지 빌드 기록이 남음.
- Dockerfile을 통해 코드와 설정으로 관리함으로 재현 및 수정이 가능하다.
- 오픈소스라서 특정 회사 기술에 종속적이지 않음.
Docker Install (Linux Rocky8 기준)
- Rocky Linux에 Docker Repo 추가
$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
- dnf 업데이트 실행
$ sudo dnf update
- Docker CE 설치
$ sudo dnf install docker-ce docker-ce-cli containerd.io
- 버전 확인
$ docker version
- Docker 서비스 활성화 및 시작 상태 확인
$ systemctl enable docker
$ systemctl start docker
$ systemctl status docker
참고 사이트
- [Docker] 개념 정리 및 사용방법까지. https://cultivo-hy.github.io/docker/image/usage/2019/03/14/Docker%EC%A0%95%EB%A6%AC/
- 초보를 위한 도커 안내서 - 도커란 무엇인가? https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
- Rocky Linux 8에서 Docker Container를 설치하고 설정하는 방법 https://howto88.com/ko/rocky-linux-docker-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95
- [Docker] 도커 입문하기 3 - 기본 명령어 및 실습 https://code-masterjung.tistory.com/132
- [Docker] Dockerfile 개념 및 작성법 https://wooono.tistory.com/123
- [Docker] centos 컨테이너에서 systemctl 명령어가 안될 때 https://mungiyo.tistory.com/22
- [Docker] 도커 컨테이너 Network (bridge, host, none, macvlan) / 네트워크 연결 (connect, disconnect) https://imjeongwoo.tistory.com/113
- 도킹 컨테이너에 고정 IP를 할당하는 방법 https://volvootofinans.com/ko/how-to-assign-the-static-ip-to-the-docker-container.html
- [DOCKER] 도커_컨테이너 네트워크 설정, 생성, 실행
- 인프런 - 초보를 위한 도커 안내서(subicura)
https://2-juhyun-2.tistory.com/330 - Docker 네트워크 사용법 https://www.daleseo.com/docker-networks/
※ 본 게시글의 정보가 잘못 되었거나 부족한 부분에 대한 피드백을 환영합니다.
* CopyRight 2022. Jay Park All rights reserved.
728x90
'Study > Server' 카테고리의 다른 글
[Kube] Kubernetes - 실습 환경 구성 (3) (0) | 2024.07.16 |
---|---|
[Kube] Kubernetes - 특징 및 아키텍처 (2) (0) | 2024.07.16 |
[Kube] Kubernetes - 컨테이너 오케스트레이션이란 ? (1) (0) | 2024.07.15 |
[Docker] Docker 맛보기 - Dockerfile/Docker-Compose (3) (0) | 2024.04.12 |
[Docker] Docker 맛보기 - 컨테이너 실행/중단 (2) (0) | 2024.04.12 |
Comments