docker hub -(pull)-> image -(run)-> container
빨리, 어디서든 사용할 수 있게 하는 컨테이너
왜?
과거 어플리케이션들은 한 컴퓨터안에서 운영.
한 서비스안에서 문제가 발생해도, 같은 OS를 공유하기에 다른 서비스에도 영향을 주기도 함
이 문제 때문에, OS를 독립적으로 사용하기 위한 '가상화'개념 등장
그러나, 각 서비스들의 독립성이 유지되긴하나 Os위에 또 다른 guest os가 설치되므로 무거움....
이 문제를 해결하기 위해 최소한의 환경요소만 묶어서 컨테이너를 만들어서 적은 용량만으로 운영가능하도록 한 기술을 사용하도록 함. 이것이 바로 도커!
docker run [option] image [command][arg..]
ex) docker run httpd
-> httpd 기반(web server)으로 컨테이너 만들고 실행
ex) docker run --name ws2 httpd
-> 또 다른 httpd기반 컨테이너 만드는데, 이름이 ws2임
docker ps (실행중인 컨테이너만)
docker ps -a (모든 컨테이너)
docker start ws2
docker stop ws2
docker logs ws2
docker logs -f ws2 (실시간으로 출력하고 싶은 경우)
docker rm ws2 (stop으로 중지하고 지워주어야함)
docker rm --force ws2 (stop & delete)
docker rmi ws2
Port forwarding
docker run -p 8000:80 http (-p: short for publish)
호스트의 8000번 포트와 컨테이너의 80번 포트가 연결
docker exec [options] container command [arg...]
docker exec -it ws3 pwd /bin/sh
docker exec -it ws3 pwd /bin/bash

이렇게 내 컴퓨터의 index.html과 container 내부와 index.html이 동기화(?) 된다면 container이 사라져도 문제 없음
docker run -p:8888:80 -v ~/Desktop/htdocs:/usr/local/apache2/htdocs/ httpd
(-v: volume,
내 컴퓨터의 /Desktop/htdocs와 /usr/local/apache2/htdocs 연결했다는 뜻, 즉 내 컴퓨터의 htdocs의 index.html파일을 변경해도 container의 index.html이 변경되어 반영됨)
출처: 생활코딩 docker 입문수업