반응형

(Docker)도커 - (DockerHub)도커허브 컨테이너 이미지 검색 다운 실행 정지 삭제하기(nginx)

 

지난 포스팅에서는 도커 설치 및 삭제에 대해서 알아봤습니다.

이번 포스팅에서는 설치된 도커와 도커허브를 이용하여 도커를 아래와 같이 실행해보겠습니다.

  1.  도커허브에서 이미지 검색하기
  2.  도커허브에서 컨테이너 이미지 다운로드하기
  3.  도커 이미지 컨테이너로 만들고 시작하기
  4.  이미지 다운, 컨테이너 생성, 시작 한 번에 하기(2~3번 한 번에 실행)
  5.  도커 inspect, log, top, exec 컨테이너 명령어 실행하기
  6.  컨테이너 중지하기
  7.  컨테이너 삭제하기(내리기)
  8.  컨테이너 이미지 삭제하기

실습용 O/S는 Ubuntu 20.04로 진행하겠습니다. 

 

 

도커 그룹에 사용자 추가하기

사용의 용의성을 위해서 먼저 루트 사용자로 변경해서 작업을 하거나, 또는 현재 사용자를 docker 그룹에 추가해줘야 합니다.

 

루트 사용자로 변경하기 위한 명령어는 아래와 같습니다.

$ sudo su -
### 또는 ###
$ su -

 

다른 방법으로, 현재 사용자를 docker 그룹에 추가하기 위해 먼저 docker 그룹 있는지 확인합니다..

$ cat /etc/group | grep docker

그룹 확인

 

 

그룹이 없다면 아래 명령어로 그룹을 생성합니다.

$ sudo groupadd docker

 

그룹이 있다면 아래 명령어로 그룹에 사용자를 추가합니다.(저는 사용자명이 'reddb'입니다)

추가 후에 그룹을 다시 확인하면 docker 그룹에 사용자가 추가된 것이 확인됩니다.

$ sudo usermod -aG docker reddb

그룹에 사용자추가

 

 

마지막으로 아래 명령어로 자신의 그룹을 도커 그룹으로 변경하고 버전을 확인하시기 바랍니다.

서버 버전이 나온다면 정상적으로 그룹이 된 것입니다.

$ newgrp docker
$ docker version

새그룹으로 변경하기

 

 

 

(DockerHub)도커허브에서 컨테이너 이미지 검색하기

nginx 컨테이너 이미지가 도커허브에 존재하는지 아래 명령어로 조회합니다. 

$ docker search nginx

도커허브에서 nginx 컨테이너 이미지 검색

 

 

 

(DockerHub)도커허브에서 컨테이너에서 이미지 다운로드하기

먼저 현재 내가 보유한 이미지 목록을 확인합니다.

$ docker images

이미지 비어있음

 

 

이미지들이 다운로드하여지는 폴더도 확인합니다.

$ sudo ls -al /var/lib/docker/overlay2/

이미지폴더 비어있음

 

 

이제 nginx 컨테이너 이미지를 다운로드하여 봅니다. ("$ docker pull 이미지명:버전" 버전 생략 시 최신 버전 다운)

$ docker pull nginx

6개의 이미지 레이어를 다운받음(Pull)

 

 

다시 보유 이미지 목록과 폴더를 조회해 보면, nginx 이미지 목록과 6개의 레이어가 폴더에 존재하는 것이 확인됩니다.

$ docker images
$ sudo ls -al /var/lib/docker/overlay2/

컨테이너 이미지 정상 다운(Pull)

 

 

다운로드한 도커 이미지 컨테이너로 만들고 실행하기

컨테이너 이미지를 호스트에서(내 서버, 내 PC)에서 컨테이너로 만들어 줍니다.

($ docker create --name 컨테이너이름작명  -p 호스트로들어오는포트:도커컨테이너로포워딩포트 이미지명)

$ docker create --name test_name1 -p 80:80 nginx

이미지로 컨테이너 생성

 

컨테이너 프로세서 상태를 확인해 봅니다. ($ docker ps -a)

상태(STATUS)를 보면 Created 상태입니다.

프로세서 확인

 

컨테이너를 start 명령어로 시작하고, 프로세서 상태를 확인하면 Up 상태가 됩니다.

($ docker start 작명한이름)

$ docker start test_name1

도커 컨테이너 start

 

이제 호스트에서(내 서버, 내 PC) 브라우저를 열어 localhost로 접속하면 nginx화면이 정상적으로 나타납니다.

localhost:80 접속시 도커 nginx로 포트포워딩

 

 

 이미지 다운, 컨테이너 생성, 시작 한 번에 하기

위에서 사용한 이미지다운(pull), 컨테이너 생성(create), 시작(start)을 한 번에 하는 명령어는 run입니다.

컨테이너와 이미지를 삭제해주고 run명령어로 한 번에 다운, 생성, 시작을 해보겠습니다.

 

실행 중인 도커 컨테이너를 강제로 종료시키고 삭제시키는 명령어와($ docker rm -f 작명한컨테이너이름)

도커 이미지를 삭제하는 명령어를 실행합니다.($ docker rmi 이미지이름)

$ docker rm -f test_name1
$ docker rmi nginx

nginx 컨테이너 종료 및 삭제 / 이미지 삭제

 

