728x90

1. VirtualBox 설치

 

아래 링크로 접속 후 환경에 맞는 패키지 다운로드

1) VirtualBox 6.1.34 platform packages

2) VirtualBox 6.1.34 Oracle VM VirtualBox Extension Pack

 

https://www.virtualbox.org/wiki/Downloads

 

Downloads – Oracle VM VirtualBox

Download VirtualBox Here you will find links to VirtualBox binaries and its source code. VirtualBox binaries By downloading, you agree to the terms and conditions of the respective license. If you're looking for the latest VirtualBox 6.0 packages, see Virt

www.virtualbox.org

 

 

VirtualBox 6.1.34 platform packages 설치
VirtualBox 6.1.34 Oracle VM VirtualBox Extension Pack 설치

 

1) VirtualBox 6.1.34 platform packages 설치

기본 옵션으로 설치

 

2) VirtualBox 6.1.34 Oracle VM VirtualBox Extension Pack 설치

 

아래로 스크롤 후 활성화된 동의합니다 버튼 클릭

 

설치가 완료됨

 

2. VirtualBox 환경 설정

 

확장팩 설치 확인: 파일 > 환경 설정 > 확장

 

VirtualBox 실행 후 파일 탭에서 환경 설정 선택

 

Extension Pack이 추가 되었는지 확인

 

호스트 키 단축키 설정 확인: 파일 > 환경 설정 > 입력

 

호스트 키 조합의 단축키 설정: Shift + Ctrl + Alt

 

네트워크 설정 확인: 파일 > 환경 설정 > 네트워크

 

새 NAT 네트워크 추가

 

호스트 네트워크 관리자 설정: 파일 > 호스트 네트워크 관리자

 

파일 탭에서 호스트 네트워크 관리자 클릭

 

이름 더블 클릭 후 하단의 어댑터 탭에서 수동으로 어댑터 설정 확인

 

DHCP 서버 주소 확인

 

3. VirtualBox에서 가상 머신 실행

 

가상 시스템 가져오기: 파일 > 가상 시스템 가져오기

 

파일 탭에서 가상 시스템 가져오기 클릭

 

 

가져올 가상 시스템 파일 추가 아이콘 클릭

 

파일 선택

 

다음 클릭

 

가상 머신의 이름 변경 후 가져오기 클릭

 

가져온 가상 머신 선택 후 시작 클릭

 

4. 가상 머신에 로그인

Username Password
root root
user user

 

 

가상 머신 실행 후 로그인

 

 

5. 가상 머신 IP 주소 설정

 

네트워크 카드 확인 및 IPv4 설정

 

우측 상단에서 메뉴 클릭 후 설정 버튼 클릭

 

1) Ethernet(enp0s3=nat): 인터넷과 연결되는 네트워크 카드, 외부와 연결

2) Ethernet(enp0s8=host-only): 내부에서 통신하는 네트워크 카드, 가상머신들끼리 통신, 호스트 PC와 통신

 

Network 탭으로 이동 후 두 개의 네트워크 카드 확인

 

Ethernet(enp0s8) 네트워크 카드 설정 변경

 

네트워크 카드 설정 CentOS7_net-1 CentOS7_net-2
IP Address 192.168.56.11 192.168.56.12
SubnetMask 255.255.255.0 255.255.255.0

IPv4 탭에서 Manual 선택 후 IP 주소와 서브넷 마스크 입력 후 적용

 

설정 변경 후 네트워크 카드 재시작(On > OFF > On)

 

설정 화면으로 이동

 

변경된 IPv4 주소 확인

 

2. 가상 머신 환경 설정: 크기 조정, 백그라운드 및 폰트

 

자동으로 크기 조정: 보기 > 가상 화면 > 200%로 크기 조정

 

 

 

가상 머신 백그라운드 설정 변경

 

우측 상단에서 메뉴 클릭 후 설정 버튼 클릭

 

Background 탭 > Background 클릭 후 원하는 옵션 선택

 

터미널 폰트 변경: Edit > Preferences

 

터미널을 열고 Edit 탭에서 Preferences 클릭

 

Unnamed > Custom font 체크 > Monospace Regular

728x90
728x90

프로토콜이란?

 - 네트워크를 통해 데이터를 주고 받을 때 지켜야할 절차 및 규약

 

