Docker (도커)

도커 학습 2 (Nginx 설치 및 도커 CLI )

Alpaca_data_cloud 2025. 3. 6. 15:46

- 이미지 다운로드 , 조회 , 삭제 및 컨테이너 생성 , 실행 , 조회 ,중지 , 삭제 , 로그 조회 , 컨테이너 내부 접속(exec -it)

 

설치할 Nginx와 같은 이미지는 docker hub 에서 괸리되고 이곳에서 설치를 받게 되는 것이다.

✅Nginx 이미지 다운로드
$ docker pull nginx

[특정 버전 이미지 다운로드]
# docker pull 이미지명:태그명
$ docker pull nginx:stable-perl

✅다운로드 된 이미지 확인하기
$ docker image ls

✅이미지 삭제
$ docker image rm [이미지 ID 또는 이미지명]
중지된 컨테이너에서 사용하고 있는 이미지 강제 삭제하기
$ docker image rm -f [이미지 ID 또는 이미지명]
[전체 이미지 삭제]
$ docker image rm -f $(docker images -q)

컨테이너 생성 ( 컨데이너를 생성만 하고 정지 상태)
# docker create 이미지명[:태그명]
$ docker create nginx

컨테이너 실행 (정지 되어 있는 컨테이너 실행)
$ docker start 컨테이너명[또는 컨테이너 ID]

✅ 컨테이너 생성 + 실행
# docker run 이미지명[:태그명]
$ docker run nginx # 포그라운드에서 실행 (추가적인 명령어 조작을 할 수가 없음)

[컨테이너를 백그라운드에서 실행시키기]
# docker run -d 이미지명[:태그명]
$ docker run -d nginx

[컨테이너에 이름 붙여서 생성 및 실행하기]
# docker run -d --name [컨테이너 이름] 이미지명[:태그명]
$ docker run -d --name my-web-server nginx

[호스트의 포트와 컨테이너의 포트를 연결하기]
# docker run -d -p [호스트 포트]:[컨테이너 포트] 이미지명[:태그명]
$ docker run -d -p 4000:80 nginx -> 도커를 실행하는 호스트의 4000번 포트를 컨테이너의 80번 포트로 연결하도록 설정한다.

이미지를 컨테이너에 올려 Nginx 서버 실행시키기
$ docker run --name webserver -d -p 80:80 nginx

✅ 컨테이너 조회
실행되고 있는 모든 컨테이너 상태 확인하기
$ docker ps
[모든 컨테이너 조회 (작동 중인 컨테이너 + 작동을 멈춘 컨테이너)]
$ docker ps -a

✅ 컨테이너 중지
$ docker stop 컨테이너명[또는 컨테이너 ID]
$ docker kill 컨테이너명[또는 컨테이너 ID]


✅ 컨테이너 삭제
[중지되어 있는 특정 컨테이너 삭제]
$ docker rm 컨테이너명[또는 컨테이너 ID]
[실행되고 있는 특정 컨테이너 삭제]
$ docker rm -f 컨테이너명[또는 컨테이너 ID]
[중지되어 있는 모든 컨테이너 삭제]
$ docker rm $(docker ps -qa)
[실행되고 있는 모든 컨테이너 삭제]
$ docker rm -f $(docker ps -qa)


✅ 컨테이너(Container) 로그 조회
[특정 컨테이너의 모든 로그 조회]
# docker logs [컨테이너 ID 또는 컨테이너명]

[최근 로그 10줄만 조회]
$ dokcer logs --tail 10 [컨테이너 ID 또는 컨테이너명]

[기존 로그 조회 + 생성되는 로그를 실시간으로 보고 싶은 경우]
# docker logs -f [컨테이너 ID 또는 컨테이너명]

# Nginx의 컨테이너에 실시간으로 쌓이는 로그 확인하기
$ docker run -d -p 80:80 nginx
$ docker logs -f

[기존 로그는 조회하지 않기 + 생성되는 로그를 실시간으로 보고 싶은 경우]
$ docker logs --tail 0 -f [컨테이너 ID 또는 컨테이너명]

✅ 실행 중인 컨테이너 내부에 접속하기
# docker exec -it 컨테이너명[또는 컨테이너 ID] bash
$ docker exec -it [Nginx가 실행되고 있는 컨테이너 ID] bash

 

 

Nginx 이미지 다운로드 명령어

Nginx란 여러 기능을 가진 서버 중 하나로 웹서버, 로드벨런싱, 리버스 프록시는 다양한 기능을 제공한다.

다운받은 이미지 를 볼 수 있다.
nginx 이미지를 80포트로 webserver 라는 이름으로 컨테이너에 올리는 명령어다 저렇게 결과가 나오면 잘된것임.
이후 주소창에 localhost:80 으로 치면 내컴퓨터에서 nginx가 실행되고 있다고 보여준다.docker stop webserver 라고 하면 해당 화면이 안뜬다.

 

docker ps 로 현재 실행중인 컨테이너를 확인할 수 있고, docker stop [컨테이너 이름] 명령어로 컨테이너를 중지 시킬수 있다.

 

 

도커 이미지 삭제

docker images -q : 시스템에 있는 모든 이미지의 ID를 반환한다. 여기서 -q 옵션은 quite를 의미하며, 상세 정보 대신에 각 이미지의 고유한 ID만 표시하도록 지시한다.

docker run -p 4000:80 라고 명령어를 입력하게 되면, 도커를 실행하는 호스트의 4000번 포트를 컨테이너의 80번 포트로 연결하도록 설정한다.

 

즉, 내가 4000번 포트로 들어가겠다고 하면 4000:80 으로 설정해 두었기 때문에 시스템이 80번 포트로 연결을 해준다.

localhost:4000 으로 접속을 하게 되면 80 번 포트로 자동으로 연결해줘서 컨테이너 로 접속해준다.

컨테이너는 호스트 컴퓨터와 네트워크 망이 분리되어 있기 때문에 이렇게 되는 것이다.

 

컨테이너 로그 조회

docker log tail - 0 을 하면 로그에서 아무것도 안 보여주고 -f 는 전체 로그를 실시간으로 포그라운드로 볼 수 있기 때문에 , 실시간으로 뜨는 로그만 확인이 가능하다.

 

컨테이너 내부 접속

bash 환경으로 컨테이너 내부로 접속해서 컨테이너 내부에서 작업이 가능하다.

'Docker (도커)' 카테고리의 다른 글

도커 학습 1 ( 수업자료 및 환경 구성 )  (0) 2025.03.05