[2] 도커 client 명령어
[1] 도커 작동 순서
1. 도커 클라이언트에 명령어 입력 후 도커 서버로 보냄
2. 도터 서버에서 컨테이너를 위한 이미지가 이미 캐쉬되어 있는지 확인 -> 없으면 허브에서 다운 받음
3. 이미지로 컨테이너 생성(by 파일 스냅샷을 하드 디스크에 올림 -> 시작 커맨드로 어플리케이션 실행)
[2] 하드디스크 내 이미지, 내부 파일 시스템 구조
docker / run / 이미지 이름 / ls: 원래 이미지가 갖고 있는 시작 명령어를 무시하고 여기에 있는 커맨드를 실행함
docker run alpine ls -- alpine에는 ls를 실행하는 게 있음
docker run hello-world ls -- 오류남, hello-world에는 ls를 실행하는 게 없음
[3] 컨테이너들 나열하기
docker ps (process status)
실습)
1. 2개의 terminal 작동(컨테이너 실행용 + 명령어를 사용해 컨테이너가 잘 실행되고 있는지 확인용)
2. 1번째 terminal에는 container 하나 실행
3. 2번째 terminal에는 docker ps로 확인
실행:
한 터미널에 docker run alpine ping localhost하고 다른 터미널에 docker ps 실행
결과:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5cfe96b6974f alpine "ping localhost" 12 seconds ago Up 12 seconds amazing_beaver
[4] 도커 컨테이너의 생명 주기
docker run = docker create + docker create
1) docker create <이미지 이름> -- 파일 스냅샷(이미지의 특정 시점 상태를 저장하는 것)을 하드 디스크에 넣음
docker create hello-world해서 나오는게 생성된 컨테이너의 id
2) docker start <컨테이너 아이디 / 이름> -- 명령어를 컨테이너에 넣음
docker start -a <컨테이너의 id>
: -a란 도커 컨테이너가 실행될 때 output을 화면에 표출하는 역할
3) docker stop <컨테이너 id> -- 자비롭게 하고 있던 작업을 완료하고 컨테이너를 중지시킴
4) docker kill -- 기다리지 않고 컨테이너 바로 중지
5) docker rm <컨테이너 id> -- 컨테이너를 먼저 중지한 후 실행 가능
모든 컨테이너 삭제: docker rm `docker ps -a -q` 하고 docker ps -a 하면 아무것도 안 나옴
이미지 삭제: docker rmi <이미지 id>
한번에 컨테이너, 이미지, 네트워크 모두 삭제: docker system prune -- 쓰고있는 컨테이너에는 적용 x
6) 이미 실행중인 컨테이너에 명령어를 전달
docker exec <컨테이너 id>
실습)
1. 2개의 컨테이너 실행
2. 첫번째 터미널에서 컨테이너 하나 실행 -- docker run alpine ping localhost
3. 두번째 터미널에서 컨테이너가 잘 작동하는지 확인 후 다른 명령어 전달 -- docker ps 후 docker exec <컨테이너 id> ls
docker run -- 새로 컨테이너 만들어서 실행
docker exec -- 이미 실행중인 컨테이너에 명령어 전달
[5] 레디스를 이용한 컨테이너 이해
레디스 서버가 작동하고 있어야 함:docker run redis
-> 레디스 클라이언트 실행 후 명령어를 레디스 서버에 전달: redis-cli
but 위에대로 하면 충돌 발생 --> 컨테이너 안이 아니라 밖에서 redis-cli를 작동시키기 때문
=> docker exec -it <컨테이너 id> redis-cli로 작동시켜야 함!!
여기서 it를 붙여줘야 명령어를 실행한 후 계속 명령어를 적을 수 있음!! (interative terminal)
[6] 실행중인 container에서 terminal 실행하기
docker exec -it <컨테이너 id> sh 처럼 sh/bash/zsh/powershell를 붙여준다. (범용적인건 sh, 우분투는 bash)
sh 붙이면 container 안의 shell 환경으로 접근한 것
shell에서 나오려면 ctrl+d 해야함 (ctrl+c 작동 x)