docker run [docker_image]
- 도커 서버로 명령어 전송
- 도커 서버 캐시에 이미 해당 이미지가 있는지 확인
- 없으면 도커 허브에서 이미지를 찾아 캐시로 가져옴
- 가져온 후 이미지로 컨테이너를 만들어서 컨테이너 내부에 이미지 내부 파일 스냅샷을 컨테이너 하드디스크에 할당 후 명령어를 실행해 파일을 실행
docker run [docker_image][command]
- 원래 이미지가 가지고 있는 시작 명령어를 무시하고 입력한 커멘드를 실행
docker ps # ps: process status
- CONTAINER ID : 컨테이너 고유의 해시값
- IMAGE : 컨테이너 생성 시 이용한 도커 이미지
- COMMAND : 컨테이너 시작시 실행될 명령어
- CREATED : 컨테이너가 생성된 시간
- STATUS : 컨테이너 상태(Up: 실행 중, Exited: 종료, Pause: 일시 정지)
- PORTS : 컨테이너가 개발한 포트와 호스트에 연결한 포트(특별한 설정을 하지 않으면 출력 X)
- NAMES : 컨테이너 고유 이름 --name으로 따로 설정해주지 않으면 도커에서 임의로 설정을 해줌
docker ps --format 'table{{.NAMES}}\t table{{.IMAGE}}'
docker ps -a # a: all
- 실행되고 있지 않은 이미지를 포함한 컨테이너 내역 출력
docker run [docker_image] => docker create img + docker start [container_id/name]
docker stop [containerID] / docker kill [containerID]
- stop은 gracefully 하게 => 기존 작업이 있다면 그 작업이 끝날때까지 기다렸다가 중지
- kill은 곧바로 정지
- stop => sigterm => sigkill => main_process down
- kill => sigkill => main_process_down
docker rm [containerID]
docker rm
docker ps -a -q
- 모든 컨테이너 요소 삭제
docker rmi [imageID]
- 도커 이미지 삭제
docker system prune
- 사용하지 않는 이미지, 컨테이너 정리
docker exec [containerID][command]
- 이미 실행중인 컨테이너에 명령어 전달
- run => 새로운 컨테이너 생성해서 실행
docker exec -it [containerID][command]
-i : interactive
-t : terminal
- 컨테이너에 interactive 상태로 터미널에 접근해서 Command 실행
docker exec -it [containerID] sh
- 컨테이너에 interactive 상태로 접근해서 shell(터미널) 실행
- sh, bash, zsh : terminal로 접속(이미지에 있는 쉘 종류에 따라 상이) => 가장 보편적인것이
sh
- 환경에서 나올때는 ctrl+D를 누르면 된다.