본문 바로가기
멀티 클라우드 인프라(DKR & K8S)

도커 & 쿠버네티스 1

by 윤라경 2024. 10. 20.

[2024.10.19]

 

01. Docker 실습 환경 구성

 

 

강사님께서 공유해 주신 나눔고딕코딩 폰트를 설치하고,

MobaXterm을 실행 후에 SSH 생서하고 폰트를 나눔고딕코딩 폰트로 설정한다

 

 

다음으로는 북마크 설정에 가서 세션 이름을 docker1으로 설정하고 OK를 눌러 생성한다

 

 

root로 설정된 비밀번호 centos를 입력하게 되면

 

 

화면과 같이 리눅스 환경이 그대로 재현되며 실제로 사용할 수 있는 공간이 만들어진다

 

 

생성한 docker1에서 오른쪽 마우스를 클릭 후

Duplicate session을 이용해 하나를 더 복제한다

 

 

다른 건 설정할 필요 없이 세션 이름만 docker2로 변경시킨 후 저장한다

 

 

02. Docker 설치

 

# yum install -y yum-utils

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

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

# ls -l get-docker.sh

# DRY_RUN=1 sh ./get-docker.sh

# sh ./get-docker.sh

 

 

설치 명령어를 이용하여 도커를 설치한다

 

 

설치 후 설치된 목록을 확인하게 되면

위의 빨간 박스와 같이 다섯 개의 목록이 나타나야 된다

또한, 도커 실행 여부를 알아볼 때 running 상태가 되어 있는 걸 확인할 수 있다

 

 

실제 도커 사이트에 들어가서 요금을 확인해 봤다

다양한 요금제가 있지만 현재 실습의 경우 무료 제공을 사용할 예정이다 

 

 

4. 가상 서버와 컨테이너 차이

 

 

컨테이너 환경의 경우 운영 체제는 하나만 존재하면 된다

본체에서 사용하는 운영 체제 하나인 리눅스 하나만 있으면 된다는 뜻이다

리소스 소모가 적고 애플리케이션을 사용하는 시간이 신속하다

 

 

현재 도커를 이용하여 파이썬을 검색하게 되면

파이썬에 해당되는 것들이 다 나오는 것을 확인할 수 있다

 

 

현재 설치를 했지만 이 컨테이너 안의 운영 체제는 존재하지 않는다

윈도우에서 사용하는 리눅스 하나만 존재하고 그것을 토대로 사용하게 된다

그렇기 때문에 도커는 한마디로 가상화 기술이다

 

 

해당 화면도 /bin/bash를 실행했지만 리눅스라고 보면 된다

 

 

나와서 다시 확인해도 같은 버전인 것을 확인할 수 있다

이 과정이 운영 체제 하나를 두고 여러 개의 컨테이너를 구동하는 모습이다

 

 

마지막으로는 사용했던 컨테이너를 삭제하면 된다

 

 

5. 도커 구성 요소

 

 

docker info를 하게 되면 현재 실행 중인 도커에 대한 다양한 정보를 얻을 수 있다

 

 

이번에는 nginx를 검색하고 나오는 것을 확인한다

 

 

확인 후 이번에는 nginx의 이미지를 다운로드 받는다

pull의 경우 다운로드한다는 명령어

 

 

docker image pull nginx 명령어로 이미지를 다운로드한 후,

그 이미지로 Nginx 컨테이너가 실행 중인 상태여야 한다

192.168.2.10 IP 주소는 Nginx 웹 서버가 실행 중인 호스트 또는 컨테이너의 IP다

curl 명령어를 통해 해당 IP로 HTTP 요청을 보내면, Nginx가 기본적으로 제공하는 환영 페이지인

**"Welcome to nginx"**가 응답으로 돌아온다

 

 

홈페이지로 IP 접속 시에도 같은 문구가 나타나면 Nginx 웹 서버가 정상적으로 작동하고,

외부에서 접속이 가능한 상태라는 뜻이다

 

 

 

6. 네임스페이스 & cgroup

 

 

 

 

7. 이미지와 컨테이너 관계

 

 

 

03. Docker 기본 동작 확인

 

1. Docker 서비스 시작

 

1) Docker 서비스 시작

 

# systemctl enable --now docker.service # systemctl status docker.service

 

2) Docker 버전 확인

 

# docker version

 

 

 

3) Docker 시스템 정보 확인

 

# docker system info

 

 

 

4) docker 디스크 이용 현황 확인

 

# docker system df

 

 

 

2. Docker 구동 테스트

 

1) 'hello-world' 이미지를 이용한 컨테이너 구동

 

> 로컬에 'hello-world' 이미지가 없기 때문에

도커 허브로부터 이미지를 다운로드하여 컨테이너를 구동

 

 

 

 

2) 우분투 이미지를 이용하여 'Hello Docker' 문자열 출력

 

# docker container run ubuntu /bin/echo 'Hello Docker'

# docker image ls -a

# docker container ls -a

# docker system df

 

 

 

 

3) 컨테이너 및 이미지 삭제

 