Network Interface Layer

 

 1) 물리 주소

 - 네트워크 카드에 고유하게 할당된 하드웨어 주소

 - 물리 주소는 16진수로 표현하며 물리주소의 길이는 6Bytes(48bits)

 

 2) Ethernet

 

 

 Preamble  Ethernet 프레임의 전송 시작을 알리는 필드 7Bytes(10101010)
 SFD(SOF)  Ethernet 프레임의 시작을 알리는 필드로 1Bytes(10101011)
 Destination address  목적지 물리 주소(6 Bytes)
 Source address  출발지 물리 주소(6 Bytes)
 Type  상위 프로토콜의 종류(2 Bytes)
 Data  상위 계층에서 캡슐화된 데이터
 FCS  Ethernet 프레임의 전송 오류를 검증하기 위한 필드(4 Bytes)

 

3) ARP

 

 

 Hardware Type  물리적 네트워크의 종류 (Ethernet : 0x1)
 Protocol Type  논리 주소를 제공하는 프로토콜의 종류 (IPv4 : 0x0800)
 Hardware Address Length  물리주소의 길이
 Protocol Address Length  논리주소의 길이
 OP Code  ARP Protocol 메시지 종류
  * ARP Request : 1,  ARP Reply : 2
 Sender Hardware Address  송신자의 물리 주소 (6Bytes 필드 길이)
 Sender Protocol Address  송신자의 논리 주소 (4Bytes 필드 길이)
 Target Hardware Address  대상의 물리 주소 (6Bytes 필드 길이)
 Target Protocol Address  대상의 논리 주소 (4Bytes 필드 길이)

 

* ARP Protocol 동작

 1. ARP Request

      Broadcast로 해당 MAC address 질의

 2. ARP Reply

      Unicast로 해당 MAC address 응답

728x90
728x90

네트워크 토폴로지란?

 

 - 외형적인 연결 모양을 의미함

 

 - 네트워크의 구성 요소(링크, 노드 등)을 물리적으로 연결한 상태, 연결 방식

 

네트워크 토폴로지 종류

 

[출처: http://www.ktword.co.kr/test/view/view.php?m_temp1=356]

그물(망)형  - 중앙에 제어 노드 없이 모든 노드가 상호 간에 1:1로 연결되는 형태
 - 네트워크 구성 방식 중 가장 복잡하고 비용이 많이 들지만 가장 안정적인 토폴로지
 - n(n-1)/2개의 물리적인 링크가 필요함
트리형  - 성형 토폴로지의 변형으로 제어 노드에 모든 노드가 연결되지 않고 트리 형태의 제어 노드를 두어 연결하는 토폴로지
 - 상위 계층의 노드가 하위 계층의 노드를 직접 제어하는 환경에 적합함
링형  - 노드가 순차적으로 링에 연결된 형태로 모든 노드가 하나의 링에 연결됨
 - 각 노드는 인접한 2개의 노드와만 연결함
성형  - 중앙에 제어 노드가 위치하여 나머지 모든 노드를 연결하는 네트워크 토폴로지
 - 모든 노드가 중앙의 제어 노드에 연결되어 통신하므로 중앙의 제어 노드의 안정성과 성능이 중요함
버스(선)형  - 모든 네트워크 노드와 주변 장치가 파이프 등의 일자형 케이블(버스)로 연결된 형태
 - T자 탭을 이용하여 연결하고 버스 양 끝단에 터미네이터를 연결함

 

728x90
728x90

ISO OSI Reference Model

1) OSI 7 Layers

 

 - 인터넷을 위한 네트워크 연결 표준으로 응용, 표현, 세션, 전송, 네트워크, 데이터링크, 물리 계층의 7계층으로 구성됨

 

 Application Layer (응용 계층)  - 사용자의 입력 데이터를 직접 다룰 수 있는 계층
 - 장비: WAF, IDS, IPS, L7 Switch
 Presentation Layer (표현 계층)  - 데이터의 표현 방식을 정의하는 계층
 - 데이터의 인코딩/디코딩, 압축, 암호화 방식 등을 정의함
 Session Layer (세션 계층)  - 세션의 수립, 유지, 종료 등 세션 관리를 위한 계층
 Transport Layer (전송 계층)  - 데이터의 전송 방식을 결정하기 위한 계층
 - 포트 번호를 사용하여 통신하는 대상 프로세스로 데이터를 전달함
 - 장비: 방화벽(Firewall), L4 Switch, 로드밸런서
 Network Layer (네트워크 계층)  - *패킷을 목적지까지 전달하기 위한 명세를 정의하는 계층
   (* 패킷: 데이터를 전달하기 위한 단위)
 - 논리 주소를 사용하여 데이터를 목적지까지 전달하기 위한 경로를 결정함
 - 장비: Router, L3 Switch
 Data-Link Layer (데이터 링크 계층)  - *프레임을 인접 노드에 전달하기 위한 명세를 전의하는 계층
   (* 프레임: 데이터를 전달하기 위한 단위)
 - 물리 주소로 네트워크 내의 대상 호스트에 프레임을 전달함
 - 장비: Switch, Bridge, NIC(네트워크 카드)
 Physical Layer (물리 계층)  - 데이터를 물리적으로 전송하기 위한 명세를 정의하는 계층
 - 신호를 물리적으로 전달하기 위한 전송 매체, 절차 등을 정의함
 - 장비: Hub, 케이블

 

 

 - 데이터를 전송할 때마다 각각의 층에서 인식할 수 있는 헤더를 붙이게 되는데 이를 캡슐화라고 함

 

