반응형

(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

반응형
반응형

(Docker)도커 - 리눅스 CentOS 8 (Stream) 도커 설치하기

 

이번 포스팅은 아래 도커 홈페이지(docs.docker.com)에 나와있는 도커 설치 문서를 참조하였습니다.

 

Install Docker Engine on CentOS

 

docs.docker.com

 

도커를 CentOS 리눅스에 설치하는 방법은 3가지 방법이 있습니다.

  1. 도커 레파지토리를 설정하고 인터넷을 통해 yum 명령으로 도커를 설치하는 방법
  2. rpm 패키지 파일을 다운로드하여 yum 명령어로 설치하는 방법
  3. 도커 사이트에서 제공하는 설치용 스크립트 (sh)파일을 받아 실행하여 설치하는 방법

 

레파지토리를 설정하고 yum 명령어로 설치하기

만약 이전버전이 설치되어 있다면 먼저 삭제를 진행해 줍니다.

$ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

이전버전 도커 삭제

 

현재 레파지토리에는 docker가 존재하지 않습니다.

yum 목록에서 docker-ce 조회

 

도커 레파지토리를 설정하기 전에 yum-utils 패키지를 먼저 설치합니다.

$ sudo yum install -y yum-utils

yum-utils 패키지 설치

 

이제 도커를 다운받을 stable 레파지토리 추가를 yum-config-manager 명령으로 설정합니다.

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

도커 레파지토리 추가

 

도커 레파지토리가 추가된 것을 확인합니다.

레파지토리 폴더 확인

 

다시 패키지 목록에서 도커를 조회하면 이제는 도커가 조회됩니다.

yum 목록에 조회되는 도커

 

이제 도커패키지를 설치해줍니다.

$ sudo yum install docker-ce docker-ce-cli containerd.io

CentOS 8부터는 podman, buildah가 기본 설치되어 있는데 이 경우 아래와 같은 에러가 납니다.

도커 설치 에러

 

이런 문제가 발생시 podman, buildah를 먼저 삭제 후 설치하셔야 합니다.

$ sudo yum -y remove podman
$ sudo yum -y remove buildah

podman 삭제
bulidah 삭제

 

이제 다시 도커를 설치해 줍니다.

$ sudo yum install docker-ce docker-ce-cli containerd.io

도커 설치

 

설치 중 GPG 키를 수락하라는 메시지가 표시되면 지문이 일치하는지 확인하고

060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 경우 수락(Y)합니다.

 

지문 확인

 

설치가 완료되면 도커의 상태를 확인해 봅니다. 재기동시 자동실행 기능이 꺼져 있고, 현재 실행도 안되고 있습니다.

도커 상태

 

도커를 실행하고 ,재기동시 자동 실행하도록 설정합니다.

$ sudo systemctl start docker
$ sudo systemctl enable docker

도커 실행 및 재기동시 자동실행 설정

 

마지막으로 도커 버전을 확인합니다.

도커 버전 확인

 

도커를 삭제하고 싶다면 아래 명령어로 먼저 도커 패키지를 삭제합니다.

$ sudo yum remove docker-ce docker-ce-cli containerd.io

도커 패키지 삭제

 

패키지를 제거하여도 호스트의 이미지, 컨테이너, 볼륨 또는 사용자 정의된 구성 파일은 자동으로 제거되지 않습니다. 아래 명령어로 완전 삭제를 해줘야 합니다.

 $ sudo rm -rf /var/lib/docker
 $ sudo rm -rf /var/lib/containerd

찌거기 폴더 삭제

 

 

.rpm 파일을 다운로드하여 yum 명령어로 설치하기

먼저 사용 중인 CentOS의 버전을 확인합니다.

버전확인

 

다음은 아래 사이트로 이동 -> 버전 -> cpu종류 -> stable -> pakages 링크 순으로 이동합니다.

 

Index of linux/centos/

 

download.docker.com

 

그러면 아래와 같은 파일들이 존재합니다. 최신 버전으로 다운을 받습니다.

도커 설치 패키지 파일
다운로드 완료

 

이제 yum 명령으로 모든 rpm패키지 파일을 설치해줍니다.

$ sudo yum install *.rpm

rpm파일을 통한 패키지 설치

 

설치가 완료되면 도커를 실행하고, 재기동 시 자동 실행되도록 설정합니다.

$ sudo systemctl start docker
$ sudo systemctl enable docker

도커 실행 및 자동실행 설정

 

마지막으로 도커 버전을 확인합니다.

도커 버전 확인

 

 

설치용 스크립트 (sh)파일을 받아 실행하여 설치하는 방법

curl 옵션을 이용하여 도커 홈페이지에서 스크립트 파일을 다운로드하여 "get-docker.sh" 이름으로 저장합니다.

 $ curl -fsSL https://get.docker.com -o get-docker.sh

스크립트 파일 다운로드

 

다음은 스크립트를 실행하여 도커를 설치해줍니다.

$ sudo sh get-docker.sh

도서 설치 스크립트 실행

 

설치가 완료되면 도커를 실행하고, 재기동 시 자동 실행되도록 설정합니다.

$ sudo systemctl start docker
$ sudo systemctl enable docker

도커 실행 및 자동실행 설정

 

마지막으로 도커 버전을 확인합니다.

도커 버전 확인

(Docker)도커 전체보기

 

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

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

reddb.tistory.com

반응형
반응형

(Docker)도커 - 리눅스 우분투(Ubuntu) 20.04에 도커 설치하기

 

이번 포스팅은 아래 도커 홈페이지(docs.docker.com)에 나와있는 도커 설치 문서를 참조하였습니다.

 

Install Docker Engine on Ubuntu

 

docs.docker.com

 

도커를 우분투(Ubuntu) 리눅스에 설치하는 방법은 3가지 방법이 있습니다.

  1. 도커 레파지토리를 설정하고 인터넷을 통해 apt 명령으로 도커를 설치하는 방법
  2. 인터넷이 안될 경우 .deb 패키지 파일을 다운로드하여 dpkg 명령어로 설치하는 방법
  3. 도커 사이트에서 제공하는 설치용 스크립트 (sh)파일을 받아 실행하여 설치하는 방법

 

레파지토리를 설정하고 apt 명령어로 설치하기

만약 이전버전이 설치되어 있다면 먼저 삭제를 진행해 줍니다.

(apt remove는 환경설정 파일은 남기고 패키지를 삭제합니다.)

$ sudo apt-get remove docker docker-engine docker.io containerd runc

기존 도커 삭제

 

다음은 HTTPS를 통해 도커 저장소를 사용할 수 있도록 하기 위해

  1. 패키지 목록을 업데이트하고.
  2. 필수 패키지를 설치합니다.
 $ sudo apt-get update

패키지 목록 업데이트

$ sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

필수 패키지 설치

 

다음은 Docker와 암호화된 통신을 하기 위해 도커 공식 GPG 키를 추가합니다.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

GPG키 추가

 

현재는 레파지토리에 도커 설치 파일이 존재하지 않습니다.

(도커 설치파일 3개: docker-ce, docker-ce-cli, containerd.io)

apt list 목록에서 docker-ce, containerd.io 문자를 포함란 패키지 검색

 

apt로 도커를 설치하기 위해서 도커 stable 레파지토리를 추가해주어야 합니다. (저는 amd64 입니다)

# cpu가 x86_64 또는 amd64계열일 경우
$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# cpu가 armhf계열일 경우
$ echo "deb [arch=armhf signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# cpu가 arm64계열일 경우
$ echo "deb [arch=arm64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

레파지토리 생성 및 cat으로 확인

 

이제 패키지 목록을 업데이트하고, 목록에서 도커 설치 패키지가 존재하는지 확인합니다.

$ sudo apt-get update

패키지 목록에 도커 패키지가 검색 존재

 

이제 apt install 명령으로 docker-ce, docker-ce-cli, dontainerd.io를 설치합니다.

$ sudo apt-get install docker-ce docker-ce-cli containerd.io

 

만약 특정 버전의 도커엔진(Docker Engine)을 설치하려면 저장소에서 사용 가능한 버전을 확인한 후 설치할 버전을 옵션으로 추가 입력해줍니다. (버전 부분 5:20.10.6~3-0~ubuntu-focal)

$ sudo apt-cache madison docker-ce docker-ce-cli

$ sudo apt-get install docker-ce=<설치할버전> docker-ce-cli=<설치할버전> containerd.io

 

우분투에서는 도커를 설치 완료하면 자동실행(running)되며 서버 재기동시 자동시작 기능도 enable 됩니다.

systemctl status docker

 

이제 도커 버전을 확인하여 클라이언트와 서버가 설치된 것을 확인합니다.

(sudo로 확인해야 서버 버전이 나옵니다)

$ sudo docker version

도커 버전확인

 

도커를 삭제하고 싶다면 아래 명령어를 입력합니다.

(apt purge는 패키지와 함께 환경설정 파일도 삭제합니다. --auto-remove 옵션은 불필요한 의존성 패키지도 함께 삭제합니다.)

$ sudo apt-get purge --auto-remove docker-ce docker-ce-cli containerd.io

도커 제거

 

패키지를 제거하여도 호스트의 이미지, 컨테이너, 볼륨 또는 사용자 정의된 구성 파일은 자동으로 제거되지 않습니다. 아래 명령어로 완전 삭제를 해줘야 합니다.

 $ sudo rm -rf /var/lib/docker
 $ sudo rm -rf /var/lib/containerd

찌꺼기 완전 삭제

 

 

.deb 파일을 다운로드하여 dpkg 명령어로 설치하기

먼저 사용하고 있는 우분트의 버전 별 명칭을 확인하시기 바랍니다.

버전 번호 코드명 배포일 지원기간 커널버전
16.04 LTS Xenial Xerus 2016년 04월 21일 2021년 04월
2024년 04월 (ESM)
4.4
16.10 Yakkety Yak 2016년 10월 13일 2017년 07월 20일 4.8
17.04 Zesty Zapus 2017년 04월 13일 2018년 01월 13일 4.10
17.10 Artful Aardvark 2017년 10월 19일 2018년 07월 19일 4.13
18.04 LTS Bionic Beaver 2018년 4월 26일 2023년 04월
2028년 04월 (ESM)
4.15
18.10 Cosmic Cuttlefish 2018년 10월 18일 2019년 07월 18일 4.18
19.04 Disco Dingo 2019년 04월 18일 2020년 01월 23일 5.0
19.10 Eoan Ermine 2019년 10월 17일 2020년 07월 5.3
20.04 LTS Focal Fossa 2020년 4월 23일 2025년 04월
2030년 04월 (ESM)
5.4
20.10 Groovy Gorilla 2020년 10월 22일 2021년 07월 TBA

 

다음은 아래 주소로 이동에서 본인 리눅스 버전에 맞는 폴더로 이동을 합니다.

https://download.docker.com/linux/ubuntu/dists/

저는 우분투 20.04 버전을 사용하고 있어 focal로 이동합니다.

uname -a
도커 설치파일 저장 웹사이트

 

리눅스 코드명 폴더 다음은 pool 디렉터리로 이동하고, 다음은 stable 폴더로 이동합니다.

이후 나오는 cpu에 맞는 디렉토리로 이동합니다.

이후 최신 버전 파일들 주소를 확인합니다.

 

curl -O <인터넷주소> 명령어로 파일들을 다운로드합니다.

curl -O 주소
deb 파일 검색

 

폴더 내에 있는 deb 파일을 모두 설치해줍니다.

$ sudo dpkg -i *.deb

deb 파일 모두 설치

 

도커 버전을 확인해 봅니다.

버전확인

 

dpkg로 설치를 했기 때문에 제거도 dpkg 명령어를 이용해서 삭제를 합니다.

$ sudo dpkg --purge docker-scan-plugin docker-ce docker-ce-cli docker-ce-rootless-extras containerd.io

dpkg --puge 패키지 삭제

 

패키지를 제거하여도 호스트의 이미지, 컨테이너, 볼륨 또는 사용자 정의된 구성 파일은 자동으로 제거되지 않습니다. 아래 명령어로 완전 삭제를 해줘야 합니다.

 $ sudo rm -rf /var/lib/docker
 $ sudo rm -rf /var/lib/containerd

찌꺼기 완전 삭제

 

 

설치용 스크립트 (sh)파일을 받아 실행하여 설치하는 방법

curl 옵션을 이용하여 도커 홈페이지에서 스크립트 파일을 다운로드하여 "get-docker.sh" 이름으로 저장합니다.

 $ curl -fsSL https://get.docker.com -o get-docker.sh

스크립트 파일 다운로드

 

다음은 스크립트를 실행하여 도커를 설치해줍니다.

$ sudo sh get-docker.sh

스크립트로 도커설치

 

도커 버전을 확인합니다.

도커 버전 확인

 

(Docker)도커 전체보기

 

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

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

reddb.tistory.com

반응형