# docker container rm 82421c8438d5 happy_tereshkova

# docker container ls -a

# docker image ls -a

# docker image rm ubuntu feb5d9fea6a5

# docker image ls -a

# docker system df

 

 

 

3. nginx 웹-서버 컨테이너 구동

 

1) nginx 이미지 검색

 

# docker search nginx

 

2) nginx 이미지 다운로드 및 확인

 

# docker image pull nginx

 

 

tree 명령어를 사용하여 확인 시에도

overlay2라는 곳에서 이미지의 정보를 얻을 수 있다

 

 

3) nginx 컨테이너 구동

 

# docker container run -d --name webserver -p 80:80 nginx

# docker container ls -a

 

 

 

4) nginx 웹-페이지 접속 확인

 

# curl http://192.168.2.10:80

 

 

crul을 통해 메시지가 뜨고

 

 

홈페이지로 IP 접속 시에도 메시지가 뜬다면 정상적으로 작동한다는 뜻이다

 

 

5) webserver 컨테이너 모니터링

 

# docker container stats webserver

 

 

실시간 CPU 사용량을 보여 주는 top를 사용할 수도 있다

 

 

6) webserver 컨테이너 종료 및 확인

# docker container stop 72e88aa346f4

# docker container ls -a

# curl http://192.168.2.10:80

 

 

실행 중인 웹 서버 컨테이너를 확인 후

컨테이너를 종료하게 되면 Exited로 표시된다

 

 

컨테이너를 종료했기 때문에 curl IP 접근도 불가능하며

 

 

웹 페이지로 접속 시에도 연결되지 않는 것을 확인할 수 있다

 

 

7) webserver 컨테이너 재구동

 

# docker container start 72e88aa346f4

# docker container ls -a

 

 

반대로 start를 이용하면 다시 재구동이 가능하다

 

 

컨테이너를 재구동했다면 웹 페이지에서도 정상적인 작동이 가능하다

 

 

4. webserver 컨테이너 및 nginx 이미지 삭제

 

# docker container ls -a

# docker container rm 72e88aa346f4

# docker container stop 72e88aa346f4

# docker container rm 72e88aa346f4

# docker container ls -a

# docker image ls -a

# docker image rm nginx

# docker image ls -a

 

 

처음에 rm으로만 지우려고 할 때 에러가 발생하면

-f 옵션을 사용하여 제거할 수 있다

 

*-f: 강제로 삭제하고 파일이 없어도 에러 출력하지 않음

 

 

마무리로 이미지도 삭제시켜 준다

 

 

5. Docker 이미지 다운로드 및 컨테이너 구동 예제

 

1) 다음과 같은 이미지를 도커허브 사이트와 'docker search' 명령어를 이용하여 검색한다.

 

- centos

- ubuntu

- nginx

- debian

 

ex)

 

 

2) 검색이 완료되었다면, 이미지를 다운로드한다.

 

 

 

3) 다운로드 받은 이미지를 이용하여 '-itd' 옵션과 함께 각각의 컨테이너를 구동한다.

 

 

 

4) 컨테이너가 구동된 이후, 각각의 컨테이너의 'COMMAND' 내용이 무엇인지 확인한다.

 

 

 

5) 모든 컨테이너를 삭제한다.

 

 

 

6) 모든 이미지를 삭제한다.

 

 

 

 

04. Docker 이미지 관리

 

1. Docker 이미지 관리

 

1) Docker Hub

 

도커 허브 사이트 : https://hub.docker.com

 

> GitHub 또는 Bitbucket과 같은 소스 코드 관리 툴과 연계하여 코드를 빌드하는 기능이나

실행 가능한 애플리케이션의 이미지를 관리하는 기능을 갖춘 Docker의 공식 리포지토리 서비스

 

2) Docker 명령어 도움말

 

# docker --help

 

3) Docker 이미지 관리 주요 명령어

 

 

 

2. Docker 이미지 검색

 

1) 명령어 형식

 

# docker search [옵션] 이미지_이름

 

2) 옵션

 

--no-trunc 출력 내용이 길어도 다 출력함(Ex : 주석...)

--limit n n 건의 검색 결과를 표시함(기본 25개 출력)

-f stars=n, --filter stars=n 즐겨찾기의 수(n 이상)를 의미함

 

3) 명령어와 옵션 사용 예시

 

# docker search nginx 
# docker search --no-trunc nginx 
# docker search --limit 3 nginx 
# docker search --filter stars=100 nginx 
# docker search kim10322/webserver 

 

4) 검색 결과 항목 설명
 

# docker search nginx | head -2

 

 

3. Docker 이미지 다운로드

 

1) 명령어 형식
 


# docker image pull [옵션] 이미지_이름:태그 

 


2) 명령어 사용 예시


# docker image pull ubuntu
# docker image pull ubuntu:latest
# docker image pull ubuntu:16.04
# docker image pull kim10322/webserver
 


 3) 다운로드 이미지 변조 방지 
 

 - 서명&검증 작업을 진행하여 다운로드를 할수 있다. 
 
 ① 검증 이후 다운로드 
 
