Docker 내 설치된 이미지 확인
- Repository : 라이브러리 이름
- TAG : 만든 회사명 또는 버전 (버전이 없으면 보통 최신버전을 의미)
- Image ID : 해당 이미지의 primary key
- Created : 이미지 생성 날짜
- Size : 이미지 크기
docker images

현재 실행 중인 Container 확인
docker ps
모든 컨테이너 확인
- -a : all의 약어
docker ps -a

이미지 다운로드
docker pull 'repository:tag'

이미지 실행
- -it : 터미널로 상호작용이 가능한 상태
- -dit : repository를 background로 실행 (Daemon) + 터미널 상호작용
- image name → 프로세스화
- bash → ubuntu 실행 시 같이 수행할 명령어
- 이 명령으로 수행하는 것이 daemon이어야 컨테이너가 죽지 않고 살아있음
- bash는 사용자의 입력을 계속 기다리기 때문에 daemon이 가능
- echo와 같은 단발성 명령은 명령문 수행 후 바로 Container가 종료됨
- 옵션이 -d일 경우 bash를 실행시키지 않아도 알아서 daemon이 됨
- 이때 자동으로 기본 명령어가 실행됨
- 다른 명령어를 실행시키면 기본 명령어는 override 됨
docker run -it 'repository(image name) or image id' 'extra command'




컨테이너 정지
docker stop 'container id'

컨테이너 삭제
docker rm 'container id'

- 하나씩 지우기 어렵기 때문에 한 번에 지우는 방법 : 리눅스의 리다이렉션 문법 활용
# 모든 컨테이너의 id만 표시
docker ps -aq
# 모든 컨테이너 삭제
docker rm $(docker ps -aq)

이미지 삭제
# 이미지 삭제
docker rmi 'image id'
# 설치된 이미지 id만 출력
docker images -q
# 설치된 이미지 전체 삭제
docker rmi $(docker images -q)

포트 포워딩
- Docker 내부 Container의 Tomcat은 외부에서 접근 불가
- 포트포워딩 필요

docker run -dit -p 8888:8080 tomcat
- 0.0.0.0:8888
- 8888 포트로 요청하는 모든 IP 주소를 허용

컨테이너 업로드
- 컨테이너는 꺼지면 내부의 모든 상태가 날아가기 때문에 현재 상태를 저장해야 함
# new-repo는 'username/repository' 형태로 작성
docker commit 'container id' 'new-repo:tag'

- push하면 자동으로 repository 생성 후 push됨
docker push 'new-repo:tag'

- push한 내 이미지는 Docker Hub의 Repositories에서 확인 및 관리 가능

Share article