캡슐화 과정

 

인캡슐레이션(Pack): 상위 레이어 > 하위 레이어, 디캡슐레이션(Unpack): 하위 레이어 > 상위 레이어

 

2) TCP/IP Protocol Suite

 

 Application Layer  Session, Presentation, Application Layer의 기능을 수행하는 계층
 Transport Layer  Transport Layer의 기능을 수행하는 계층
 Internet Layer  Network Layer의 기능을 수행하는 계층
 Network Interface Layer(=Network Access Layer)  Physical Layer, Data-Link Layer의 기능을 수행하는 계층

 

TCP/IP Protocol Suite

 

네트워크 장비

 

[L1] Hub(Dummy Hub)  - 여러 호스트들을 연결하기 위한 네트워크 장비
 - 입력 신호를 받아 다른 포트에 복제하여 출력하는 장비
 - 허브에 연결되는 호스트를 구분할 수 없음
 - 허브의 Collision Dmain은 허브 전체 영역에 걸침
 - 다수의 호스트가 연결되면 속도 저하가 생김
Repeater  - 접속 시스템의 수를 증가시키거나 특히 전송 거리를 연장하고자 할 때 사용하는 네트워크 장비
[L2] Bridge  - 네크워크와 네트워크를 서로 연결하기 위한 장비
Switch(Swiching Hub)  - 여러 호스트들을 연결하기 위한 네트워크 장비로 프레임을 다룰 수 있는 네트워크 장비
 - 각 포트가 Collision Domain을 분할함
 - 여러 호스트가 연결되어도 기본적으로 속도 저하가 발생하지 않음
  Gateway  - 서로 다른 네트워크로 데이터를 전송할 때 거치는 관문
 - 서로 다른 프로토콜 망 간에도 프로토콜을 변환하여 데이터를 주고 받을 수 있음
[L3] Router  - 네트워크와 네트워크를 서로 연결하기 위한 네트워크 장비
 - 목적지 네트워크까지 경로 계산 및 경로 지정을 수행함
[L4] Firewall  - 비 인가된 외부 접근을 차단하기 위한 네트워크 보안 장비
 - IP 주소와 포트 번호를 사용하여 허용된 서비스 및 네트워크만 사용함

 

728x90
728x90

네트워크란?

 - 2개 이상의 호스트를 서로 연결한 것

 

 

네트워크의 기능

 - 데이터 공유

 - 하드웨어 리소스 공유

 - 데이터 백업 등

 

 

규모에 따른 네트워크 분류

 

 PAN (Personal Area Netwok)  - 개인이 가진 스마트폰, 태블릿, 주변기기 등이 연결된 네트워크
 - 보통 무선으로 구성됨(예: 블루투스 등)
 LAN (Local Area Network)  - 한정된 지역 내에서 구성된 네트워크
 - 가정, 사무실 등에 구성된 네트워크
 WAN (Wide Area Network)  - 광범위한 범위에 구성된 네트워크
 - 수많은 LAN이 연결된 네트워크
 MAN (Metropolitan Area Network)  - 도시에 걸친 큰 규모의 네트워크

 

 

개념적인 네트워크 분류

 

 Internet  전세계에 걸쳐 구성된 네트워크로 누구나 사용 가능한 네트워크
 Intranet  - 특정 조직에서 사용되는 내부용 업무 네트워크
 - 적용 예시) 국가 기밀 관련 망
 Extranet  인트라넷이 확장된 네트워크로 조직 내부와 협력사 구성원들이 사용 가능한 업무 네트워크

 

