WSL(Window Subsystem for Linux)
- 윈도우에서 경량 가상화 기술을 이용해 리눅스 구동을 돕는 기능
- 가상 머신을 사용하는 것보다 빠르게 윈도우 환경에서 리눅스 환경을 구축할 수 있음
docker search [키워드] 명령어로 이미지 조회 가능tomcat 이미지를 Docker 홈페이지에서 다운 받을 예정OFFICIAL이라는 키워드에 [OK]라고 붙어 있음
docker pull [이름] 으로 도커 이미지 다운tag를 추가하지 않으면 자동으로 latest image가 다운됨
docker images → 다운 받은 이미지들 확인
docker image inspect [이미지명] [Tag] or docker image inspect [이미지 ID] → 특정 이미지에 대한 상세 정보 확인
Cmd : 명령어 → 이미지를 가지고 컨테이너 생성 시 가장 먼저 실행될 명령어 catalina.sh run 방식으로 실행됨
docker save -o ./[저장할 이름] [저장할 이미지] → 도커 이미지 파일 로컬에 저장
docker load -i .\redis_image → 파일로 저장된 이미지를 load 하기
docker rmi [이미지 이름] → 도커 이미지 삭제
docker tag [기존 이미지명] [새로운 이름] → 이미지 아이디는 동일하지만 부르는 이름만 다른 셈
tag로 이름 붙인 이미지는 ID로 삭제할 수 없음. 이름으로 따로 따로 삭제해주어야 함
docker run 으로 컨테이너 생성 → 실행, 이미지가 없으면 먼저 다운 받은 다음에 실행함
docker ps : 현재 실행 중인 컨테이너 확인Tomcat을 종료할 경우, 컨테이너도 같이 종료됨. → 컨테이너는 애플리케이션 단위로 가상화 되기 때문
docker run --name [원하는 이름] [이미지 이름] : 컨테이너 실행

docker stop [컨테이너 이름] : 현재 실행중인 컨테이너는 삭제 불가 -> 어지간해선 종료하고 지우자 force remove로 삭제할 수는 있음(-f)

docker ps -a 로 확인할 경우 실행중임을 확인할 수 있음localhost:8080으로 접속하기 위해선 호스트의 특정 포트를 열어서 컨테이너에 연결해주어야 한다.docker run -p [호스트포트]:[컨테이너포트] 이미지이름8080:80 인 경우, 호스트(내 컴퓨터)의 8080번 포트로 접속 시 → Docker가 이 요청을 컨테이너 내부의 80번 포트로 전달해줌
docker exec [컨테이너 이름] [명령어] → 컨테이너에 접근 / 이미 실행중인 컨테이너에 새로운 명령어 실행-i -tdocker exec -it tomcat_10.1.39 /bin/bash → 가상의 터미널을 생성해 컨테이너와 상호 입출력 하겠다 → 터미널 지정 했으니 컨테이너 내부에서 셀 프로그램 실행하겠다 → bin/bash shell로 입력하겠다-

webapps디렉토리에 있는 모든 앱을 자동으로 배포, 실행함webapps를 삭제한 뒤, webapps.dist 이름을 webapps으로 변경
docker run -it --name alpine-linux alpine:latest → alpine 리눅스 실행shell이 터미널과 연결되도록 -it로 실행.shell 실행 되어도 터미널과 연결되어 있지 않을 경우 컨테이너가 죽음 → 터미널이 종료된 상태로 간주, 프로그램 종료 → 컨테이너 종료
docker logs [컨테이너 이름]docker logs -t [컨테이너 이름] → timestamp도 찍힘docker logs -t --tail 20 [컨테이너 이름] → 마지막 20줄만 출력docker logs -t -f --tail 20 [컨테이너 이름] → 실시간 로그 확인docker volume create [생성할 볼륨 이름] : 도커 볼륨 생성 명령어 -> 볼륨은 호스트에 저장되는 저장소docker run -v [볼륨 이름]:[컨테이너 내부 디렉토리 경로] --name [컨테이너 이름] [이미지 이름] : 생성한 볼륨을 컨테이너 내부에 있는 디렉토리랑 연결 -> 컨테이너에서 해당 디렉토리에 저장된 내용은 볼륨에 저장됨 -> 컨테이너 삭제 후 해당 볼륨 내 데이터는 남아있음docker volume ls : 현재 생성된 볼륨 목록 확인docker volume inspect [볼륨 이름] : 볼륨 상세 정보 확인 (실제 경로 포함)docker volume rm [볼륨 이름] : 볼륨 삭제docker volume prune : 사용하지 않는 볼륨 모두 삭제 Bridge 네트워크 모드를 사용해 컨테이너들 간 통신을 가능하게 해준다.Bridge 네트워크는 같은 네트워크에 속한 컨테이너들끼리 서로의 컨테이너 이름으로 통신이 가능하도록 설정해준다.네트워크 타입
bridge: 기본 네트워크, 컨테이너 간 통신 가능host: 호스트 네트워크 공유 (포트 포워딩 없이 사용)none: 네트워크 없음 (완전 격리)
docker network create university : 컨테이너 전용 네트워크(university) 생성 / 애플리케이션 배포할 네트워크를 하나 만들 예정docker-root, docker-beyond 두 개의 컨테이너를 포트 3307에 연결--restart=always 사용

docker network ls : 네트워크 목록 확인docker network inspect [네트워크 이름] : 네트워크 상세 정보 확인 docker network create [네트워크 이름] : 사용자 정의 네트워크 생성docker run --network [네트워크 이름] ... : 네트워크에 컨테이너 연결 - 컨테이너 생성 시 바로 연결docker network connect [네트워크 이름] [컨테이너 이름] : 이미 생성된 컨테이너 연결docker network disconnect [네트워크 이름] [컨테이너 이름] : 네트워크에서 컨테이너 분리docker network rm [네트워크 이름] : 네트워크 삭제docker network prune : 사용되지 않는 네트워크 삭제