(Docker)도커 - (DockerHub)도커허브 컨테이너 이미지 검색 다운 실행 정지 삭제하기(nginx)
지난 포스팅에서는 도커 설치 및 삭제에 대해서 알아봤습니다.
이번 포스팅에서는 설치된 도커와 도커허브를 이용하여 도커를 아래와 같이 실행해보겠습니다.
- 도커허브에서 이미지 검색하기
- 도커허브에서 컨테이너 이미지 다운로드하기
- 도커 이미지 컨테이너로 만들고 시작하기
- 이미지 다운, 컨테이너 생성, 시작 한 번에 하기(2~3번 한 번에 실행)
- 도커 inspect, log, top, exec 컨테이너 명령어 실행하기
- 컨테이너 중지하기
- 컨테이너 삭제하기(내리기)
- 컨테이너 이미지 삭제하기
실습용 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
(DockerHub)도커허브에서 컨테이너에서 이미지 다운로드하기
먼저 현재 내가 보유한 이미지 목록을 확인합니다.
$ docker images
이미지들이 다운로드하여지는 폴더도 확인합니다.
$ sudo ls -al /var/lib/docker/overlay2/
이제 nginx 컨테이너 이미지를 다운로드하여 봅니다. ("$ docker pull 이미지명:버전" 버전 생략 시 최신 버전 다운)
$ docker pull nginx
다시 보유 이미지 목록과 폴더를 조회해 보면, nginx 이미지 목록과 6개의 레이어가 폴더에 존재하는 것이 확인됩니다.
$ docker images
$ sudo ls -al /var/lib/docker/overlay2/
다운로드한 도커 이미지 컨테이너로 만들고 실행하기
컨테이너 이미지를 호스트에서(내 서버, 내 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
이제 호스트에서(내 서버, 내 PC) 브라우저를 열어 localhost로 접속하면 nginx화면이 정상적으로 나타납니다.
이미지 다운, 컨테이너 생성, 시작 한 번에 하기
위에서 사용한 이미지다운(pull), 컨테이너 생성(create), 시작(start)을 한 번에 하는 명령어는 run입니다.
컨테이너와 이미지를 삭제해주고 run명령어로 한 번에 다운, 생성, 시작을 해보겠습니다.
실행 중인 도커 컨테이너를 강제로 종료시키고 삭제시키는 명령어와($ docker rm -f 작명한컨테이너이름)
도커 이미지를 삭제하는 명령어를 실행합니다.($ docker rmi 이미지이름)
$ docker rm -f test_name1
$ docker rmi nginx
이제 아래 명령어를 실행하여 이미지 다운, 컨테이너 생성, 컨테이너 시작을 합니다.
($ docker run --name 컨테이너이름작명 -d -p 우분투로들어오는포트:도커컨테이너로포워딩포트 이미지명)
※ 외부에서 접속 시 (우분투)서버로 들어오는 포트 방화벽이 막고 있지 않는지 설정 확인하시기 바랍니다.
$ docker run --name test_name1 -d -p 80:80 nginx
도커 컨테이너 프로세스 목록을 확인합니다. ($ docker ps -a)
이제 웹브라우저를 통해 우분투 IP에 80 포트로 접속해보면 nginx 페이지가 뜹니다.
도커 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
또한 로그를 확인할 수도 있습니다. -f(팔로우) 옵션을 주면 nginx 통신이 이뤄질 때마다 화면에 새로운 로그를 계속해서 찍어줍니다. ($ docker logs -f 작명한컨테이너이름)
(팔로우 로그 화면을 빠져나오는 단축키는 Ctrl+C입니다)
$ docker logs -f test_name1
현재 도커 컨테이너에서 실행 중인 프로세스 목록을 확인할 수 있습니다.
$ docker top test_name1
만약 nginx 컨테이너에 bash로 접속을 하고 싶다면 아래 exec 명령어와 -it 옵션을 이용해서 bash 프로세스를 실행하면 루트로 접속이 됩니다. (옵션 -i는 인터렉티브, -t는 터미널로 bash 접속 시 필수 옵션입니다)
$ docker exec -it test_name1 /bin/bash
test_name1 컨테이너 bash에서 exit 명령어로 호스트로 빠져나오거나, Ctrl+p, Ctrl+q로 빠져나올 수 있습니다.
빠져나오는 명령어는 후자를 추천드립니다. attach의 경우 exit나 Ctrl+c로 빠져나오는 경우 도커 컨테이너가 중지(Exited) 되기 때문입니다. 또한 이 방식으로 나와서 top로 프로세스 목록을 보면 bash가 살아 있음을 확인할 수 있습니다.
실행 중인 컨테이너 이미지 중지하기
도커를 중지하는 명령어를 입력합니다. ($ 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
컨테이너 이미지를 확인해봅니다.
$ docker images
$ sudo ls -al /var/lib/docker/overlay2/
(Docker)도커 전체보기
'도커 쿠버네티스' 카테고리의 다른 글
(Docker)도커 - 도커 build, commit 명령어로 이미지 생성하기 (0) | 2021.05.16 |
---|---|
(Docker)도커 - 리눅스 CentOS 8 (Stream) 도커 설치하기 (3) | 2021.05.04 |
(Docker)도커 - 리눅스 우분투(Ubuntu) 20.04에 도커 설치하기 (0) | 2021.05.02 |