728x90
728x90

4차 산업 혁명

- 제 1차 산업 혁명: 증기기관 기반의 '기계화 혁명'
- 제 2차 산업 혁명: 전기 에너지 기반의 '대량 생산 혁명'
- 제 3차 산업 혁명: 컴퓨터와 인터넷 기반의 '정보화 혁명'
- 제 4차 산업 혁명: 사물인터넷(IoT), 빅데이터, 인공지능(AI) 기반의 '만물 초지능 혁명'

 

4차 산업 혁명의 의미

- 인공지능, 데이터, 네트워크가 결합하여 인간의 지적 능력을 구현하기 시작함

 

ICBM (IoT / Cloud / Big Data / Mobile)

- 4차 산업 혁명이라는 새로운 환경에 원천이 되는 대표적인 정보통신 기술

 

 1) 사물인터넷 (IoT)

- 각종 사물에 컴퓨터 칩과 통신 기능을 내장하여 인터넷에 연결하는 기술
- 적용 예시: 에어컨, 밥솥, 공기청정기, 도어락 등

 

 2) 클라우드 (Cloud)

- 정보처리, 저장, 관리, 유통, 분석 등의 작업을 제 3의 공간에서 수행하는 컴퓨팅 시스템
- 인터넷 접속이 가능한 단말기 등을 통해 언제 어디서나 데이터를 불러와 작업하는 사용자 환경
- 클라우드 서비스 vs 웹 하드 서비스 개념 차이

 

클라우드 웹 하드
인터넷 상에서 실시간으로 데이터 수정 가능 - 네트워크를 통해 데이터를 백업하는 용도,
- 데이터 수정 시 데이터 업로드 및 다운로드 작업 필요


- 클라우드 서비스 유형

 

 IaaS (Infrastructure as a Service)  물리적인 하드웨어 인프라를 서비스 형태로 제공받는 클라우드 서비스
 PaaS (Platform as a Service)  미들웨어를 서비스 형태로 제공받는 클라우드 서비스
* 미들웨어: 웹 서비스, 데이터베이스 서비스, 라이브러리/프레임워크 등
 SaaS (Software as a Service)  End User가 바로 사용 가능한 완성형 소프트웨어를 별도의 설치 없이 서비스 형태로 제공받는 클라우드 서비스,
 웹 브라우저에서 실행
* 적용 서비스 예시: MS Office 365, Google docs 등

 

3) 빅데이터(Big data)

- 많은 양의 데이터에서 빠르게 정보를 추출 및 분석하여 가치있는 정보를 발견하는 기술
- 초기에는 데이터의 규모를 의미했음
- 빅데이터 기술은 사람들이 평상 시에 쓰는 말이나 글을 컴퓨터가 이해, 정보화하는 것으로부터 시작됨
- 데이터의 규모, 속도, 다양성이라는 세 가지 속성을 가짐 -> 3Vs
- 빅데이터 분석 기술

  •  텍스트 마이닝: 최근 소셜 미디어 등 비정형 데이터의 증가,
  • 비정형 또는 반정형 텍스트 데이터에서 자연 언어 처리 기술에 기반
  • 오피니언 마이닝(또는 평판 분석)
  • 군집 분석
  • 하둡
  • NoSQL

 

4) 모바일(Mobile)

- 스마트폰과 태블릿 PC 등과 같이 이동 중 사용이 가능한 컴퓨터 환경

 

5) 인공지능

- 머신 러닝

  • 과거의 데이터를 기반으로 미지의 데이터에 대한 예측을 하는 기술
  • 기존의 데이터에 포함된 특징을 학습하여 아직 접하지 않은 미지의 데이터에도 적합한 일반적인 구조를 발견하기 위한 기술

- 머신 러닝의 학습 방법

  • 지도 학습
  • 비지도 학습
  • 강화 학습

- 딥러닝

  • 심층 신경망을 사용하는 머신러닝의 한 분야
  • 특정 영역에서 높은 예측 성능을 발휘하는 머신러닝 방법 중 하나

- 인공지능

  • 인간의 뇌 구조를 컴퓨터에서 재연하거나 논리적인 추론 처리를 컴퓨터로 구현하는 것을 목적으로 함
  • 어떠한 지성을 가진 것처럼 보이는 제품이나 서비스
  • (큰 범위) 인공지능 >> 머신러닝 >> 딥러닝 (작은 범위)

