udemy - Docker Mastery: with Kubernetes +Swarm from a Docker Captain
section3 27 ~ 끝까지 : 준수님 노션
section4 환일님 블로그
docker version : 도커 아키텍쳐의 버전을 확인할 수 있다.
도커는 클라이언트-서버 구조이다. 사용자가 입력하는 커맨드가 도커 클라이언트이다. 클라이언트는 REST-API 를 사용해 도커 서버(데몬)과 통신한다.
도커 클라이언트 즉, 각각의 커멘드는 사용자와 도커를 잇는 역할을 해준다.
도커 서버(데몬)은 API requests 에 응답하는 역할을 하며, images, containers, networks, volumes 와 같은 도커 객체(objects) 를 다룬다.
데몬이란 백그라운드 프로세스를 말하며, 이는 사용자의 로그아웃 등에 영향을 받지 않고 실행되는 프로세스를 지칭한다.
Registry 는 도커 이미지를 저장하는 공간이다.
docker info : 컨테이너나 이미지, 기타 상세 도커 관련 정보를 제공한다.
docker : 커맨드 정보 제공
2017년 초부터 수많은 커멘드를 특성에 맞게 organize 함
old : docker ps
new : docker container ls
---------------------------
old : docker images
new : docker image ls
구 버전도 여전히 사용가능함
Image : binaries(이진파일), libraries, source code가 모두 포함된 것(docker object)
Container : 해당 이미지를 프로세스 형태로 실행시키기 위한 것(docker object)
docker container ls -a : include stopped container
컨테이너 이름은 반드시 유일해야 하며, 지정해주지 않으면 default로 랜덤 생성됨(오픈소스이름_유명해커/과학자)
컨테이너 이름을 전부 입력하지 않아도 됨
container container rm 명령으로는 running container 삭제 불가능함
도커 컨테이너와 가상 머신(Virtual Machine) 을 혼동하는 경우가 있다고 하는데, 가상 머신은 물리적인 하드웨어 위에 구축되어 자체 CPU, 메모리 등을 갖추고 가상 컴퓨터 시스템으로 작동하는 가상 환경을 말한다.
도커 컨테이너는 호스트의 운영 시스템에 기반한 하나의 프로세스이며, 어떤 리소스에 접근할 수 있는가에 따라 매우 제한적이다. 예를 들면, 이미지나 서버 환경 등이 될 수 있다. 또한 프로세스가 멈추면 종료된다.
가상 머신을 전원 주택이라고 하면, 도커 컨테이너는 아파트에 속한 한 집이다. 전원 주택은 스스로 모든 자원을 소유하며, 자체적인 인프라가 구축되어 있다. 반면 아파트는 수도, 배관 등을 아파트 전체가 공유한다. 도커 컨테이너는 도커 데몬(혹은 도커 호스트) 가 제공하는 자원을 서로 공유하는 형태다.
참고자료
-d(--detach) : By running in detached mode, we are able to have access to our command line when the container spins up and runs. Without it, we would have logs constantly fed onto the screen
컨테이너가 실행되는 동시에, 커맨드를 통해 접근 가능함. 없는 경우에는 로그가 지속적으로 스크린에 표시된다.
-p(--publish) : publishes a port of our choosing (포트 선택)
호스트 포트(80:80 에서 왼쪽)는 다른 컨테이너와 겹치지 않게 열어야 한다. 그렇지 않으면 bind erorr 가 발생한다.
--name : 컨테이너 이름 설정
-e(--env) : 컨테이너 내의 환경 변수 설정
컨테이너 시작시점의 메타 데이터에 대한 정보를 Json 형태로 보여줌
live performance about resource(CPU, Memory 등)를 보여줌
종료는 cmd + c
docker container run -it --name test bash
컨테이너 내부에서 bash shell 실행 (django shell 비슷)
shell 종료하면 컨테이너도 종료됨
docker container run -it --name test ubuntu
>>apt-get update ~
bash를 default로 하는 우분투로 접속함. 우분투 CMD 사용 가능
마찬가지로 exit 하면 컨테이너도 종료됨
docker container exec : Run additional process in running container
우분투보다 작은 사이즈의 리눅스 Alphine 이 있음. bash 가 아닌 sh 사용