[따라하며 배우는 도커와 CI 환경] 도커 클라이언트 명령어

Jimin Lim·2022년 5월 14일
0

Docker

목록 보기
2/9
post-thumbnail

Remind

작동 순서

  1. 도커 클라이언트에 명령어 입력 후 도커 서버로 보낸다.
  2. 도커 서버에서 컨테이너를 위한 이미지가 캐쉬되어 있는지 확인한다.
  3. 없으면 도커 허브에서 다운, 있으면 가지고 있는 이미지로 컨테이너 생성한다.

이미지로 컨테이너 생성하는 순서

  1. 파일 스냅샷 되어있는 것을 컨테이너의 하드 디스크 부분에 올린다.
  2. 시작 커맨드를 이용해 어플리케이션 실행한다.

✏️ 이미지 내부 파일 시스템 구조

docker run alpine ls 를 예로 든다면, 이미지 이름 뒤 다른 명령어가 붙어서 원래의 명령어가 무시되고 ls 명령어가 실행된다. 하지만 hello-world 이미지로는 ls 명령을 한다면 실행할 수 있는 파일을 못찾는다는 오류가 발생한다.

즉, 파일 스냅샷에 따라서 사용할 수 있는 커맨드가 존재한다.

✏️ 컨테이너 나열

🔗 현재 실행중인 컨테이너 나열: docker ps

이름내용
CONTAINER ID컨테이너의 고유한 아이디 해쉬값
IMAGE컨테이너 생성 시 사용한 도커 이미지
COMMAND컨테이너 시작 시 실행될 명령어
→ 대부분 이미지에 내장되어 있으므로 별도 설정이 필요 X
CREATED컨테이너가 생성된 시간
STATUS컨테이너의 상태
→ 실행 중: Up, 종료: Exited, 일시정지: Pause
PORTS컨테이너가 개방한 포트와 호스트에 연결한 포트
→ 특별한 설정을 하지 않은 경우 출력되지 않는다.
NAMES컨테이너 고유한 이름
→ 컨테이너 생성 시 --name 옵션으로 이름 설정 가능
→ id와 마찬가지로 중복이 안되고, 아래와 같이 docker rename명령어로 이름을 변경 가능
docker rename original-name changed-name

🔗 모든 컨테이너 나열: docker ps -a

실행되지 않은 모든 컨테이너를 보고 싶다면 -a 옵션을 추가해 주면 된다.

✏️ 도커 컨테이너 생명 주기

🔗 container 실행

docker run 을 docker create, docker start로 쪼개서 볼 수 있다.
docker create 명령시, 파일 스냅숏을 컨테이너의 하드디스크로 가져오고 docker start 명령시, 시작 커맨드를 이용해 어플리케이션을 실행한다.


이때 -a 옵션은 output을 화면에 출력하도록 하는 것이다.

🔗 container 중지

  • docker stop
    그 동안 하던 작업들을 완료 후, 컨테이너 중지
  • docker kill
    어떠한 것도 기다리지 않고, 즉시 중지

🔗 container 삭제

  • docker rm <이미지/이름>
    중지된 컨테이너 삭제
  • docker rm
    docker rm `docker ps -a -q`
    모든 컨테이너 삭제
  • docker rmi <이미지 id>
    도커 이미지 삭제
  • docker system prune
    도커를 쓰지 않을 때 정리시 사용, 이 명령도 실행 중인 컨테이너에는 영향을 주지 않는다.

🔗 실행중인 container에 명령어 전달

  • docker exec <컨테이너 아이디>
    결과로 보면 docker run alpine ls와 다를게 없는데, run은 새로 컨테이너를 생성해 전달하고 exec는 실행 중인 컨테이너에 명령어를 전달한다는 점이 다르다.

실행중인 redis에 명령어 전달 예시

레디스 서버 실행 후, 레디스 클라이언트를 통해 서버에 명령어 전달

하지만 도커로 redis를 실행한 후, 클라이언트를 실행하려고 할때 컨테이너 밖이라 실행이 안된다.

따라서, 레디스 클라이언트도 컨테이너 내에서 실행하도록 해야 한다.

  1. docker run redis
  2. docker exec -it <컨테이너 아이디> redis-cli

🔗 실행중인 container에 터미널 환경으로 접속

docker exec을 이용해 명령어를 전달했었는데, 터미널 환경으로 접속이 가능하다.

  • docker exec -it <컨테이너 아이디> sh
    ctrl + D로 종료

  • docker run -it <이미지 이름> sh
    exec 대신 run 사용 가능
profile
💻 ☕️ 🏝 🍑 🍹 🏊‍♀️

0개의 댓글