docker container run --interactive --tty diamol/base
--interactive 플래그는 컨테이너에 접속된 상태가 된다.
-tty 플래그는 터미널 세션을 통해 컨테이너를 조작하겠다는 의미이다.
2. 명령어 실습
docker container ls : 현재 실행 중인 모든 컨테이너에 대한 정보를 볼 수 있다.
docker container top f1 : 대상 컨테이너에서 실행 중인 프로세스의 목록을 보여준다. 여기서는 'f1695de1f2ec' 컨테이너를 대상으로 하기 위해 f1까지만 지정했다.
docker container logs f1 : 대상 컨테이너에서 수집된 모든 로그를 출력한다.
docker container inspect f1 : 대상 컨테이너의 상세한 정보를 보여 준다.
docker container ls --all : 도커의 상태와 상관없이 모든 컨테이너의 목록을 확인한다.
3. 컨테이너를 사용해 웹 사이트 호스팅 하기
docker container ls --all을 입력 해 본다.
모든 컨테이너의 상태가 Existed임을 알 수 있다.
여기서, 알 수 있는 점은 컨테이너 내부의 애플리케이션이 실행 중이어야 컨테이너의 상태도 실행 중이 된다.
애플리케이션 프로세스가 종료되면 컨테이너의 상태도 Existed가 된다.
컨테이너가 종료돼도 컨테이너는 사라지지 않는다. 종료된 컨테이너는 사라지지 않고 그대로 남아 있다. 그러므로 나중에 컨테이너를 다시 실행하거나, 로그를 확인하거나, 컨테이너의 파일 시스템에 새로운 파일을 복사하거나 외부로 복사해 올 수 있다.
docker container run --detach --publish 8080:80 diamol/ch02-hello-diamol-web
위의 명령어를 실행하면 컨테이너 ID만 출력된다. 이 컨테이너는 종료되지 않고 백그라운드에서 계속 동작한다.
docker container ls 명령을 실행해 새로 만든 컨테이너의 상태가 Up인지 확인한다.
--detach : 컨테이너를 백그라운드에서 실행하며 컨테이너 ID를 출력한다.
--publish : 컨테이너의 포트를 호스트 컴퓨터에 공개한다.
컨테이너는 기본적으로 외부 환경에 노출되지 않는다. 각 컨테이너는 고유의 ip주소를 갖지만, 이 ip주소는 도커가 관리하는 내부 가상 네트워크의 주소지 호스트 컴퓨터가 연결된 물리 네트워크에 연결된 것이 아니다.
4. 도커 컨테이너의 상태 확인하기
docker container stats e53 : 실행 중인 컨테이너의 상태를 확인할 수 있다. 이 명령을 실행하면 실시간으로 컨테이너의 CPU, 메모리, 네트워크, 디스크 사용량을 볼 수 있다.
컨테이너 사용이 끝나면 docker container rm 명령으로 컨테이너를 삭제할 수 있다. --force 플래그를 사용하면 실행 중인 컨테이너라도 바로 삭제가 가능하다.
docker container rm --force $(docker dontainer ls --all --quiet)
5. 도커가 컨테이너를 실행하는 원리
도커 엔진 : 도커의 관리 기능을 맡는 컴포넌트다. 로컬 이미지 캐시를 담당하므로 새로운 이미지가 필요하면 이미지를 내려받으며, 기존 이미지가 있다면 전에 내려받은 이미지를 사용한다. 컨테이너, 가상 네트워크 등 도커 리소스를 만드는 일도 담당한다. 도커 엔진은 항시 동작하는 백그라운드 프로세스다.
도커 엔진은 도커 API(docker container run ...)를 통해 맡은 기능을 수행한다. 도커 api는 표준 HTTP기반 REST API다.
도커 명령행 인터페이스는(도커 CLI)는 도커 API의 클라이언트다. 우리가 도커 명령을 사용할 때 실제로 더커 API를 호출하는 것이 바로 도커 CLI다.