Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
IaC(Infrastructure as Code)를 위해 사용할 수 있는 Vagrant에 대해 정리하고 실습해 보자. 코드형 인프라(Infrastructure as Code, IaC)는 수동 프로세스가 아닌 코드를 통해 인프라를 관리하고 프로비저닝하는 것을 말합니다. IaC를 사용하면 인프라 사양을 담은 구성 파일이 생성되므로 구성을 편집하고 배포하기가 더 쉬워집니다. 또한 IaC는 매번 동일한 환경을 프로비저닝하도록 보장합니다. IaC는 구성 사양을 코드화하고 문서화함으로써 구성 관리를 지원하며, 따라서 구성 변경 사항을 문서화하지 않고 임시로 변경하는 일을 막을 수 있습니다. - Red Hat 코드형 인프라(IaC)란? - Vagrant Vagrant는 소프트웨어 개발 프로세스를 단순화하고 표준화하는..
Docker 3 Tier 환경 모두 같은 bridge에 위치시켜 서로 간의 통신은 가능하게 하고, Web server만 포트를 외부로 노출시키자. 같은 브릿지 내에서는 container의 이름으로 IP가 매칭되므로 세부 ip 세팅은 신경 쓰지 말자. Web server 컨테이너 Httpd image를 사용할 것이다. Httpd는 apache server의 image이지만, 세팅 방식이 상당히 다르다. docker run -itd --name web -p 8080:80 --network my_network httpd --netowork : 자신이 새로 생성한 network bridge의 이름을 넣어주자. #컨테이너 접속 docker exec -it httpd /bin/bash #접속 후 편집기 설치 apt..
Wordpress와 Mysql을 사용하여 2 Teir 환경을 컨테이너에서 세팅해 보자. Wordpress와 Mysql은 같은 bridge와 연결하여 통신이 가능하게 하고, 다른 컨테이너와 분리한다. 외부로 노출되는 port는 Wordpress에 새로운 Bridge를 연결하여 Host pc에서 접속이 가능하게 한다. 이때 접속을 위해 사용하는 것이 Docker0에 연결하는 DNS container이다. Wordpress 와 MySQL 연동 Mysql 설치 docker run -d --name mysql --network my_network -v mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=wordpress -e MYSQL_DATABASE=wordpress -e MYSQL_..
Docker image 파일을 다양한 방법으로 백업해 보자. 1. Docker Hub에 public한 백업 2. VM의 저장소에 SCP로 백업(private) 3. Docker Registry container에 private한 백업 image들을 백업하는 방식도 있지만, -v 옵션으로 특정 경로의 데이터만 마운트 시켜서 저장하는 방식도 백업에 일종으로 볼 수 있다. 컨테이너는 외부에 데이터를 저장하고 컨테이너는 그 자체로 동작하는 stateless 설계가 매우 바람직하다. 따라서 전체 Image가 아닌 데이터만 따로 백업하는 방식이 효율적일 수 있다. 어떤 상황에서 어떤 전략이 최선일지 판단하기 위해 서로 간의 차이를 명확히 알아두는 것이 중요하다. 1. Docker Hub에 public한 백업 이전 ..
컨테이너의 storage 받아온 image는 변경이 불가능하고 container layer에 작업하게 된다. 계층별로 디자인을 위에서 찍는 그림이 유니온 파일 시스템이다. 한번에, 오버레이하여 서로 겹치지만 않으면 된다. 겹치면 위에 것이 읽히고, 아래 데이터는 보호할 수 있다. 최종적으로 맨 위에 쌓이는 계층이 읽기 쓰기를 제공하므로, 우리는 읽기 쓰기가 되는 것처럼 보인다. 하지만 Image layer는 읽기 전용이므로 변경이 되지 않는다. 즉, 우리가 컨테이너에서 변경하던 것은 container layer이었다.이였다. 유니온 파일 시스템 유니온 파일 시스템은 여러 개의 파일 시스템을 하나의 단일 파일 시스템으로 합치는 기술이다. 이것은 여러 개의 디렉터리와 파일들을 하나로 통합하여, 사용자에게는 ..
만약 작업 중에 container가 강제 종료 된다면 지금까지 작업한 것이 물거품이 될 수 있다. 따라서 실행 중인 도커 파일을 docker hub에 업로드하자. 일단 도커 허브에 가입하자. Docker commit docker commit으로 실행중인 컨테이너로 이미지를 만들 수 있다. docker commit dns-server everenew/dns-jin:latest Docker login Docker login으로 docker hub에 로그인하자. 일단 repository를 만들어 준다. 본인의 경우는 dns-jin로 만들었기 때문에, 아이디가 앞에 붙어 everenew/dns-jin라는 이름 등록이 된다. 이름이 everenew/dns-jin인 이미지를 push 할 수 있으므로 이름이 잘못 설..
최종 완성 DNS image 바로 실행하기 docker run -d --name dns-server -p 53:53/udp --restart=always everenew/dns-jin:latest https://hub.docker.com/repository/docker/everenew/dns-jin Docker hub.docker.com 아래에서는 글은 위의 이미지를 만들기 위한 세팅 방법과 연결 테스트 정보를 담았다. DNS 이미지 실행 docker run -d --name dns-server -p 53:53/udp --restart=always sameersbn/bind:latest ubuntu에 bind9 이 설치된 이미지이다. UDP 53번 포트는 DNS 프로토콜이 동작하는 포트이므로 이를 노출시..
Ubuntu docker 설치 가이드 https://docs.docker.com/engine/install/ubuntu/ Install Docker Engine on Ubuntu Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu. docs.docker.com Jenkins Jenkins는 지속적인 통합(Continuous Integration, CI) 및 지속적인 배포(Continuous Deployment, CD)를 지원하는 오픈 소스 자동화 도구이다. Jen..
인증서를 사용하는 목적 암호화가 없는 패킷은 그 내용이 외부에 모두 드러날 수 있다.VPN은 암호화 통신의 방식 중 하나이지만, 모든 클라이언트에게 VPN을 연결하는 서비스는 말이 안 된다. 따라서 인증서를 통한 암호화가 서비스 오픈에는 필수적이다.HTTPS를 위한 CA를 구현해 보자. 구현에 집중하기 위해 모두 같은 네트워크를 사용하여 통신하게 하자.CA: 100.1.2.6Server: 100.1.2.4Window client: 100.1.2.7 SSL과 TSL를 제공하는 OpenSSL 지금까지 ssh 접속을 위해 사용하던 openssl에 대해서 알아보자. OpenSSL은 암호화와 보안 프로토콜을 구현하는 오픈 소스 라이브러리이다. TLS(Transport Layer Security) 프로..
* 정적으로 디스크 크기를 세팅한 경우에만 해당한다. * VM을 사용하다보면 용량이 부족해질 때가 있다. 특히 도커를 사용하면 용량이 순식간에 부족해진다. 현재 최상위 디렉토리의 용량이 100%로 사용 중이다. 100%가 사용되면 명령어 조차 먹지 않을 때가 있으므로 VM의 저장소 용량을 늘려보자. 도구 -> 가상 미디어 관리자 해당 VM에 장착된 vdi의 용량을 늘린다. 이처럼 정적으로 세팅된 경우 용량을 늘려줄 수 있다. 하지만 적용을 누른다고 VM에서 용량이 바로 증가하진 않기 때문에 free 용량을 사용하는 명령어를 넣어 어야 한다. sudo lvextend -r -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv 논리 볼륨의 크기를 확장하려면 lvextend 명령..