Docker - basic

도커, 이미지, 컨테이너란?
Docker
- 컨테이너를 사용하여 각각의 프로그램을 분리된 환경에서 실행 및 관리할 수 있는 툴
Image
- 애플리케이션과 그 실행에 필요한 모든 요소(코드, 런타임, 라이브러리, 환경 변수, 설정 파일 등)를 포함하는 불변 파일 시스템 템플릿
- 도커에서 이미지는 닌텐도 칩과 같은 역할을 한다고 생각하면 쉬움
- 예를 들어 mysql 서버를 이미지로 만들었다면, 이 이미지를 도커로 실행시키는 순간 mysql서버가 컨테이너 환경에서 실행. 그럼, mysql을 일일이 설치할 필요 없이 사용할 수 있음
Container
- 도커 컨테이너는 도커 이미지를 실행한 실제 인스턴스. 컨테이너는 격리된 환경에서 애플리케이션을 실행하며, 호스트 시스템과 독립적으로 동작.
- 컨테이너는 이미지를 기반으로 생성
- 하나의 컴퓨터 환경에서 여러 개의 미니 컴퓨터 환경을 구성할 수 있는 형태라고 생각하면 쉬움
이미지는 컨테이너를 생성하기 위한 템플릿이며, 컨테이너는 그 템플릿을 실제로 실행한 실체
도커를 사용하는 이유?
- 이식성 : 특정 프로그램을 다른 곳으로 쉽게 옮겨서 설치 및 실행이 가능
- 설치 과정을 일일이 거치지 않아도 됨
- 버전, 환경 설정 등 항상 일관되게 프로그램을 설치할 수 있음
- 각각의 프로그램이 독립적인 환경에서 실행되기 때문에 프로그램 간에 서로 충돌이 일어나지 않음
자주 사용하는 도커 명령어

- docker pull 이미지명 : 이미지 다운받기
- docker image ls : 이미지 목록 확인
- docker rmi 이미지id : 이미지 삭제
- docker rmi -f $(docker images -q) : 컨테이너에서 사용하고 있지 않은 이미지 모두 삭제
- docker create 이미지명 : 이미지를 바탕으로 컨테이너 생성(pull로 이미지를 다운받지 않아도 create를 쓰면 자동으로 이미지를 만들고 컨테이너 생성)
- docker ps -a : 모든 컨테이너 정보
- docker ps : 실행중인 컨테이너 정보
- docker start 컨테이너id : 생성된 컨테이너 실행
- docker stop 컨테이너id : 컨테이너 중지
- docker rm 컨테이너id : 컨테이너 삭제
- docker run 이미지명 : docker create와 start를 한번에 처리
- docker run -d —name 이름 -p [호스트포트]:[컨테이너포트] 이미지명 : 백그라운드 실행, 이름 지정, 포트포워딩
- docker attach 컨테이너id : 컨테이너 내부로 접근
- docker logs 컨테이너id : 컨테이너 로그 확인
-
docker -v [절대경로] 이미지명 : 도커 파일 연결
- docker exec -it 컨테이너id bash : 배쉬 환경으로 실행중인 컨테이너 내부에 접속