# export DOCKER_CONTENT_TRUST=1 
# docker image pull ubuntu:latest 
 
 ② 검증 없이 다운로드 
 
# export DOCKER_CONTENT_TRUST=0 
# docker image pull ubuntu:latest 
 
 

 4) 도커 허브 사이트 검색

 

# docker search ubuntu --limit 3 NAME DESCRIPTION

 

5) 이미지 다운로드 실시

 

# docker search ubuntu | head -3
# docker image pull ubuntu
# docker search debian | head -3
# docker image pull debian
# docker search centos | head -3
# docker image pull centos
# docker search nginx | head -3
# docker image pull nginx
# docker image ls -a

 

 

4. Docker 이미지 정보 확인

 

1) 명령어 형식


# docker image ls [옵션] 이미지_이름:태그
# docker image list [옵션] 이미지_이름:태그
# docker images [옵션] 이미지_이름:태그


2) 옵션

 

 -a, --all  모든 이미지(활성화, 비활성화) 보기 
 

 3) 명령어와 옵션 사용 예시


# docker images 
# docker image ls  
# docker image ls -a 
 

 4) 이미지 정보 확인 항목 설명

 

# docker image ls | head -2

 

 

5. Docker 이미지 상세 정보 확인 
 

 1) 명령어 형식

# docker inspect [옵션] 이미지_이름:태그 
# docker image inspect [옵션] 이미지_이름:태그 
 

 2) 옵션


 -f, --format string  Go Template 사용하여 출력 내용을 지정한다. (리눅스에 grep 명령어 개념) 
   

 3) 명령어와 옵션 사용 예시
 

# docker image inspect ubuntu 
# docker image inspect --format="{{ GO template }}" ubuntu 

 

 4) Docker 이미지 상세 정보 확인 
 

# docker image ls -a

# docker image inspect ubuntu

 

 

 

6. Docker 이미지 태그 설정 
 

 1) 명령어 형식

 

# docker image tag 이미지_이름:태그 태그_이미지_이름:태그 
 

 2) 명령어 사용 예시
 

# docker image tag nginx kim10322/webserver:1.0 
 

 3) Docker 이미지 태그 설정

 

# docker image ls -a

# docker image tag nginx kim10322/webserver:1.0

# docker image ls -a

 

 

7. Docker 이미지 삭제

 

1) 명령어 형식

 

# docker image rm [옵션] 이미지_이름 
# docker image rm [옵션] 이미지_ID 
 

2) 옵션


 --force, -f 동작 중인 컨테이너 강제 삭제(SIGKILL 시그널 사용) 
 

 3) 명령어와 옵션 사용 예시 
 

# docker image rm kim10322/webserver:1.0 
# docker image rmi ngnix ubuntu 
 

 4) Docker 이미지 삭제


# docker image rm ubuntu:latest
# docker image ls -a

 

 

05. Docker 이미지 업로드

 

1. 도커 허브

 

1) 도커 허브 로그인

 

# docker login

# ls -la .docker/config.json

# cat /root/.docker/config.json

# echo -n XXXXXXXXXXXXXXXXXXXXXXXXXX== | base64 --decode

 

2) 도커 허브 로그아웃

 

# docker logout

# cat /root/.docker/config.json

 

 

2. 도커 이미지 업로드

 

1) 도커 이미지 업로드

 

# docker image ls -a

# docker login

# docker image push kim10322/webserver:1.0

 

2) 업로드 이미지 확인

 

# docker search kim10322

# docker search kim10322/webserver

 

3) 도커 허브 로그아웃

 

# docker logout

 

 

 

강의 소감

오늘은 도커 & 쿠버네티스 강의 첫날이었다

먼저 도커 실습 환경을 만들기 위해 MovaXterm과 CentOs를

설치하면서 실습 환경 구성을 진행했다

그 후 도커를 설치하고, 가상 서버와 컨테이너의 차이점 및 도커 구성 요소를 알아봤다

또한, 도커의 기본 동작 이해로 시스템 정보 확인부터

도커 구동까지 연습했다

도커를 실행하고 연습하면서 이미지 다운로드하는 방법도 익히고,

도커에서 중요한 명령어들을 계속 연습했다

늘 그렇듯이 클라우드도 처음이기 때문에 익숙해질 때까지 많은 공부가 필요할 것 같다

 

출처 -  코리아it아카데미 김정우 강사님 제공

 

*중간에 나오는 교재의 단편적인 면이 아닌

MobaXterm으로 실행하여 캡처한 것은 모두 본인이 직접 실행해 보고

캡처하여 블로그에 작성하는 것입니다

'멀티 클라우드 인프라(DKR & K8S)' 카테고리의 다른 글

도커 & 쿠버네티스 6  (2) 2024.11.11
도커 & 쿠버네티스 5  (0) 2024.11.02
도커 & 쿠버네티스 4  (0) 2024.10.28
도커 & 쿠버네티스 3  (0) 2024.10.28
도커 & 쿠버네티스 2  (2) 2024.10.20