도커 명령어로 이미지 내부 파일 시스템 구조 보기 ⌨️
명령어 " docker run {이미지} ls " 실행
- 도커 이미지를 가져옴
- 도커 컨테이너를 만듦
- 파일 스냅샷을 하드디스크에 다운로드함
- docker run {이미지] ls 명령어 실행 (기본 커맨드는 무시되고, ls 커맨드가 실행됨)
- 해당 이미지 내부 파일 시스템 구조 확인
파일 스냅샷이 어떤 것들이 있느냐에 따라서 쓸 수 있는 커맨드가 제한적이다.
도커 명령어로 컨테이너 나열하기 ⌨️
명령어 " docker ps " 실행
- CONTAINER ID : 컨테이너의 고유한 아이디 해쉬값
- IMAGE : 이미지 이름
- COMMAND : 컨테이너가 시작 시 실행될 명령어
- CREATED : 컨테이너가 생성된 시간
- STATUS : 컨테이너의 상태
- Up : 실행 중
- Exited : 종료
- Pause : 일시정지
- PORTS : 컨테이너가 개방한 포트와 호스트에 연결한 포트
- NAMES : 컨테이너 고유한 이름
- 컨테이너 생성 시 —name 옵션으로 이름을 설정하지 않으면 도커 엔진이 임의로 설정함
- id와 마찬가지로 고유한 값임
명령어 " docker ps —format 'table{{.Names}}\table{{.Image}} " 실행
- 내가 원하는 항목만 볼 수 있는 명령어
- 위의 명령어에서는 Names, Image 항목에 대한 정보만 보임
명령어 " docker ps -a " 실행
- 모든 컨테이너 나열
도커 명령어로 알아보는 도커 컨테이너의 생명주기 🐋
생성 (create) → 시작 (start) → 실행 (running) → 중지 (stopped) → 삭제 (deleted)
- 생성 : docker create {이미지 이름}
- 시작 : docker start {시작할 컨테이너 아이디/이름}
- 실행 : docker run {이미지 이름}
- 중지 : docker stop {중지할 컨테이너 아이디/이름}, docker kill {중지할 컨테이너 아이디/이름}
- 삭제 : docker rm {삭제할 컨테이너 아이디/이름}
도커 생성
docker create {이미지 이름}
- 이미지에 있는 파일 스냅샷을 컨테이너 하드 디스크에 넣어줌
도커 시작
docker start {컨테이너 아이디/이름}
- 시작 시 실행될 명령어를 컨테이너에 넣고 실행함
- docker start -a {컨테이너 아이디/이름}
- -a (attach) 옵션 : 도커 컨테이너가 실행 될 때 해당 컨테이너에 붙어서 Output을 화면에 표출해줌
도커 실행 = 생성 + 시작
docker run {이미지 이름}
- 이미지에 있는 파일 스냅샷을 컨테이너 하드 디스크에 넣어줌
- 시작 시 실행될 명령어를 컨테이너에 넣고 실행함
도커 중지
docker stop {중지할 컨테이너 아이디/이름}
- Gracefully 하게 중지를 시킴 : 기다렸다가 컨테이너를 중지
- SIGTERM을 날려서 Grace Period(정리시간)이 지나고 SIGKILL을 Main Process에 날려서 컨테이너를 중지함
docker kill {중지할 컨테이너 아이디/이름}
- 어떠한 것도 기다리지 않고 바로 컨테이너를 중지
- Grace Period가 없이 SIGKILL을 바로 Main Process에 날려서 컨테이너를 즉시 중지함
도커 명령어로 컨테이너 삭제하기 🧹
docker rm {삭제할 컨테이너 아이디/이름}
- 실행 중인 컨테이너를 삭제할 때는 컨테이너를 먼저 중지한 후에 삭제 가능
docker rm `docker -a -q`
- 모든 컨테이너를 삭제
docker rmi {이미지 id}
- 이미지를 삭제
docker system prune (유용함)
- 도커를 쓰지 않을 때 모두 정리하고 싶을 때 사용
- 실행 중인 컨테이너는 정리하지 않음
도커 명령어로 실행중인 컨테이너에 명령어 전달 📨
docker exec {컨테이너 아이디} " 명령어 "
- 지정한 컨테이너 안에서 명령어를 실행함
- -it 옵션 : 명령어를 실행한 후 계속 명령어를 적을 수 있음 ex) docker exec -it {컨테이너 아이디} "명령어"
레디스(Redis)를 이용한 도커 컨테이너 이해 🔴
도커로 레디스를 실행하면 레디스 환경은 도커 컨테이너 안에서만 해야 됨, 밖에서 아무리 레디스를 사용하려 해도 쓸 수 없음
⭐실습⭐
-
터미널을 실행하고 " docker run redis " 명령어를 실행한다 → Redis 서버 작동
-
" docker exec -it {컨테이너 아이디} redis-cli " 명령어를 실행한다 → Redis Client
- -it 옵션 : 명령어를 실행한 후 계속 명령어를 적을 수 있다 - 해당 옵션을 안 적으면 redis client를 실행하고 다시 빠져나옴
-
redis 명령어를 사용해본다. ex) set key value → get key
- 아래 이미지처럼 redis 실행 확인 가능
도커 명령어로 컨테이너를 쉘 환경으로 접근하기 👌
- 터미널을 실행하고 alpine 이미지를 이용해서 컨테이너를 실행 ( " docker run alpine ping localhost " )
- exec 명령어를 쓰고 마지막 명령어 부분에 sh를 더해서 실행 ( " docker exec -it {컨테이너 아이디} sh " )
- 터미널 환경에서 할 수 있는 동작을 모두 할 수 있음
- Control + D로 탈출
'개발환경' 카테고리의 다른 글
[개발환경 - 도커(5)] 도커 이미지 만들기 / Create docker images - 개발하는 지토 (0) | 2020.11.21 |
---|---|
[개발환경 - 도커(3)] 도커(Docker) 기본 흐름, 기존 가상머신(VM)과의 차이, 도커 run 해보기 - 개발하는 지토 (0) | 2020.11.21 |
[개발환경 - 도커(2)] 도커 설치하기 윈도우 10 (Docker 설치하기 window 10 ) - 개발하는 지토 (0) | 2020.11.20 |
[개발환경 - 도커(1)] 도커란 무엇인가.. 도커를 쓰는이유!! (Docker) - 개발하는 지토 (0) | 2020.11.20 |
댓글