- 인공지능 활용 분야: OCR, 번역, 음성 인식, 음원 검색, 챗봇

728x90
728x90

# 1. 이미지 다운로드

 

docker image pull [옵션] 이미지명 [:태그명]

 

# CentOS 이미지 다운로드

# 태그명을 생략하면 latest 버전을 다운로드함

 

hjk@hjk-VirtualBox:~$ sudo docker image pull centos:7

[sudo] hjk의 암호: 



7: Pulling from library/centos

2d473b07cdd5: Pull complete 

Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e

Status: Downloaded newer image for centos:7

docker.io/library/centos:7

 

 

# CentOS의 모든 태그 이미지 다운로드

# -a 옵션 지정 시 모든 태그 다운로드

# -a 옵션 지정 시 이미지명에 태그 지정을 할 수 없음

 

hjk@hjk-VirtualBox:~$ sudo docker image pull -a centos

 

# 다운로드한 이미지 확인

 

hjk@hjk-VirtualBox:~$ sudo docker image ls

REPOSITORY   TAG        IMAGE ID       CREATED        SIZE

ubuntu       latest     9873176a8ff5   3 days ago     72.7MB

nginx        latest     d1a364dc548d   3 weeks ago    133MB

centos       7          8652b9f0cb4c   7 months ago   204MB

centos       6.6        368c96d786ae   2 years ago    203MB

centos       6.7        9f1de3c6ad53   2 years ago    191MB

centos       6.8        82f3b5f3c58f   2 years ago    195MB

centos       6.9        2199b8eb8390   2 years ago    195MB

centos       6.10       48650444e419   2 years ago    194MB

centos       7.0.1406   cc2cf48cc784   2 years ago    210MB

centos       7.1.1503   e1430271e2f9   2 years ago    212MB

centos       7.2.1511   9aec5c5fe4ba   2 years ago    195MB

centos       7.3.1611   c5d48e81b986   2 years ago    192MB

centos       7.4.1708   9f266d35e02c   2 years ago    197MB

centos       7.5.1804   cf49811e3cdb   2 years ago    200MB

centos       6          d0957ffdf8a2   2 years ago    194MB

centos       5.11       b424fba01172   4 years ago    284MB

centos       5          1ae98b2c895d   4 years ago    285MB

 

 

# 2. 이미지 목록 표시

 

docker image ls [옵션] [리포지토리명]

 

옵션 설명
-all, -a 모든 이미지 표시
--digests * 다이제스트 표시 여부
--no-trunc 결과 모두 표시
--quiet, -q docker 이미지 ID 표시
  • 다이제스트: Docker 레지스트리에 업로드한 이미지는 이미지를 고유하게 식별하기 위해 다이제스트가 부여됨

 

hjk@hjk-VirtualBox:~$ sudo docker image ls -a



REPOSITORY   TAG        IMAGE ID       CREATED        SIZE

ubuntu       latest     9873176a8ff5   3 days ago     72.7MB

nginx        latest     d1a364dc548d   3 weeks ago    133MB

centos       7          8652b9f0cb4c   7 months ago   204MB

 

hjk@hjk-VirtualBox:~$ sudo docker image ls --digests



REPOSITORY   TAG        DIGEST                                                                    IMAGE ID       CREATED        SIZE

ubuntu       latest     sha256:aba80b77e27148d99c034a987e7da3a287ed455390352663418c0f2ed40417fe   9873176a8ff5   3 days ago     72.7MB

nginx        latest     sha256:6d75c99af15565a301e48297fa2d121e15d80ad526f8369c526324f0f7ccb750   d1a364dc548d   3 weeks ago    133MB

centos       7          sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e   8652b9f0cb4c   7 months ago   204MB

 

hjk@hjk-VirtualBox:~$ sudo docker image ls --no-trunc



REPOSITORY   TAG        IMAGE ID                                                                  CREATED        SIZE

ubuntu       latest     sha256:9873176a8ff5ac192ce4d7df8a403787558b9f3981a4c4d74afb3edceeda451c   3 days ago     72.7MB

nginx        latest     sha256:d1a364dc548d5357f0da3268c888e1971bbdb957ee3f028fe7194f1d61c6fdee   3 weeks ago    133MB

centos       7          sha256:8652b9f0cb4c0599575e5a003f5906876e10c1ceb2ab9fe1786712dac14a50cf   7 months ago   204MB

 

hjk@hjk-VirtualBox:~$ sudo docker image ls -q



9873176a8ff5

