Docker 활용 명령어 이해하기

0

TIL

목록 보기
185/195

아래 배울 명령어를 이해하기 전에 알고가면 좋을 용어

포그라운드(foreground)

  • 내가 실행시킨 프로그램의 내용이 화면에서 실행되고 출력되는 상태
    : 즉각적으로 확인과 조작이 가능하지만, 대신 다른 프로그램을 조작할 수 없다.

백그라운드(background)

  • 내가 실행시킨 프로그램이 컴퓨터 내부적으로 실행되고 출력되는 상태
    : 즉각적으로 확인과 조작이 불가능하지만, 대신 다른 프로그램을 조작할 수 있다.

명령어

이미지 관련

  • docker의 image의 list 확인하기
    docker image ls

  • docker hub에서 nginx의 최신버전 이미지를 다운로드
    docker pull nginx

  • docker hub에서 nginx의 특정 버전 이미지를 다운로드
    docker pull nginx:stable-perl

  • 이미지 목록 중 ID가 c8ba로 시작하는 이미지를 삭제
    docker image rm c8ba
    하지만 컨테이너에 포함되어있는 이미지는 삭제할 수 없다
    이럴 경우에도 삭제하고싶다면
    docker image rm -f c8ba
    로 중지되어있는 컨테이너의 이미지를 강제로 삭제 가능

  • 컨테이너에서 사용하고 있지 않은 모든 이미지들을 삭제
    docker image rm $(docker imagex -q)

컨테이너 관련

  • 모든 컨테이너들의 상태를 확인
    docker ps -a

  • nginx라는 이미지의 컨테이너를 생성(아직 중지 상태)
    docker create nginx

  • nginx 이미지로 생성된 (컨테이너 ID가 cb28로 시작하는)컨테이너를 실행
    docker start cb28

만약 mysql 이미지를 다운로드 받지 않은 상태에서 docker create mysql 라고 작성한다면
알아서 docker hub에서 이미지도 같이 다운로드 받아줌

  • cb28로 시작하는 ID의 컨테이너를 삭제
    docker rm cb28

  • nginx 이미지의 docker 컨테이너를 생성 + 실행 동시에
    docker run nginx
    run으로 실행하게되면 포그라운드(foreground)로 실행되기 때문에 ctrl+c를 눌러 탈출한다.
    만약 백그라운드(background)로 실행시키고 싶다면
    docker run -d nginx

  • nginx 이미지로 my-web-server 라는 이름의 컨테이너를 백그라운드에서 생성 + 실행
    docker run -d --name my-web-server nginx


위에서 진행한 명령어들은 현제 컨테이너 안에서 nginx를 생성하고 실행했기 때문에
호스트와 연결이 되어있지 않은 상태이기 때문에
localhost:80으로 접속해도 아무 것도 뜨지 않는다.

호스트와 컨테이너는 독립적이기 때문에 이 둘을 연결해주어야한다!

  • nginx 이미지로 4000번 포트(호스트 포트)와 80번 포트(컨테이너 포트)를 연결시켜서 백그라운드로 생성 + 실행
    docker run -d -p 4000:80 nginx

docker ps로 확인 가능하다.

이제 localhost:80으로 접속하려하면?

당연히 아무것도 뜨지 않는다.
사용자는 localhost:4000과 연결되기 때문이다.


컨테이너 추가 명령어

  • docker stop과 docker kill 둘 다 종료하는건데 차이가 뭐지?
    docker stop ~ : 정상적인 종료
    docker kill ~ : 강제 종료(파일 손상의 위험이 있으나 어쩔 수 없는 경우)

  • docker rm은 컨테이너가 중지되어있는 상태에서만 가능하다.
    docker stop ~
    docker rm ~

  • 중지되어있는 모든 컨테이너들을 삭제
    docker rm $(docker ps -qa)

  • 실행되고있는 컨테이너는 삭제가 불가능하지만, 강제적으로 삭제가 가능하다.
    docker rm -f ~


로그 관련 명령어

  • 컨테이너의 로그를 확인하고 싶을 때
    docker logs ~

  • 로그가 너무 많이나와... 마지막 10줄 정도만 확인하고싶어
    docker logs --tail 10 ~

  • 기존의 로그들이랑 추가적으로 실시간 생성되는 로그를 확인하고싶어
    docker logs -f ~

  • 원래 있던 로그들은 필요없고, 새로 생성되는 로그들만 확인하고싶어
    docker logs --tail 0 -f


컨테이너 접속 명령어

  • 특정 컨테이너의 내부로 (bash 환경으로)접속하고싶어
    docker exec -it ~ bash

  • 컨테이너 환경에서 나와서 호스트로 돌아가고싶어
    exit

0개의 댓글