Docker 도커란 무엇인가

쪼개발자·2023년 6월 21일

docker hub -(pull)-> image -(run)-> container

도커를 쓰는 이유?

빨리, 어디서든 사용할 수 있게 하는 컨테이너
왜?
과거 어플리케이션들은 한 컴퓨터안에서 운영.
한 서비스안에서 문제가 발생해도, 같은 OS를 공유하기에 다른 서비스에도 영향을 주기도 함
이 문제 때문에, OS를 독립적으로 사용하기 위한 '가상화'개념 등장
그러나, 각 서비스들의 독립성이 유지되긴하나 Os위에 또 다른 guest os가 설치되므로 무거움....
이 문제를 해결하기 위해 최소한의 환경요소만 묶어서 컨테이너를 만들어서 적은 용량만으로 운영가능하도록 한 기술을 사용하도록 함. 이것이 바로 도커!

1) 컨테이너 생성

docker run [option] image [command][arg..]
ex) docker run httpd
-> httpd 기반(web server)으로 컨테이너 만들고 실행
ex) docker run --name ws2 httpd
-> 또 다른 httpd기반 컨테이너 만드는데, 이름이 ws2임

2) 컨테이너 목록 출력

docker ps (실행중인 컨테이너만)
docker ps -a (모든 컨테이너)

3) 컨테이너 실행/중지

docker start ws2
docker stop ws2

4) 컨테이너 로그

docker logs ws2
docker logs -f ws2 (실시간으로 출력하고 싶은 경우)

5) 컨테이너 삭제

docker rm ws2 (stop으로 중지하고 지워주어야함)
docker rm --force ws2 (stop & delete)

6) 이미지 삭제

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

  • 컨테이너 내 sh(또는 bash) 실행
  • -it는 옵션인데 이걸 써줘야 지속적으로 실행이 된다고 보면 됨 (i:interactive, t:tty)

호스트와 컨테이너의 파일시스템 연결

이렇게 내 컴퓨터의 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 입문수업

0개의 댓글