반응형

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)

 

2. 목적

    ˙ Grafana 서비스를 위한 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 설정)

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
$ cat docker-compose.yml
version: '3.9'
 
services:
  grafana:
    image: grafana/grafana:8.2.6
    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:
  grafana-data: {}
cs

 

    ② grafana 환경 변수 설정 파일

grafana.ini
0.00MB

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
app_mode = production
instance_name = ${HOSTNAME}
 
############### Server ####################
[server]
protocol = http
http_addr =
http_port = 3000
 
############### Logging ###################
[log]
mode = console
level = info
 
############### Alert ####################
[alerting]
enabled = true
 
cs

 

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

        - $ docker-compose up -d

 

    ④ Grafana container 쉘에 접속하여 설정파일(grafana.ini)와 SQLite DB 설정이 되었는지 확인한다.

        - container 쉘 접속 : $ docker exec -it [image] sh

 

    ⑤ docker-compose 서비스를 제거한다.

        - $ docker-compose down -v

 

4. 결과

    ˙ 호스트 서버에 접속하여 Grafana 서비스 동작 여부를 확인한다.

        - URL : http://[호스트 서버 IP]:3000

 

반응형
반응형

1. 시험환경

    ˙ 윈도우

    ˙ Docker

 

2. 목적

    ˙ Container를 실행한다. (run)

    ˙ Container 상태(실행, 중지)를 제어한다. (start, stop)

    ˙ Container를 삭제한다. (rm)

 

3. 적용

    ① Docker Hub에는 docker image를 제공하고 있으며 docker 명령어를 이용하여 다운받아 사용할 수 있다.

        - URL : https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy

hub.docker.com

 

    ② docker hub에서 image를 다운로드(pull) 받을 수 있다.

        - 참고 링크 : https://languagestory.tistory.com/198

 

[docker] 도커허브(DockerHub) 저장소(repositor)에 이미지(image) pull/push

1. 시험환경 ˙ ubuntu v20.04 ˙ docker, DockerHub 2. 목적 ˙ 도커허브(DockerHub) 사용법을 알아보자. ˙ 도커 이미지를 도커허브(DockerHub) 저장소(Repository)에 등록한다. ˙ 도커허브(DockerHub) 저장소(Repository)에

languagestory.tistory.com

 

    ③ 다운(pull) 받은 image 목록을 확인한다.

        - $ docker images

 

    ④  image를 실행하여 container를 생성한다.

        - $ docker run [image]
        - $ docker run --name [container_name] [image]      : 이름을 지정하여 container 생성

container 생성 - 첫번째
container 생성 - 두번째

 

      생성된 container 목록 및 상태정보를 확인한다.

        - 1개의 image로 여러 개의 container를 생성할 수 있다.

 

    실행중인 container를 중지(stop) 한다.

        - $ docker stop [container_name 또는 container_id]

 

    container를 시작(start) 한다.

        - $ docker start [container_name 또는 container_id]

 

     container를 삭제(rm) 한다.

        -  $ docker rm [container_name 또는 container_id]     : 실행 중지 상태의 container 삭제
        -  $ docker rm -f [container_name 또는 container_id]     : container의 상태에 상관없이 삭제

 

반응형

+ Recent posts