d1a364dc548d

8652b9f0cb4c

 

hjk@hjk-VirtualBox:~$ sudo docker image ls



REPOSITORY   TAG        IMAGE ID       CREATED        SIZE

ubuntu       latest     9873176a8ff5   3 days ago     72.7MB

nginx        latest     d1a364dc548d   3 weeks ago    133MB

centos       7          8652b9f0cb4c   7 months ago   204MB

 

항목 설명
REPOSITORY 이미지 이름
TAG 이미지 태그명
IMAGE ID 이미지 ID
CREATED 작성일
SIZE 이미지 크기

 

hjk@hjk-VirtualBox:~$ sudo docker image ls



REPOSITORY   TAG        IMAGE ID       CREATED        SIZE

ubuntu       latest     9873176a8ff5   3 days ago     72.7MB

nginx        latest     d1a364dc548d   3 weeks ago    133MB

centos       7          8652b9f0cb4c   7 months ago   204MB

 

# 고유한 다이제스트를 이용한 이미지 식별 

 

# docker 레지스트리에 이미지 업로드

 

hjk@hjk-VirtualBox:~$ sudo docker pull asashiho/dockersample



Using default tag: latest

latest: Pulling from asashiho/dockersample

8ba884070f61: Pull complete 

be5a2e86d256: Pull complete 

7ff082be3903: Pull complete 

Digest: sha256:214fb190b7f3e69ed44c908869cb2b86c2dc5a450128e045e2090bb6f0af9a50

Status: Downloaded newer image for asashiho/dockersample:latest

docker.io/asashiho/dockersample:latest

 

# 업로드된 이미지의 다이제스트 목록 출력

 

# 레지스트리 (Registry)

  • 이미지 호스팅 및 배포를 담당하는 서비스입니다. 
  • 기본 레지스트리는 Docker Hub입니다.
  • 일반적으로 소프트웨어가 상업용 인 경우이를 "개인 및 신뢰할 수있는"레지스트리로 호스팅하게됩니다.

# 리포지토리 (Repository)

  • 관련 이미지 모음 (일반적으로 동일한 애플리케이션 또는 서비스의 서로 다른 버전 제공).
  • "태그가 지정된"이미지 세트입니다.
  • 예를 들어 5 개의 ubuntu:latest이미지에 태그를 지정할 수 있습니다.

 

hjk@hjk-VirtualBox:~$ sudo docker image ls --digests asashiho/dockersample



REPOSITORY              TAG       DIGEST                                                                    IMAGE ID       CREATED       SIZE

asashiho/dockersample   latest    sha256:214fb190b7f3e69ed44c908869cb2b86c2dc5a450128e045e2090bb6f0af9a50   6d041c204453   2 years ago   319MB

 

 

 

 

# 3. 이미지 상세 정보 확인

 

docker image inspect

 

  • 정보 형식 : JSON, 텍스트 기반 데이터 포맷

 

# 이미지 상세 정보 표시

  • “Id” : 이미지 ID
  • “Created” : 작성일
  • “DockerVersion” : Docker 버전
  • “Architecture” : CPU 아키텍처

 

hjk@hjk-VirtualBox:~$ sudo docker image inspect centos:7

[sudo] hjk의 암호: 

[

    {

…

        "Id": "sha256:8652b9f0cb4c0599575e5a003f5906876e10c1ceb2ab9fe1786712dac14a50cf",

…

        "Created": "2020-11-14T00:20:04.644613188Z",

…

        "DockerVersion": "19.03.12",

…

        "Architecture": "amd64",

…



    }

]

 

# OS 정보 취득

 

# --format 옵션 : OS 정보 출력, OS의 값은 루트 아래(이름 없음)에 있는 “OS”안에 설정되어 있음

 

hjk@hjk-VirtualBox:~$ sudo docker image inspect --format="{{ .Os}}" centos:7



linux

 

 

# image 정보 취득

 

# ContainerConfig의 Image 값 출력

 

hjk@hjk-VirtualBox:~$ sudo docker image inspect --format="{{ .ContainerConfig.Image }}" centos:7

sha256:05e222a9fa848efd0d4dd0969ea27c789a1eff8445d25c4f13f932ead6e3b674

 

# 4. 이미지 태그 설정

 

docker image tag <Docker Hub 사용자명>/이미지명: [태그명]

 

# 이미지에 대한 태그 설정

 

# 이미지 이름 : nginx

# 사용자명 : asashiho

