도커에 대해 T-Academy로 형들과 도커에 대한 이해하는것으로 스터디를 해보기로했다.

실습을 위해 아래의 주소로 들어가서 확인

https://bit.ly/docker-sk

도커의 등장

솔로몬 하이크 -> 파이콘 2013 에서 등장

The future of Linux containers

Mac OS에서 실행 해보자

  • ubuntu(docker container)

  • CentOs(docker container)

  • Busybox(docker container)

    • 도커 커널을 위한 최소한의 이미지
    • 하나의 실행 파일 안에 스트립 다운된 일부 유닉스 도구들을 제공하는 소프트웨어
    • 다수가 리눅스 커널이 제공하는 인터페이스와 함께 동작하도록 설계되어있음 (자원이 매우 적은 임베디드 운영체제를 위해 작성됨)

우분투 에서 실행된 hello, world

$docker run -it ubuntu:latest echo "hello,world!"

우분투의 bash로 접속하기

$docker run -it ubuntu:latest bash

/etc/lsb-realease

centos

/etc/centos-release

busybox

docker run -it busybox:latest sh

컨테이너

컨테이너 : 가상머신

각각의 VM = 서로 다른 환경

각각의 컨테이너 = 서로 다른 환경

Virtual Machine == Container ?같을까 ?

Virtual Machine : 하드웨어 가상화

소프트웨어로 구현된 하드웨어 

컨테이너 : 하드웨어 가상화가 아님

OS에서 지원하는 기능을 사용 (리눅스 커널을 사용)

격리된 환경에서 프로세스를 실행 

한마디로 한 이미지의 프로세스

가상화 된 하드웨어 필요없이 os의 커널을 사용해서 동작함

img

chroot

실제 루트는 / 이지만 ~/box 가 루트인것처럼 인식되게함

자신의 루트를 ~/box로 인식함

#chroot /root/box/ bash

ldd 의존하고 있는 파일의 목록을 볼 수 있다.

예시) ldd bash

도커는 마치 OS의 커널을 위의 chroot 처럼 process를 격리 시켜서 만들어져 동작함

Linux (croups, namespaces, nettling, selinux, netfilter, capabilities, apparmpr) 등의 리눅스 커널을 Docker(lib container, libvirt, lxc, system-nspawn) 등으로 따로 격리 시킨것임

예전에는 lxc를 사용했지만...추후에 ...


실습

  • mysql

  • wordpress

MySQL

$docker run -d -p 3306:3306 --name mysql mysql:latest

앞의 포트 : 안에서 접속할 포트

뒤의 포트 : 밖에서 접속할 포트

-d : 백그라운드에서 실행한다는 뜻

WordPress

이미지

특정 프로세스를 실행하기 위한 환경

  • 계층화된 파일 시스템
  • 이미지는 파일들의 집합
  • 프로세스가 실행되는 환경도 결국 파일들의 집합

도커의 기본 아키텍처

linux

docker run -> server , container(process)

macOS

docker run ->xhyve라는 가상화된 머신에다가 server와 container가 실행됨

xhyve

macOS의 가상화 방식(경량 가상 머신)

컨테이너 = xhyve에서 실행된 프로세스

호스트 머신과 자연스럽게 결합

네트워크 / 볼륨 등 

호스트 머신처럼 사용가능

왜 도커를 사용하는가 ??

컨테이너가 필요한 이유

보편적 물리법칙 언제 어디서나 동일하게 적용된다.

하지만 컴퓨터의 환경은 보편적이지 않다

각각의 OS에서 설치되는 프로그램은 다 다르다. 하나로 통일이 되지 않기 때문에

서버 관리도 어렵다.

도커를 사용하게 되면 어플리케이션 실행 환경까지의 최소한의 파일을 모아둔것이기 때문에 깔끔하게 설치를 할 수 있다.

이미지 : 동작되는게 보장이된다. 사용할 프로세스를 미리 만들어놓기 때문에

개발환경의 pc의 환경을 미리 보장하고 사용하는것이 가능하기 때문에

Q1 : 도커는 시스템전체를 다 사용하나요?

cgroups는 프로세스의 자원을 사용할지 제한을두게 되는데, docker에서도 자원의 제약을 한정해서 쓸 수 있다.

'BackEnd > Docker' 카테고리의 다른 글

도커 명령어  (1) 2020.02.09
컨테이너 기반 가상화 플랫폼 '도커(Docker)' 의 이해 2강  (0) 2019.08.27
[docker] MySQL 접속하기 (2)  (0) 2019.06.30
[Docker] install Mysql  (0) 2019.06.23

+ Recent posts