이제 아래 명령어를 실행하여 이미지 다운, 컨테이너 생성, 컨테이너 시작을 합니다.

($ docker run --name 컨테이너이름작명 -d -p 우분투로들어오는포트:도커컨테이너로포워딩포트 이미지명)

※ 외부에서 접속 시 (우분투)서버로 들어오는 포트 방화벽이 막고 있지 않는지 설정 확인하시기 바랍니다.

$ docker run --name test_name1 -d -p 80:80 nginx

이미지가 존재 하지 않으면 다운 후 컨테이너 생성하여 시작

 

도커 컨테이너 프로세스 목록을 확인합니다. ($ docker ps -a)

프로세서 목록 상태 확인

 

이제 웹브라우저를 통해 우분투 IP에 80 포트로 접속해보면 nginx 페이지가 뜹니다.

우분투 80포트를 통해 nginx 컨테이너 80포트로 포워딩

 

 

도커 inspect, log, top, exec 컨테이너 명령어 실행하기

도커 이미지를 run 할 때 자동으로 실행되는 명령어를 아래 명령어로 확인할 수 있습니다.

$ docker image inspect nginx | grep CMD

이미지로 컨테이너 실행시 자동 실행되는 명령어 확인

 

실행 중인 컨테이너 또한 inspect 명령어로 상세히 확인할 수 있습니다.

아래 명령어로 도커 컨테이너에 부여된 사설 IP를 확인해 봅니다.

$ docker inspect test_name1 | grep IPAddress

 

nginx 컨테이너(작명한 이름: test_name1)에 attach 명령어로 접속을 하면 위에 자동 실행되는 명령어가 작동하는 상태로 접속이 됩니다. (localhost 접속한 브라우저를 새로고침 하면 nginx가 통신하는 내역이 찍힘)

$ docker attach test_name1

attach로 들어가 nginx 통신내역 확인

 

또한 로그를 확인할 수도 있습니다. -f(팔로우) 옵션을 주면 nginx 통신이 이뤄질 때마다 화면에 새로운 로그를 계속해서 찍어줍니다. ($ docker logs -f 작명한컨테이너이름)

(팔로우 로그 화면을 빠져나오는 단축키는 Ctrl+C입니다)

$ docker logs -f test_name1

logs 확인

 

현재 도커 컨테이너에서 실행 중인 프로세스 목록을 확인할 수 있습니다.

$ docker top test_name1

컨테이너 내에서 돌아가고 있는 프로세스 목록

 

만약 nginx 컨테이너에 bash로 접속을 하고 싶다면 아래 exec 명령어와 -it 옵션을 이용해서 bash 프로세스를 실행하면 루트로 접속이 됩니다. (옵션 -i는 인터렉티브, -t는 터미널로 bash 접속 시 필수 옵션입니다)

$ docker exec -it test_name1 /bin/bash

nginx 컨테이너 bash로 접속

 

test_name1 컨테이너 bash에서 exit 명령어로 호스트로 빠져나오거나, Ctrl+p, Ctrl+q로 빠져나올 수 있습니다.

빠져나오는 명령어는 후자를 추천드립니다. attach의 경우 exit나 Ctrl+c로 빠져나오는 경우 도커 컨테이너가 중지(Exited) 되기 때문입니다. 또한 이 방식으로 나와서 top로 프로세스 목록을 보면 bash가 살아 있음을 확인할 수 있습니다.

Ctrl+p, Ctr+q로 빠져나온 상태

 

 

실행 중인 컨테이너 이미지 중지하기

도커를 중지하는 명령어를 입력합니다. ($ docker sotp 작명한컨테이너이름)

그리고 다시 컨테이너 프로세스 목록을 확인합니다. (상태가 Exited로 변경되어 있습니다)

$ docker stop test_name1
$ docker ps -a

컨테이너 중지

 

 

참고로 중지된 컨테이너를 다시 시작하는 명령어와, 실행 중인 컨테이너를 재시작하는 명령어는 아래와 같습니다.

$ docker start test_name1
$ docker restart test_name1

 

 

중지한 컨테이너 삭제하기(내리기)

중지한 컨테이너는 프로세스 목록에 계속해서 Exited 상태로 떠 있습니다.

삭제(내리는)하는 방법은 아래 명령어입니다.

($ docker rm 작명한컨테이너명)

$ docker rm test_name1
$ docker ps -a

프로세스 목록에서 삭제(내리기)

 

 

컨테이너를 삭제했어도(내렸어도) 이미지는 여전히 남아 있습니다.

컨테이너 이미지를 확인해봅니다.

$ docker images
$ sudo ls -al /var/lib/docker/overlay2/

이미지는 남아 있음

 

 

 

(DockerHub)도커허브에서 받은 컨테이너 이미지 삭제하기

도커허브에서 다운로드하여 내 서버에 저장되어 있는 컨테이너 이미지를 지우는 명령어는 아래와 같습니다.

($ docker rmi 이미지명)

$ docker rmi nginx

nginx 이미지 삭제

 

 

컨테이너 이미지를 확인해봅니다.

$ docker images
$ sudo ls -al /var/lib/docker/overlay2/

비워진 이미지 목록과 폴더

(Docker)도커 전체보기

 

'(Docker)도커' 카테고리의 글 목록

전산 관련 경험을 기록 하는 곳

reddb.tistory.com

반응형