# 컨테이너명 : webserver

# 버전 : 1.0

 

hjk@hjk-VirtualBox:~$ sudo docker image ls



REPOSITORY         TAG        IMAGE ID       CREATED        SIZE

nginx                   latest     d1a364dc548d   3 weeks ago    133MB



hjk@hjk-VirtualBox:~$ sudo docker image tag nginx asashiho/webserver:1.0



# 확인 사항 : 태그를 붙인 이미지(asashiho/webserver:1.0)와 원래의 이미지(nginx)의 “IMAGE ID”가 동일함



hjk@hjk-VirtualBox:~$ sudo docker image ls



REPOSITORY              TAG        IMAGE ID       CREATED        SIZE

asashiho/webserver      1.0        d1a364dc548d   3 weeks ago    133MB

nginx                   latest     d1a364dc548d   3 weeks ago    133MB

 

 

# 5. 이미지 검색

 

docker search [옵션] <검색 키워드>

 

옵션 설명
--no-trunc 결과를 모두 표시
--limit n건의 검색 결과 표시
--filter=stars=n 즐겨찾기의 (n 이상) 지정정

 

# Docker Hub에 공개되어 있는 이미지 검색

 

hjk@hjk-VirtualBox:~$ sudo docker search nginx

[sudo] hjk의 암호: 



NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED

nginx                              Official build of Nginx.                        15057     [OK]       

jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   2039              [OK]

richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…  814                 [OK]

 

항목 설명
NAME 이미지 이름
DESCRIPTION 이미지 설명
STARS 즐겨찾기
OFFICIAL 공식 이미지
AUTOMATED Dockerfile 바탕으로 자동 생성된 이미지

 

# 인기있는 이미지 검색

 

hjk@hjk-VirtualBox:~$ sudo docker search --filter=stars=1000 nginx



NAME                  DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED

nginx                 Official build of Nginx.                        15057     [OK]       

jwilder/nginx-proxy   Automated Nginx reverse proxy for docker con…   2039                 [OK]

 

  • Docker Hub에 공개되어 있는 이미지가 모두 안전하다고 볼 수 없기 때문에 Docker 이미지를 이용할 때는 공식 이미지 또는 Dockerfile이 제대로 공개되어 있는 것을 선택하여 확인 후 사용할 것

 

# 6. 이미지 삭제

 

docker image rm [옵션] 이미지명 [이미지명]

 

옵션 설명
--force, -f 이미지를 강제로 삭제
--no-prune 중간 이미지를 삭제하지 않음

 

docker image prune [옵션]

 

옵션 설명
--force, -f 이미지를 강제로 삭제
--all, -a 사용하지 않은 이미지를 모두 삭제

 

 

# 이미지 삭제

 

hjk@hjk-VirtualBox:~$ sudo docker image rm nginx



Error response from daemon: conflict: unable to remove repository reference "nginx" (must force) - container 3e64d7145e5a is using its referenced image d1a364dc548d



hjk@hjk-VirtualBox:~$ sudo docker image rm -f nginx



Untagged: nginx:latest

Untagged: nginx@sha256:6d75c99af15565a301e48297fa2d121e15d80ad526f8369c526324f0f7ccb750

Deleted: sha256:d1a364dc548d5357f0da3268c888e1971bbdb957ee3f028fe7194f1d61c6fdee

 

 

# 7. Docker Hub에 로그인

 

docker login [옵션] [서버]

 

옵션 설명
--password, -p 비밀번호
--username, -u 사용자명

 

  • 로그인에 성공하면 ‘Login Succeded’라는 메시지가 표시됨
  • 서버명을 지정하지 않을 경우 Docker Hub에 액세스 됨
  • 다른 환경에 Docker 리포지토리가 있는 경우 서버명을 지정하여 사용

 

 

# Docker Hub에 로그인

 

hjk@hjk-VirtualBox:~$ sudo docker login

Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.

Username: [Docker Hub ID]

Password: [Docker Hub PW]

WARNING! Your password will be stored unencrypted in /home/hjk/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

 

 

 

# -p 옵션은 비밀번호가 표시되기 때문에 보안상 권장하지 않음

 

hjk@hjk-VirtualBox:~$ sudo docker login -u [Docker Hub ID] -p [Docker Hub PW]

WARNING! Using --password via the CLI is insecure. Use --password-stdin.

WARNING! Your password will be stored unencrypted in /home/hjk/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store



Login Succeeded

 

 

