클라우드란?
원하는 자원을 빌려와서 사용하는것
클라우드 유형
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 에서 설치파일 다운받아서 설치해도 된다.
나는 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 에서 찾을 수 있다.
혹은 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탄으로 작성!
반응형
'[혁신성장 청년인재] 인공지능을 활용한 보안전문가 양성과정' 카테고리의 다른 글
Day16-1: 도커 실행 및 컨테이너 관리 (0) | 2020.07.28 |
---|---|
Day15-2: 도커 설치하는 법 | 도커 명령어 정리 | 컨테이너 실행 및 관리 (0) | 2020.07.27 |
Day14: 리눅스 서버 실습| 미니 프로젝트 (0) | 2020.07.27 |
Day13: 리눅스 관리자 | FTP | NFS | 쉘프로그래밍 (0) | 2020.07.27 |
Day12: 리눅스 관리자| 메일 서버 구성 | APM 구성 | apache PHP MariaDB + 노브레이크(no.break)의 김석 대표님 멘토링 (2) | 2020.07.22 |