Docker Volume
컴퓨터에 따로 생성된 폴더, Docker가 관리하며 데이터를 저장하는 곳
/var/lib/docker/volumes/
- 백업, 이동 용이
- Docker 명령어로 관리
- 리눅스, 윈도우 등 다양한 플랫폼에서 호환
- 데이터 안전 공유
- 외부 스토리지에 저장하거나 보안을 강화할 수 있는 추가 기능 제공 (볼륨 드라이버)
- 컨테이너가 삭제되어도 데이터는 남아있어 지속적으로 사용 가능
- Mac이나 Window에서 기본 저장 방식보다 빠르게 작동

💡 Docker는 Volume을 가장 권장
Docker Network
Docker Container 간 통신을 돕는 네트워크
- 컨테이너 간 원활한 통신 가능, 보안성 높일 수 있음
CNM : 네트워크를 쉽고 효율적으로 구축할 수 있는 네트워크 모델

- 샌드박스 : 컨테이너를 외부 네트워크로부터 분리하는 역할
- 엔드포인트 : 샌드박스를 외부 네트워크와 연결하는 지점
- 네트워크 : 컨테이너 간 데이터 전송 경로, 여러 네트워크에 컨테이너를 동시에 연결할 수 있음
Docker Image
Docker hub repositories에 image push
- Registry : 이미지 저장 공간, Dockerfile이나 docker commit을 통해 생성한 이미지 보관
- Pulbic
- Private
- Docker Hub : 자신의 계정 레지스트리에 이미지를 저장하려면 이미지명 앞에 자신의 계정명 추가
docker logout
docker login
docker image pull nginx:latest
docker images
docker image tag nginx:latest 유저네임/nginx-test:1.0
docker push 유저네임/nginx-test:1.0
docker images
docker image rm 유저네임/nginx-test:1.0
docker container rm nginx-test --force
docker image rm nginx-test:1.0 --force
docker pull 유저네임/nginx-test:1.0
docker run -d -p 8001:80 --name=nginx-test 유저네임/nginx-test:1.0
Docker Container 가상화
Container
앱을 실행하는 데 필요한 모든 걸 담은 작은 상자
(앱을 돌리는 데 필요한 코드, 프로그래밍 언어, 라이브러리 같은 것들 포함)
- 컴퓨터 자원(CPU, 메모리 등)을 여러 앱들과 나눠 쓸 수 있음
- 앱을 컨테이너에 넣으면 컨테이너가 어디서 실행되든 똑같이 돌아감
- 컨테이너는 독립적 - 컨테이너에 문제가 생겨도 다른 컨테이너에 영향x
- OS를 여러 컨테이너가 공유해 각 컨테이너에 OS를 설치할 필요가 없으며 파일크기가 작고 빠르게 시작
- 크기가 작고 다양한 플랫폼에 적합해, 새로운 코드 업데이트와 배포에 유리
- 앱을 각각 따로 배치하거나 조절할 수 있기 때문에 전체 앱을 확장하는 것보다 더 유연하게 관리 가능