# 8. 이미지 업로드

 

docker image push 이미지명 [:태그명]

 

<Docker Hub 사용자명>/이미지명:[태그명]

 

 

hjk@hjk-VirtualBox:~$ sudo docker image tag nginx khj708/webserver:1.0



hjk@hjk-VirtualBox:~$ sudo docker image ls



REPOSITORY         TAG       IMAGE ID       CREATED        SIZE

khj708/webserver   1.0       4f380adfc10f   19 hours ago   133MB

nginx              latest    4f380adfc10f   19 hours ago   133MB

ubuntu             latest    9873176a8ff5   6 days ago     72.7MB

centos             7         8652b9f0cb4c   7 months ago   204MB



hjk@hjk-VirtualBox:~$ sudo docker push khj708/webserver:1.0



The push refers to repository [docker.io/khj708/webserver]

c6d74dcb7fe7: Mounted from library/nginx 

b50a193ebf2e: Mounted from library/nginx 

165eb6c3c0d3: Mounted from library/nginx 

cf388fcf3527: Mounted from library/nginx 

2418679ca01f: Mounted from library/nginx 

764055ebc9a7: Mounted from library/nginx 

1.0: digest: sha256:2f1cd90e00fe2c991e18272bb35d6a8258eeb27785d121aa4cc1ae4235167cfd size: 1570

 

# 업로드 완료 후 Docker Hub에 새로운 이미지가 등록된 것을 확인할 수 있음

 

 

# 9. Docker Hub에서 로그아웃

 

hjk@hjk-VirtualBox:~$ sudo docker logout



Removing login credentials for https://index.docker.io/v1/
728x90
728x90

Docker 설치 완료 후 Docker를 사용한 웹 서버 구축을 테스트해보자

 

# 1. 이미지 다운로드

 

hjk@hjk-VirtualBox:~$ sudo docker pull nginx



Using default tag: latest

latest: Pulling from library/nginx

69692152171a: Pull complete 

30afc0b18f67: Pull complete 

596b1d696923: Pull complete 

febe5bd23e98: Pull complete 

8283eee92e2f: Pull complete 

351ad75a6cfa: Pull complete 

Digest: sha256:6d75c99af15565a301e48297fa2d121e15d80ad526f8369c526324f0f7ccb750

Status: Downloaded newer image for nginx:latest

docker.io/library/nginx:latest

 

 

# 2. 이미지 확인

 

# 클라이언트 PC로 다운로드가 제대로 되었는지 확인

 

hjk@hjk-VirtualBox:~$ sudo docker image ls



REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

ubuntu       latest    9873176a8ff5   3 days ago    72.7MB

nginx        latest    d1a364dc548d   3 weeks ago   133MB

 

 

# 3. 이미지를 사용하여 nginx 서버 실행

 

# 명령어 실행 후 웹 브라우저 주소창에서 http://[가상머신 IP 주소]:80 입력 

 

hjk@hjk-VirtualBox:~$ sudo docker container run --name webserver -d -p 80:80 nginx



3e64d7145e5aa9d6921bfed62d9ef28da9f882f2d9e2dfa5b2c9775910a04596

 

 

 

# 4. nginx 서버 상태 확인

 

# ‘webserver’라는 이름의 docker 컨테이너에서 nginx 서버 프로세스가 시작되어, 컨테이너 80 포트를 전송하고 있다는 것을 알 수 있음

 

hjk@hjk-VirtualBox:~$ sudo docker container ps



[sudo] hjk의 암호: 

CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                     NAMES

3e64d7145e5a   nginx     "/docker-entrypoint.…"   22 minutes ago   Up 22 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   webserver

 

 

# 5. 컨테이너 가동 확인

 

# 컨테이너 상세 내용

 

hjk@hjk-VirtualBox:~$ sudo docker container stats webserver



CONTAINER ID   NAME        CPU %     MEM USAGE / LIMIT    MEM %     NET I/O          BLOCK I/O     PIDS

3e64d7145e5a   webserver   0.00%     5.48MiB / 7.775GiB   0.07%     6.02kB / 2.6kB   0B / 8.19kB   5

 

 

# 6. 컨테이너 정지 및 시작

 

hjk@hjk-VirtualBox:~$ sudo docker stop webserver

webserver

hjk@hjk-VirtualBox:~$ sudo docker start webserver

webserver

 

# 컨테이너 정지 후 nginx 서버에 액세스를 할 수 없음

 

 

728x90

+ Recent posts