도커 이미지 구조 및 기본 명령어
도커 이미지 내부 파일 구조 보기
도커 작동 순서
- 도커 클라이언트에 명령어 입력 후 도커 서버로 보냄
- 도커 서버에서 컨테이너를 위한 이미지가 캐시에 있는지 확인
- 있다면 그 이미지로 컨테이너를 생성하고 없으면 도커 허브에서 다운 받음
이미지 내부 파일 시스템 구조 보기
docker run alpine ls
docker: 도커 클라리언트 언급
run: 컨테이너 생성 및 실행
이미지이름: 이 컨테이너를 위한 이미지
ls: 원래 이미지가 가지고 있는 시작 명령어를 무시하고 여기 있는 커맨드를 실행하게함(ls는 현재 디렉토리의 파일 리스트 표출)
컨테이너 나열하기
docker run alpine ping localhost
docker ps
- CONTAINED ID: 컨테이너 고유 아이디 해시값, 일부분만 표출
- IMAGE: 컨테이너 생성시 사용한 도커 이미지
- COMMAND: 컨테이너 시작시 실행될 명령어(대부분 별도 설정 필요 x)
- CREATED: 컨테이너 생성된 시간
- STATUS: 컨테이너 상태. 실행중은 Up, 종료는 Exited, 일시정지 Pause
- PORTS: 컨테이나가 개방한 포트와 호스트에 연결한 포트. 특별한 설정을 하지 않으면 출력되지 않는다.
- NAMES: 컨테이너 고유한 이름. 컨테이너 생성시 –name 옵션으로 이름을 설정하지 않으면 임의로 설정. 중복이 안되고 docker rename 명령어로 이름 변경 가능 ex) docker rename orignal changed
–format: 원하는 요소만 출력
현재 실행되고 있지 않은 컨테이너도 출력: -a 옵션
docker ps -a
도커 컨테이너의 생명주기
([생성] -> [시작] -> [실행]): docker run
-> [중지] -> [삭제]
create: 이미지에 있는 파일 스냅샷을 컨테이너 하드 디스크에 전송
docker create hello-world
start: 도커 컨테이너 시작
-a 옵션(attach): 도커 컨테이너에 붙어있으면서 화면에 표출되는 output 전달
docker start -a <id>
stop: 실행중인 도커 컨테이너 정지
gracefully하게 그동안 하던 작업들을 완료하고 컨테이너 정지
docker stop -> SIGTERM(Grace period: 정리하는 시간) -> SIGKILL -> MAIN PROCESS
docker stop <id>
kill: 실행중인 도커 컨테이너 중지
stop과 달리 기다리지 않고 바로 중지 docker kill -> SIGKILL -> Main Process
docker kill <id>
rm: 중지된 컨테이너 삭제
docker ps -a로 중지된 컨테이너 확인
docker rm <id or 이름>
docker rm `docker ps -a -q` # 전부 삭제
docker rmi <이미지 id> # 이미지 삭제
docker system prune # 한번에 컨테이너, 이미지, 네트워크 전부 삭제
실행중인 컨테이너에 명령어 전달
docker exec <id>
docker exec -it <id> # it를 붙여줘야 명령어를 계속 실행할 수 있음
#컨테이너 안에 쉘, 터미널 환경으로 접속 -> sh
docker exec -it <id> sh