본문 바로가기

[혁신성장 청년인재] 인공지능을 활용한 보안전문가 양성과정

Day15-1: 클라우드 개념, 도커(Docker) 학습

 

클라우드란?

원하는 자원을 빌려와서 사용하는것

 

클라우드 유형

IaaS : Infrastructure as a Service

PaaS : Platform as a Service

SaaS : Software as a Service

구글에 검색해보았어요

 

Cloud <=> On-Premises(온프레미스, 온프렘)

클라우드 서비스의 장점

- 초기비용이 저렴

    직접 하드웨어 및 인프라를 갖출 필요가 없음

    확장성이 뛰어남

- 자동적인 백업 구현

    동시에 여러 곳에 인프라 구축 가능

- 빠른 대응 등이 가능

 

클라우드 서비스보다 온프레미스가 유리한 경우

- 클라우드 서비스보다 높은 가용성 요구

    SLA (Service Level Agreement)

- 중요 데이터에 대한 기밀성 보장

- 특수한 요구사항이 있는 서비스

클라우드 서비스

- 퍼블릭 클라우드 : AWS, Google Cloud, Azure, Naver Cloud

- 프라이빗 클라우드 : 클라우드의 장점을 온프레미스와 결합


가상화 (Virtualization)

- 자원을 가상으로 분할

 

컨테이너 (Container)

- 격리성

 

격리

: 왜 격리를 해야하는가?

 

IaC : Infrastructure as a Code

=> 인프라 관리를 코드로 수행


Docker 설치

https://docs.docker.com/get-docker/

 

Get Docker

Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you...

docs.docker.com

위의 GET Docker 에서 설치파일 다운받아서 설치해도 된다.

나는 CentOs 이기 때문에 Linux 를 눌러서 들어가면 되고, 걍 아래처럼 yum 으로 설치해도 된다. 

 

# 사전 패키지 설치
sudo yum -y install yum-utils device-mapper-persistent-data lvm2

# yum 저장소 설정
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# docker-ce 설치
sudo yum install -y docker-ce docker-ce-cli containerd.io

# 서비스 실행 및 활성화
sudo systemctl start docker
#서비스가 다음 부팅 이후에도 실행되게 enable 해주기
sudo systemctl enable docker

# docker 그룹에 사용자 추가
sudo usermod -aG docker $USER

설치가 잘 됐쥬?

도커 버전 확인

[admin@localhost ~]$ docker version
Client: Docker Engine - Community
 Version:           19.03.12
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        48a66213fe
 Built:             Mon Jun 22 15:46:54 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.12
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.10
  Git commit:       48a66213fe
  Built:            Mon Jun 22 15:45:28 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

도커에서 사용 가능한 명령어

[admin@localhost ~]$ docker 
attach     cp         help       kill       pause      restart    service    tag        wait
build      create     history    load       plugin     rm         stack      top        
builder    diff       image      login      port       rmi        start      trust      
commit     engine     images     logout     ps         run        stats      unpause    
config     events     import     logs       pull       save       stop       update     
container  exec       info       network    push       search     swarm      version    
context    export     inspect    node       rename     secret     system     volume     

도커에서 hello world 컨테이너 실행해보기!
#첫 docker image run!

[admin@localhost ~]$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete 
Digest: sha256:49a1c8800c94df04e9658809b006fd8a686cab8028d33cfba2cc049724254202
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

도커 이미지 다운로드

아래 hub 에서 찾을 수 있다. 

 

https://hub.docker.com/

 

Docker Hub

Docker Certified:Trusted & Supported Products Certified Containers provide ISV apps available as containers. Certified Plugins for networking and volumes in containers. Certified Infrastructure delivers an optimized and validated Docker platform for enterp

hub.docker.com

혹은 commend line 에서 하고싶다면 아래와 같이 search 해서 다운받을 수 있다. 

docker search [이미지 이름]
docker pull [이미지 이름:tag | @DIGEST ]

도커 이미지 관리

# 다운받은 이미지 확인
[admin@localhost ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mysql               5.7                 8679ced16d20        4 days ago          448MB
centos              latest              831691599b88        5 weeks ago         215MB
hello-world         latest              bf756fb1ae65        6 months ago        13.3kB

# 다운받은 이미지 삭제 //여러 개 나열해서 한 번에 지우기 가능
docker rmi [이름:tag]
docker rmi hello-world:latest

[admin@localhost ~]$ docker image rm centos:latest 
Untagged: centos:latest
Untagged: centos@sha256:4062bbdd1bb0801b0aa38e0f83dece70fb7a5e9bce223423a68de2d8b784b43b
Deleted: sha256:831691599b88ad6cc2a4abbd0e89661a121aff14cfa289ad840fd3946f274f1f
Deleted: sha256:eb29745b8228e1e97c01b1d5c2554a319c00a94d8dd5746a3904222ad65a13f8

# 다운받은 이미지 정보 자세하게 확인하기
[admin@localhost ~]$ docker inspect hello-world:latest 
[
    {
        "Id": "sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b",
        "RepoTags": [
            "hello-world:latest"
        ],
        "RepoDigests": [
            "hello-world@sha256:49a1c8800c94df04e9658809b006fd8a686cab8028d33cfba2cc049724254202"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2020-01-03T01:21:37.263809283Z",
        "Container": "71237a2659e6419aee44fc0b51ffbd12859d1a50ba202e02c2586ed999def583",

 save명령으로 docker 이미지 저장, load 명령으로 불러오기

[admin@localhost ~]$ docker save -o img.tar httpd:latest 
[admin@localhost ~]$ ls -l img.tar 
-rw-------. 1 admin admin 170731008 Jul 27 15:33 img.tar

# 이미지 가져오기를 위해 httpd 이미지를 지워볼게요
[admin@localhost ~]$ docker rmi httpd:latest 
Untagged: httpd:latest
Untagged: httpd@sha256:2a9ae199b5efc3e818cdb41c790638fc043ffe1aba6bc61ada28ab6356d044c6
Deleted: sha256:9d2a0c6e5b5714303c7b72793311d155b1652d270a785c25b88197069ba78734
Deleted: sha256:d501b5ad5ac59deebf3d002fda60014429d851340ee8f80dfe745e525aaba281
Deleted: sha256:c0ffe105e5d8c201ddc0fa3aa0d75d1f77c88632a5dabe196b1fb837ac83dd73
Deleted: sha256:58da7575a150b2378511246c3d1091d24319d25db05319a07bcda674d089e3a1
Deleted: sha256:5e73f7688a03b2696608629be23d77a75183cc9ac2a5b622b513a8df5ee04573

# load로 저장해놓은 이미지를 불러옵니다.
[admin@localhost ~]$ docker load -i img.tar
38b213d315e5: Loading layer [==================================================>]   2.56kB/2.56kB
a292ec64305a: Loading layer [==================================================>]   36.7MB/36.7MB
6078e6411b20: Loading layer [==================================================>]  61.51MB/61.51MB
4e6cfff37f35: Loading layer [==================================================>]  3.584kB/3.584kB
Loaded image: httpd:latest

 


 

너무 길게 써서 그런가 오류나는 것 같아서 2탄으로 작성!

반응형