- toc {:toc}
Docker
-
What is Docker?
-
윈도우던, 맥이던 쉽게 설치되고 삭제될 수 있도록 만든다.
-
DevOps : 개발과 운영의 과정을 사람이 개입하지 않고 자동화되어 처리하는 과정을 말한다. 코드를 작성하고 생산을 하는 딜레이를 줄인다.
-
내가 원하는 Infrastructure를 Application들을 관리하는 것과 마찬가지로 관리할 수 있다. 즉, Infrastructure를 코딩할 수 있다. Infrastructure as Code (IaS)
-
필요로 하는 것을 dockerfile에 담아서 빌드, docker image가 만들어진다. docker image를 가지고 가서 필요한 컴퓨터에 가져가 실행 ⇒ 컨테이너 형태로 실행됨.
- Dockerfile을 사용해 독립적인 immutable infrastructure 환경을 설정한다.
-
Why use Docker?
- Flexible - 어떤 종류의 복잡한 application이든 컨테이너화 할 수 있다.
- Lightweight - 알파인 리눅스 사용 ⇒ 매우 가볍다.
- Interchangeable - 서비스의 업데이트, 업그레이드를 쿠버네티스와 같은 오케스트레이터를 통해서 실행은 유지하면서 진행할 수 있도록 돕는다. 자동화된 도구 사용
-
Docker Image : App을 실행하기 위해 필요한 모든 것을 포함한 실행가능한 패키지이다.
- 코드
- 라이브러리
- 환경 변수
- 설정 파일 등..
-
Docker Container : 이미지의 실행 인스턴스
- 이미지는 실행될 때 메모리에서 컨테이너가 된다.
- 같은 이미지로부터 여러 개의 컨테이너가 실행될 수 있다.
-
Sharing Immutable Infrastructures 컨테이너의 메카 = docker hub 도커 허브를 통해서 동기화 가능 일일이 설치할 필요 없이, dockerfile을 통해 개발환경을 한번에 동일하게 만들 수 있다.
docker container run -it -d —rm —name ubuntuos ubuntu:latest
- -it : interaction 상호작용 키보드 입출력
- -d —rm : 컨테이너가 끝나면 삭제해라.
docker exec -it ubuntuos /bin/bash
- ubuntuos /bin/bash에 있는 파일을 실행해라 ⇒ ubuntu 실행됨
- 컨테이너 작업을 하기 위해 작게 컨테이너화한 우분투. 일반적인 우분투는 아니다.
docker image rm -f ubuntu:latest
- ubuntu:latest를 -f 강제로 삭제해라
우분투의 기능이 많이 필요하지 않은 경우 알파인을 많이 사용한다. 단순히 크기가 작아서 알파인을 많이 사용하는가? 아니다. 알파인이 크기가 작지만 busybox를 넣어 리눅스에 있는 명령을 사용할 수 있다.
컨테이너 기술을 통해서 사용, 삭제 용이 소프트웨어를 빠르게 전달해준다.