반응형

1. 시험환경

    ˙ 우분투(ubuntu) v20.04

    ˙ AWS AMI : 사용자 생성

    ˙ AWS ECR(Elastic Container Registry)

 

2. 목적

    ˙ AWS ECR(Elastic Container Registry) 저장소(repository)를 생성한다.

        - 참고: https://languagestory.tistory.com/211 ①~⑥

    ˙ AWS CLI 사용을 위한 사용자로 IAM user를 등록한다.

        - 참고: https://languagestory.tistory.com/211~⑩

    ˙ Docker Image를 생성한 ECR 저장소에 업로드(push) 한다.

    ˙ ECR 저장소에 등록된 이미지를 다운로드(pull) 받는다.

 

3. 적용

    ① 우분투(ubuntu) 리눅스 환경에서 AWS-CLI 패키지를 설치한다.

        - sudo apt install awscli

 

    ② 설치완료 후 동작 여부를 확인한다.

        - $ aws cli

 

    ③ AWS CLI 사용을 위해 IAM 사용자를 등록한다. (참고: https://languagestory.tistory.com/211)

        - Access Key, Secret Key, reging, type(json)을 차례대로 입력한다.

 

    ④ 등록한 AWS ECR에 권한(pull) 획득을 위해 AWS-ECR과 Docker 로그인한다.

        - $ aws  ecr  get-login-password  --region  [region]  |  docker  login  --username  AWS  --password-stdin  [ECR URL]

 

    ⑤ DockerHub에서 nginx 이미지를 다운로드(pull) 한다.

 

    ⑥ 다운받은 이미지를 AWS ECR Repository에 push하기 위해 tag명을 생성한다.

        - $ docker  tag   [기존 REPOSITORY:TAG]   [신규 REPOSITORY:TAG]

 

    ⑦ AWS ECR로 업로드(push) 한다.

        - $ docker  push  [업로드 이미지 REPOSITORY : tag]

 

4. 결과

    ˙ ECR Repository에 도커 이미지가 등록된 것을 확인한다.

 

    ˙ Local PC에서 Docker Image를 삭제(rmi)하고 AWS ECR에 등록된 이미지를 다운로드(pull) 받는다.

        - $ docker  pull  [repository/image:tag]

 

반응형
반응형

1. 시험환경

    ˙ 우분투(ubuntu) v20.04

    ˙ AWS IAM 사용자 생성

    ˙ AWS ECR(Elastic Container Registry)

 

2. 목적

    ˙ ECR 저장소(repository)를 생성한다.

    ˙ AWS CLI 사용을 위한 사용자로 IAM user를 등록한다.

    ˙ Docker Image를 생성한 ECR 저장소에 업로드(push) 한다.

    ˙ ECR 저장소에 등록된 이미지를 다운로드(pull) 받는다.

 

3. 적용

    ① AWS ECR(Elastic Container Registry) 서비스에서 "시작하기" 버튼을 클릭한다.

 

    ② private 저장소로 설정하고 레포지토리 이름을 등록한다.

        - 저장소(repository) 이름 : my-repo-nginx

 

    ③ 저장소(repository) 설정값은 비활성으로 한다. (과금 연관)

 

    ④ 등록한 이름으로 저장소(repository)가 생성되었다.

 

    ⑤ 저장소(repository)를 클릭하고 "푸시 명령 보기" 버튼을 클릭한다.

 

    ⑥ ECR Repository에 Push/Pull 하기 위한 명령어를 확인할 수 있다.


    ⑦ AWS CLI 접근권한을 갖기 위한 사용자를 생성한다.

 

    ⑧ 사용자 이름을 입력한다.

 

    ⑨ 생성할 사용자의 권한을 부여한다.

        - 여기에서는 빠른 테스트를 위해 관리자권한을 부여하였다.

 

    ⑩ 사용자를 생성한다.

 

4. 결과

    ˙ Docker 이미지를 저장하기 위한 ECR Repository를 생성하였다.

    ˙ AWS CLI 명령어를 통해 ECR Repository에 이미지 등록 권한을 갖는 IAM 사용자를 생성하였다.

    ˙ 다음 포스팅에서 ECR 저장소에 이미지를 pull/push 하기 위한 방법을 알아보자.

        - https://languagestory.tistory.com/212

 

 

 

반응형
반응형

1. 시험환경

    ˙ 우분투(ubuntu) 리눅스 v20.04

    ˙ docker

 

2. 목적

    ˙ 컨테이너(container)안에서 생성된 파일 및 데이터는 컨테이너 종료(rm)와 함께 삭제된다.

    ˙데이터 저장 전용 컨테이너(container)와 호스트(Host)를 이용하여 복합 저장소를 구성한다.

        - 여러 컨테이너(container)안에서 생성된 파일을 데이터 저장 전용 컨테이너(container)에 마운트한다.

        - 데이터 저장 전용 컨테이너(container)를 영구적인 저장소(volume)에 보관하기 위해 호스트에 마운트한다.

 

3. 적용

    ① -v 옵션과 함께 컨테이너(container)를 실행하면 Container의 저장소가 Host의 경로로 마운트 된다.

        - 마운트 target 경로 : Host의 $(pwd)/docker-nginx-html

        - 마운트 source  경로 : Container의 /usr/share/nginx/html

 

    --volumes-from  옵션과 함께 컨테이너(container)를 실행하면 지정경로를 다른 컨테이너(container, 데이터 저장 전용)에 마운트한다.

        - $ docker run -d --volumes-from [container(저장소)]  [image] 

 

    ③ nginx 컨테이너(conatiner) 안에 진입하여 파일을 생성한다.

        - "stupefied_joliot" 컨테이너(container) : test1.txt 파일 생성

        - "confident_heyrovsky" 컨테이너(container) :  test2.txt 파일 생성

 

    ④ 데이터 저장 전용 컨테이너(my-ubuntu)에 진입하여 다른 컨테이너(nginx)에서 생성한 파일이 저장되었는지 확인한다.

        - 마운트 경로 : /usr/share/nginx/html은 nginx 실행을 위해 미리 정의된 경로이다.

 

 

    ⑤ 생성된 모든 컨테이너를 삭제한다.

        - 모든 컨테이너 삭제 명령어 : $ docker rm $(docker ps -a -q)

 

4. 결과

    ˙ 컨테이너(conatiner)가 삭제되어도 Host 마운트 경로에 파일이 남아있는 것을 확인할 수 있다.

 

반응형
반응형

1. 시험환경

    ˙ AWS

    ˙ Route 53

 

2. 목적

    ˙ AWS Route 53 서비스에서 도메인(Domain)을 구매한다.

 

3. 적용

    ① 「Route 53등록된 도메인 도메인 등록 버튼을 클릭한다.

 

    ② 도메인 이름을 입력하고 구매한다.

 

    ③ 도메인 관리자의 개인정보를 입력한다.

 

4. 결과

    ˙ 최대 3일 정도의 시간이 소요된다는 문구가 나오지만 보통 1일 이내에 완료된다.

 

반응형
반응형

1. 시험환경

    ˙ AWS Route53

    ˙ 호스팅 업체에서 도메인 구매 (ex. 가비아, 카페24 등)

 

2. 목적

    ˙ 구매한 도메인을 Route 53 호스팅 등록하여 AWS에 사용하기 위한 설정 방법을 알아보자.

    ˙ 서브 도메인을 생성하고 EC2에 IP주소를 매핑(Record A) 하는 방법을 알아보자.

 

3. 적용

    ① AWS Route 53 서비스에서 "호스팅 영역" 메뉴 "호스팅 영역 생성" 버튼을 클릭한다. 

 

    ② 구매한 도메인 이름을 입력한다.

 

    ③ 등록한 도메인 이름에 Name Server 등이 연결된 것을 확인할 수 있다.

 

    ④ 서브 도메인을 추가하고, 서브도메인과 연결할 값을 입력한다.

        - 레코드 이름 : 서브 도메인 입력

        - 값 : 서브 도메인과 연결할 IP (ex. EC2 Public IP)

 

    ⑤ 서브 도메인이 추가된 것을 확인한다.

 

    ⑥ 도메인을 구매한 호스팅 업체의 관리자 모드에서 네임서버를 "③AWS 호스팅 네임서버"로 교체한다.

        - 아래 화면은 사용하는 도메인을 구매한 호스팅 업체마다 다른 모양으로 나타난다.

 

4. 결과

    ˙ 서브 도메인으로 접속하면 Web Service 화면을 확인할 수 있다.

        - 추가한 서브 도메인은 EC2에서 nginx 서비스를 기동하고 있다. (참고: https://languagestory.tistory.com/189)

 

반응형
반응형

1. 시험환경

    ˙ ubuntu v20.04

    ˙ docker

 

2. 목적

    ˙ 컨테이너(container)안에서 생성된 파일 및 데이터는 컨테이너 종료(rm)와 함께 삭제된다.

    ˙ 컨테이너(container)안에서 생성된 파일을 영구적인 저장소(volume)에 보관하기 위해 

    ˙ 호스트(Host) 경로에 저장하는 방법을 알아보자.

 

3. 적용

    ① 컨테이너(container) 안에서 생성된 파일을 호스트(Host) 경로에 저장하기 (-v 옵션)

        - $ docker run -d -v [$(pwd)/호스트 vol 경로] : [컨테이터의 vol 경로] [image]     ※ $(pwd) : host의 현재 경로

 

    ② 컨테이너(container) 상세 정보를 확인하여 Mount 정보를 확인한다.

        - $ docker inspect [container]

 

    ③ 컨테이너(container) 안에서 임의의 파일을 생성한다.

 

    ④ 컨테이너(container)를 종료(rm)한다.

 

4. 결과

    ˙ 마운트된 호스트(Host)에 파일이 남겨져 있는지 확인한다.

반응형
반응형

1. 시험환경

    ˙ ubuntu v20.04

    ˙ Docker

 

2. 목적

    ˙ 컨테이너(Container) 로그를 출력한다.

    ˙ 컨테이너(Container) 로그 설정하는 방법을 알아보자.

 

3. 적용

    ① 컨테이너(container)의 주요 로그(log) 명령어

        - 특정 컨테이너의 로그 출력 : $ docker logs [container]

        - 특정 컨테이너의 로그 출력(마지막 10줄) : $ docker logs --tail 10 [container]

        - 특정 컨테이너의 실시간 로그 출력 : $ docker logs -f [container]

        - 특정 컨테이너의 실시간 로그 출력 (타임 스탬프 표시) : $ docker logs -f -t [container]

 

    ② 컨테이너(container)의 로그 파일이 Host 운영체제에 저장되는 경로 (--log-driver=json-file 경우)

        - $ cat /var/lib/docker/containers/[CONTAINER]/[CONTAINER]-json.log

 

    ③ 컨테이너(container) 실행 시 로그 파일 용량 및 갯수 제한 설정

        - ex) 로그 파일 개당 10MB 용량 제한, 최대 로그 파일 갯수 10개 설정

        - $ docker run -d --log-driver=json-file --log-out max-size=10m --log-opt max-file 10 [image]

 

반응형
반응형

1. 시험환경

    ˙ ubuntu v20.04

    ˙ docker-compose

   ˙ Grafana (DockerHub)

   ˙ MySQL (DockerHub)

 

2. 목적

    ˙ Grafana와 MySQL 연동 서비스를 위한 docker-compose.yml 파일을 작성한다.

    ˙ docker-compose를 이용하여 Grafana 서비스를 기동한다.

 

3. 적용

    ① Grafana container를 실행하기 위한 설정 파일을 구성한다.

        - image : repository 및 image:버전

        - ports: 외부 접속을 위한 port 매핑

        - volumes : ./files/grafana.ini (grafana 설정, host 경로)를 docker container 경로의 /etc/grafana/grafana.ini로 복사

        - grafana-data : /var/lib/grafana (grafana DB 데이터가 저장되는 경로, 기본DB는 SQLite 설정)

        - depends_on : grafana container 생성 전에 db service가 먼저 서비스되어야 한다. (의존성 관계 설정)

Dockerfile
0.00MB

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
version: '3.9'
 
services:
  db:
    image: mysql:5.7
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 1q2w3e
      MYSQL_DATABASE: grafana
      MYSQL_USER: devops
      MYSQL_PASSWORD: 1q2w3e
    ports:
    - 3306:3306
    volumes:
    - mysql-data:/var/lib/mysql
    logging:
      driver: "json-file"
      options:
        max-size: "8m"
        max-file: "10"
 
  grafana:
    depends_on:
    - db
    image: grafana/grafana:8.2.2
    restart: unless-stopped
    environment:
      GF_INSTALL_PLUGINS: grafana-clock-panel
    ports:
    - 3000:3000
    volumes:
    - ./files/grafana.ini:/etc/grafana/grafana.ini:ro
    - grafana-data:/var/lib/grafana
    logging:
      driver: "json-file"
      options:
        max-size: "8m"
        max-file: "10"
 
volumes:
  mysql-data: {}
  grafana-data: {}
cs

 

    ② grafana 환경 변수 설정 파일

        - ./files/grafana.ini

grafana.ini
0.00MB

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
app_mode = production
instance_name = ${HOSTNAME}
 
################ Server ################
[server]
protocol = http
http_addr =
http_port = 3000
 
################ Database ##############
[database]
type = mysql
host = db:3306
name = grafana
user = devops
password = 1q2w3e
 
 
################ Logging ###############
[log]
mode = console
level = info
 
################ Alerting ##############
[alerting]
enabled = true
cs

 

    ③ Grafana container를 서비스하기 위해 구성한 docker-compose.yml 파일을 실행한다.

        - $ docker-compose up -d

 

    ④ Grafana에 접속하여 grafana.ini 기반으로 DB 설정 정보가 설정되었는지 확인한다.

 

    ⑤ Grafana에서 신규 사용자를 생성한다.

 

4. 결과

    ˙ Grafana에서 추가한 사용자 정보가 MySQL DB에 저장되었는지 확인한다.

반응형

+ Recent posts