Cloud/Docker 8

이게 돼요? 도커 없이 컨테이너 만들기 / if(kakao)2022

흥미 유발 container 기반으로 올린 busybox의 root file system 은 overlay이다. process가 다르다. container는 2개이고 local은 여러개이다. ip link , hostname도 다 다르고 , id를 쳤을때 container도 local 도 root 이 나오는데 이둘은 과연 같은 root일까? container file system 프로세스를 가두고 , 탈옥을 막고 , 중복을 해결하자 chroot를 기반으로 process가 Fake root 밖으로 나가지 못하게 한다. 필요한 것들을 fake root 안으로 복사해야 한다. docker export $(docker crete nginx) | tar -C nginx-root -xvf - 이번엔 남들이 만들어놓..

Cloud/Docker 2023.01.31

[따배도] 10. 빌드에서 운영까지(using Docker Compose)

docker compose = 여러개의 container를 설정(docker compose yaml) 해준 값에 따라 알아서 실행해 준다. version: "3.9" services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest volumes: - wordpress_data:/var/www/html ports: - "..

Cloud/Docker 2022.01.22

[따배도] 9. 컨테이너간 통신(네트워크)

docker0 = network interface , NAT 와 포트포워딩 서비스를 지원한다. (iptables를 통해) bridge = docker host1의 네트워크 인터페이스와 veth0,1 을 연결해주는 역할을 한다. enp0s3가 현재 VM의 host ip 가 된다. docker0 는 브릿지 역할을 한다. host로부터 80포트로 들어오는 모든 패킷은 nginx 컨테이너 80port로 다 포트포워딩이 된다. 포트는 항상 일대일 매핑이다. docker0 네트워크 인터페이스안에는 static하게 고정ip 를 주는게 불가능하다. 새로운 bridge를 만들면된다. default gateway 는 subnet이 저런 상태일때는 192.168.100.1 이 된다. 0은 identifier ,255는 br..

Cloud/Docker 2022.01.21

[따배도] 8. Docker Container Storage

Volume 이 뭘까 union file system(overlay) = docker가 readonly layer 와 read write layer를 하나인것 처럼 동작을 하게 해준다. docker rm 명령어는 rw, ro layer들이 사라진다. mysql의 경우 기존의 데이터들도 그냥 다 날라간다. cotainer에서 만든 data를 저장하도록 Volume을 만들면 된다. /var/lib/mysql 을 /dbdata에 저장해줘~ 아무 옵션을 안준다면 rw 으로 동작한다. ro 옵션을 써주게되면 /webdata에 있던것을 read only로 /var/ww/html 로 옮겨서 읽게 된다. 쓰기 불가능 host path를 안주게되면 UUID 로 디렉토리를 자기가 만든다. web generator 가 pr..

Cloud/Docker 2022.01.20

[따배도] 7. 컨테이너 리소스관리

docker run --help 명령어를 통해 run 을 실행할때 resource 제한 옵션들을 확인 할 수 있다. 컨테이너가 메모리가 정해진 이상을 점유하게되면 스스로 kill 한다. 2번째 예제 = 소프트 제한 값은 최소한 500m은 보장을 해주고 -m 은 최대로 쓸 수 있는 메모리를 의미한다. 3번쨰 예제 = swap memory 300 은 최대 사이즈 200 이 포함되어있는것이다. 따라서 실제로 swap 가능하는 메모리는 100 이다. 4번째 예제 = linux kernel 은 메모리가 부족해지면 OOM Killer 가 process 를 다 kill 하기 시작한다. 해당 옵션을 적용하면 메모리가 부족해도 이 process는 kill 하지 않는다. cpu share 는 그냥 상대값이다. 1024를 ..

Cloud/Docker 2022.01.20

[따배도] 5.컨테이너 보관창고 , 6. 컨테이너 사용하기

Registry = 컨테이너 이미지를 저장하는 저장소 private도 가능하고 Dcoker Hub == hub.docker.com 이 public 하게 존재한다. private registry를 만들수 있남? 이것으로 만듬 실습 https://hub.docker.com/_/registry Registry - Official Image | Docker Hub We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more abou..

Cloud/Docker 2022.01.10

[따배도] 3. 도커 컨테이너 살펴보기 ,4.도커 컨테이너 만들어보기

컨테이너는 하나의 Application 프로세스 모든것이 독립적으로 동작한다 docker deamon 이 동작하고 리눅스 커널이 있는 서버를 docker host라고 부른다 OS 입장에서는 docker host는 하나의 process일 뿐이다. Container Image 여러개의 layer로 구성이되어 하나의 Application이 잘 실행되수 있도록 일종의 snapshot 이다 readonly라 볼수 있다. Container는 실제 Docker Daemon위에서 돌아가는 Container image를 의미한다. 이제는 실제 HW resource들을 가지고실행이 되니 write도 가능해지게 된다. 컨테이너 동작방식 도커 public hub에서 container image를 가지고와서 docker dae..

Cloud/Docker 2021.12.22

[따베도] 1. 컨테이너와 도커의 이해 , 2. 도커 설치

Hypervisor 의 소프트웨어 능력으로 논리적으로 컴퓨터를 가상화 하였다. 하지만 이것은 Scale out 하기 힘들었다. 지금 배우려하는 docker는 Container Engine중 하나이다. VM보다 적은용량이고 확장성, 배포가 더 용이하다. OS와 묶이면서 Scale Out되지 않는다. 왜 도커는 리눅스에서 돌려야하는가? chroot = 독립된 공간 형성 namespace = 6 가지 isolate 기능 지원 cgroup = HW resource 분배 이러한 기능들이 linux kernel 에 존재하기 때문이다. window같은 경우는 Hyperviosr를 통해 container engine을 쓸 수 있다. HW dependency 가 많이 줄어든다. Container안에 운영환경이 존재하여 ..

Cloud/Docker 2021.12.17