한 대의 컴퓨터 안에서 각각의 앱을 실행시키는 것. 각각의 앱은 격리된 환경에서 실행됨.
- 호스트: 운영체제
- 컨테이너: 격리된 각각의 실행환경
어플리케이션을 실행하는데 필요한 모든것들을 도커 컨테이너안에 담아둠. 어떤 PC 에서든 동일하게 구동 가능함.
속도가 느려지지 않아 시간 절약, 저장장치 용량 절약
레시피, 사용설명서 라고 보면 됨
실행되고 있는 어플리케이션의 상태를 이미지로 만든것
변경이 불가능한 불변의 상태
이미지를 고립된 환경인 컨테이너에서 어플리케이션을 구동!
어쩌구 저쩌구 설치하고 cmd를 사용해서 체크.
도커 데스크탑보다는 명령어를 사용해야 도커 풀파워를 사용하는것!
$ docker images
에러가 안뜨면 성공
허브에 필요한 이미지 다운
https://hub.docker.com -> Explore -> Containers

// httpd 등등 다운로드
$ docker pull httpd
$ docker pull mysql
$ docker pull redis
// 다운로드 확인
$ docker images
https://docs.docker.com/engine/reference/commandline/pull/

이미지가 컨테이너가 되고, 컨테이너 안에 있는 프로그램이 실행되면서 우리의 프로그램 사용이 가능해짐

도커 데스크탑 > images > run > Optional Settings > Container Name 지정
or
// 컨테이너 생성 => $ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
$ docker run httpd
$ docker run --name ws2 httpd // 이름이 ws2인 httpd 컨테이너를 생성할래
// 실행중인 생성한 컨테이너 확인
$ docker ps
// 실행중인 컨테이너 종료
$ docker stop ws2
// 컨테이너 시작
$ docker start ws2
// 모든 컨테이너 확인
$ docker ps -a
// 로그 확인
$ docker logs ws2
$ docker logs -f ws2 // 실시간 확인
// 컨테이너 삭제 - 컨테이너 종료 필요
$ docker rm ws2
// 컨테이너 삭제 - 실행중인거 한방에 삭제
$ docker rm --force ws2
// 이미지 삭제
$ docker rmi httpd
컨테이너가 설치된 운영체제 = 도커 호스트
하나의 도커엔 여러개의 컨테이너가 설치됨
// port forwarding 호스트 8081: 컨테이너 80
$ docker run -p 8081:80 httpd

$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]