Docker 내용 몇 가지 정리

라모스·2022년 1월 6일
0
post-thumbnail

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 Stop과 Kill의 차이?

공통점은 둘 다 실행중인 컨테이너를 중지시킨다.

하지만

  1. Stop은 Gracefully하게 중지를 시킴
    자비롭게 그동안 하던 작업들을 (메시지를 보내고 있었다면 보내고 있던 메시지) 완료하고 컨테이너를 중지시킨다.

  2. Kill은 Stop과 달리 어떠한 것도 기다리지 않고 바로 컨테이너를 중지시킨다.

redis와 redis-cli 예제

docker run redis 실행 이후 새 Terminal 창에서 redis-cli 를 실행하면 에러가 발생한다.

이는 레디스 클라이언트가 도커 컨테이너 내부에서 동작중인 레디스 서버와 별개로 외부에서 접근하려 하고 있기 때문에 연결이 안되는 것이다.

따라서 redis-cli도 컨테이너 안에서 실행해야 한다.

docker exec -it <컨테이너 아이디> <명령어>처럼 이미 실행중인 컨테이너에 명령어를 전달하면 된다.

-> docker exec -it <컨테이너 아이디> redis-cli

참고로 -it을 붙여줘야 명령어를 실행한 후 계속 명령어를 적을 수 있다.
(-i : interactive, -t : terminal)

이 옵션이 없다면 그냥 redis-cli를 키기만 하고 밖으로 다시 나와버린다.

이 후 redis-cli를 간단하게 테스트해보면 다음과 같이 정상적으로 실행이 된다.

실행 중인 컨테이너에 쉘 환경으로 접속하기

docker exec -it <컨테이너 아이디> <명령어> 처럼 명령어 하나 입력해야 할 때마다 타이핑 중복이 많은데, 이 문제점을 해결하기 위해 컨테이너 안에 shell이나 terminal 환경으로 접속하는 방법이 있다.

마지막 명령어를 sh로 주면 된다.
-> docker exec(또는 run) -it <컨테이너 아이디> sh


빠져 나올때는 Control + D (기존 Control + C가 안먹힘)

profile
Step by step goes a long way.

0개의 댓글