본문 바로가기

반응형

전체 글

Docker Compose를 이용하기 docker-compose.yml 파일을 통해 별도의 도커 명령어를 모르더라도 docker-compose up 명령어를 통해 한번에 원하는 환경을 만들 수 있다. 위 그림과 같이 클라이언트인 웹 브라우저가 있고 워드프레이스인 웹서버와 mysql DB 서버가 존재한다고 생각하고 도커를 통해 구축해보자. 아래 주소에 있는 docker 명령어와 compose 파일을 참고해서 스터디하고자 한다. https://gist.github.com/egoing/b62aa16573dd5c7c5da51fd429a5faa2 docker-compose.md GitHub Gist: instantly share code, notes, and snippets. gist.github.com [Docker 명령어] [Docker Comp.. 더보기
Docker Push (DockerHub, GitHub) 도커 이미지를 다른 사람과 공유하기 위해서 push를 통해 저장소인 docker hub 또는 git hub에 올릴 수 있다. Docker 공유하기 (Push) 1) 도커 허브에 로그인 또는 회원가입을 한 뒤 Repository를 생성한다. 2) 예시로 python3으로 만들면 아래 화면처럼 도커를 Push 할 예시 화면을 확인 할 수 있다. 3) 그럼 예시로 ubuntu OS에 Python3를 설치한 이미지를 도커 허브에 Push해보자 #ubuntu 이미지를 다운받는다. docker pull ubuntu #ubuntu 이미지를 실행 후 바로 명령어를 입력할 수 있게 옵션 -it으로 실행 (실행 이미지 이름은 my-python) docker run -it --name my-python ubuntu #apt.. 더보기
Docker Commit & Build 도커 Commit & Build 도커 커밋은 실행 중인 컨테이너를 백업하는 용도로 많이 사용되며 도커 빌드는 Dockerfile을 기준으로 새로운 이미지를 생성할때 많이 사용된다. 도커 Commit 도커허브를 통해 이미지를 다운받은 다음 run을 통해 실행하면 컨테이너가 실행된다 이때 컨테이너간의 공간이 독립적이기 때문에 run 명령어로 여러 컨테이너를 실행시킬 수 있다. 이후 개발자가 컨테이너에 작업을 하면 오직 해당 컨테이너에만 수정한 로직이 반영되기 이를 커밋을 통해 이미지로 만들고 싶은 것이다. 그럼 그 이미지를 run하여 여러 컨테이너로 실행할 수도 있고 push를 통해 도커허브와 같은 레지스트리에 올려 여러 사용자가 함께 사용할 수 있게 할 수도 있다. 이제 ubuntu를 다운받아 실행시킨 후.. 더보기
Docker 기본 개념 도커란 리눅스 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 계속 바뀌는 서버 환경과 개발 환경에 빠르게 대응할 수 있는 서버 플랫폼이다. 만약 PC 하나에 클라이언트와 웹서버 DB서버를 구성해야 된다면 어떻게 진행할 수 있을까?? 아마도 PC의 저장공간은 나눈 뒤 각각 OS를 설치해서 한 가지만 선택하려 구동하는 멀티부팅 방식으로 구성해야 될 것이다. 아니면 AWS로 서버를 대여하던지 버추얼머신같은 가상머신을 이용해야 될 것이다. 위의 3가지 방법 모두 많은 리소스 발생한다. 또한 AWS 만 제외하곤 둘다 호스트 서버의 자원을 나눠 써야 됨으로 성능 저하를 일으킨다. 도커는 가상머신과 비슷한 개념으로 이해해도 좋다. 가상머신의 그림처럼 구성할 경우 웹서버와 DB서버를 만들기 위해 OS를 설치해야 되는 번.. 더보기
[AWS] EC2 Linux에 Docker 설치하기 먼저, aws 무료 버전 인스턴스를 생성하고자 한다. 1. aws 사이트에 접속하여 개인계정을 생성한다. (aws 프리티어 서비스를 이용하면 1년 무료로 사용가능 함) https://aws.amazon.com/ko/ 클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services AWS IoT에 대한 새로운 소식 산업, 소비자, 상업 및 자동차 워크로드에 대한 IoT 데이터를 수집, 저장 및 분석하는 새로운 방식에 대해 알아보세요. 발표 내용 살펴보기 aws.amazon.com 1) 우측 상단 aws 계정 생성을 클릭한다. 2) 이메일 주소, 암호/확인, aws 계정 이름 및 결제 정보를 입력 후 본인확인까지 완료한다. 3) 사용할 플랜을 선택한다. (무료버전 선택) 4) 가입 후 콘솔로.. 더보기
[Effective JAVA] Item 16 public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 class Point { public double x; public double y; } 위와 같은 퇴보한 클래스는 데이터 필드를 직접 접근할 수 있음으로 캡슐화의 이점을 제공할 수 없다. class Point { private double x; private double y; public Point(double x, double y){ this.x = x; this.y = y; } public double getx(){ return this.x; } public double gety(){ return this.y; } public void setx(double x){ this.x = x; } public void sety(double y){ this.y = y; } } 이렇게 패키지 바깥에서 접근할 수.. 더보기
[Effective Java] Item 15 클래스와 멤버의 접근 권한을 최소화하라 잘 설계된 컴포넌트와 어설프게 설계된 컴포넌트의 차이는 얼마나 잘 숨겼느냐다. 잘 설계된 컴포넌트는 모든 내부 구현을 완벽히 숨겨, 구현과 API를 깔끔하게 분리한다. 오직 API를 통해서만 다른 컴포넌트와 소통함으로 이를 정보 은닉 또는 캡슐화로 부른다. 정보은닉의 장점은 1. 시스템 개발 속도를 높인다. 2. 시스템 관리 비용을 낮춘다. 3. 성능 최적화에 도움을 준다. (다른 컴포넌트에 영향을 주지 않고 최적화 작업을 수월하게 할 수 있음으로) 4. 소프트웨어 재사용성을 높인다. 5. 큰 시스템을 제작하는 난이도를 낮춘다.(시스템 전체가 완성되지 않더라도 개발 컴포넌트의 동작을 검증할 수 있기때문에) 정보은닉의 핵심을 접근 제한자의 사용에 있다. 이 핵심의 원리는 모든 클래스와 멤버의 접근성을 가능.. 더보기
[Effective Java] Item 14 Comparable을 구현할지 고려하라 Comparable의 compareTo는 Object의 equals와 동일하지만 2가지 다른점이 존재한다. 1. 동시성 비교 + 순서 비교 2. 제네릭 형태 Comparable을 구현한 객체는 순서가 존재함으로 Arrays.sort로 쉽게 정렬할 수 있다. ex) 명령줄 인수들을 중복 제거 후 알파벳 순으로 정렬 public static void main(String[] args){ Set s = new TreeSet(); //TreeSet (순서 정렬 + 중복제거) Collections.addAll(s, args); System.out.println(s); } String이 Comparatable을 구현되어있으므로 가능한 코드이다. 순서가 명확한 값 클래스를 작성한다면 반드시 Comparable 인터페.. 더보기

반응형