본문 바로가기

서버17

[aws] Spring Boot AWS UBUNTU 배포 먼저 간단하게 새로운 인스턴스를 만들어준다. 그리고 보안그룹, 인바운드 규칙에서 Spring에서 사용하는 포트를 추가해준다 나같은 경우에는 8090 으로 추가해주었다. 그리고 jar파일로 배포를 해주어야 한다. Gradle에서 build 안에있는 톱니바퀴를 더블 클릭 해주면 jar 파일이 생긴다. build를 성공하면 libs 파일에 .jar파일이 생긴다 이것을 AWS에 넣는 작업을 해야한다. git bash를 사용할 수도 있는데 나는 xShell을 사용하였다. xShell 설치 후 새 새션을 등록해준다. 호스트 번호는 EC2, 퍼블릭 IPv4 주소를 넣어주면 된다 그리고 pem 키로 접속해주면 된다 참고로 접속 아이디는 ubuntu가 디폴드 값이다 ( 비밀번호는 없음) 그리고 FileZilla를 사용해.. 2022. 5. 21.
[aws] xShell, ec2 aws 18.04 version, RedisDB 설치 먼저 aws 가입 후 ec2 인스턴스를 생성해준다 이때 Ubuntu 18.04 버전으로 설정해준다. Xshell을 사용해서 서버 연결을 해줄 예정이다 호스트를 입력하는 곳에 퍼블릭 IPv4 주소를 입력해준다 그 후 연결을 눌러준 뒤 사용자 이름 입력칸에 ubuntu를 입력해준다 그 후 public Key에 미리 받아두었던 사용자 키를 넣어준다 암호는 설정하지 않았기 때문에 비워 두고 확인 버튼을 눌러준다 CentOs에서는 Yum을 사용하는데 Ubuntu에서는 apt-get을 사용해서 설치해준다 관리가 편해서 Yum을 강제로 설치하는 경우가 있는데 그냥 apt-get을 사용해주자 sudo apt-get update sudo apt-get upgrade sudo apt-get install redis-ser.. 2022. 5. 19.
[도커] Dockerfile 빌드 이미 만들어 놓은 Dockerfile을 빌드해보겠다-t 옵션은 생성될 이미지의 이름을 설정한다 최종적으로 mybuild:0.0 이라는 이미지가 생성된다 docker build -t mybuild:0.0 ./ 다음 명령어를 입력해 생성된 이미지로 컨테이너를 실행해본다 docker run -d -P --name myserver mybuild:0.0 -P 옵션은 이미지에 설정된 EXPOSE의 모든 포트를 호스트에 연결하도록 설정한다 다음 명령어로 컨테이너와 연결된 호스트의 포트를 확인할 수 있다 docker port myserver 빌드 과정 이미지 빌드를 시작하면 도커는 가장 먼저 컨텍스트를 읽어 들임 빌드 컨텍스트는 이미지를 생성하는 데 필요한 각종 파일, 소스코드, 메타데이터 등을 담고 있는 디렉터리를 .. 2022. 3. 5.
[도커] Dockerfile 이미지 생성 개발한 어플리케이션을 컨테이너화 할때 아래와 같은 과정을 갖는다 아무것도 존재하지 않는 이미지 (우분투, CentOS 등)으로 컨테이너 생성 애플리케이션을 위한 환경을 설치하고 소스코드 등을 복사해 잘 동작하는 것을 확인 컨테이너를 이미지로 커밋 위와 같은 방법을 사용하면 컨테이너화 할때마다 같은 일을 반복해야하는 지루함을 느낄 수있다 이것을 해결하기 위해 등장한 것이 Dockerfile 이다 Dockerfile 작성 Dockerfile에는 컨테이너에서 수행해야 할 작업을 명시한다 도커를 위한 특수한 파일인 만큼 기존의 스크립트 언어와 비교했을 때 완전히 새로운 방식으로 쓰인다 하지만 알아둬서 나쁠 것은 없으니 한번 알아보자 # mkdir docker file && cd dockerfile .. 2022. 3. 4.
[도커] 도커 이미지 도커 이미지 모든 컨테이너는 이미지를 기반으로 생성된다 이미지를 구성하는 요소로는 저장소, 이미지 이름, 태그가 있다 docker create, docker run, docker pull 명령어를 통해서 도커 허브에서 이미지를 내려 받을 수 있다 docker search ubuntu 명령어를 통해서 starts 수 만큼 사용자가 이미지를 얼마나 즐겨찾기 했는지 알 수 있다 도커 이미지 생성 도커를 pull 해서 내려받아 사용할 수도 있지만 사용자가 만들어서 사용하는 경우도있다 다음 명령어를 통해서 이미지로 만들 컨테이너를 생성한다 docker run -i -t --name commit_test ubuntu:14.04 docker commit \\ -a "alicek106" -m "my first comm.. 2022. 3. 2.
[도커] Block I/O 제한 Block I/O 제한 컨테이너가 블록 입출력을 과도하게 사용하지 않게 설정하려면 run 명령어에서 —device-write-bps, —device-read-bps —device-write-iops, —device-read-iops 옵션을 지정해서 블록 입출력을 제한할 수 있음 다음 명령어로 컨테이너를 생성하면 초당 쓰기 작업의 최대치가 1MB로 제한됩니다 docker run -it \\ --device-write-bps /dev/xvda:1mb \\ ubuntu:14.04 이렇게 생성된 컨테이너에서 쓰기 작업을 테스트 해보면 초당 속도가 1MB로 제한되는 것을 알 수 있음 dd if=/dev/zero of=test.out bs=1M count=10 oflag=direct 다음 명령어로 상대값 입력으로 .. 2022. 3. 2.
[도커] 컨테이너 제한 컨테이너 메모리 제한 docker run 명령어에 —memory를 지정하여 컨테이너의 메모리를 제한할 수 있다 명령어는 다음과 같이 입력한다 docker run -d \\ --memory="1g" \\ --name memory_1g \\ nginx 스왑 메모리 docker run -it --name swap_500m \\ --memory=200m \\ --memory-swap=500m \\ ubuntu:14.04 스왑 메모리는 기본적으로 메모리의 2배로 자동 설정되지만 —memory-swap 명령어로 따로 설정해줄 수 있다 컨테이너 CPU 제한 —cpu-shares 옵션은 컨테이너에 가중치를 설정해 해당 컨테이너가 CPU를 상대적으로 얼마나 사용할 수 있는지를 나타낸다 쉽게 말해서 CPU를 하나씩 할당하.. 2022. 3. 1.
[도커] fluentd 로깅 fluentd는 각종 로그를 수집하고 저장할 수 있는 기능을 제공하는 오픈소스 도구이다 fluentd는 데이터 포맷으로 JSON을 사용하기 때문에 쉽게 사용할 수 있을뿐만 아니라 수집되는 데이터를 AWS S3, HDFS (Hadoop Distributed File System), MongoDB 등 다양한 저장소에 저장할 수 있다는 장점이 있다 fluentd와 몽고DB와 연동해 데이터를 저장해보겠다 로그가 수집되는 순서 도커 서버 → 로그 수집 → fluentd 서버 → 로그 저장 → MongoDB 서버 위와 같은 순서를 적용하기 위해서 서버를 다음과 같이 설정해준다 도커 서버: 192.168.0.100 fluentd 서버 : 192.168.0.101 몽고DB 서버 :192.168.0.102 fuentd .. 2022. 2. 28.
[도커] json-file 로그 사용하기 컨테이너 내부에서 어떤 일이 일어나는지 아는것은 운영 측면에서 굉장히 중요하다 우선 컨테이너를 생성해서 간단한 로그를 남겨보자 docker run -d --name mysql \\ -e MYSQL_ROOT_PASSWORD=1234 \\ mysql:5.7 -d 옵션을 사용하여 백그라운드 모드로 컨테이너를 실행 따라서, 어플리케이션이 잘 구동되는지 여부를 알 수 없지만 docker logs 명령어를 써서 컨테이너의 표준 출력을 확인함으로써 어플리케이션 상태를 알 수 있음 docker logs mysql 만약 -e 옵션을 안쓰고 컨테이너를 만들경우 docker start를 해도 컨테이너는 다시 시작되지 않음 이때 docker logs mysql을 사용하여 문제가 무엇인지 알 수 있음 이렇게 원인을 알 수 없는.. 2022. 2. 28.
[도커] 브리지 네트워크와 —net-alias 브리지 타입의 네트워크와 run명령어의 —net-alias 옵션을 함께 쓰면 특정 호스트 이름으로 컨테이너를 여러개 접근할 수 있음 docker run -i -t -d --name network_alias_container \\ --net mybridge \\ --net-alias alicek106 ubuntu:14.04 docker run -i -t -d --name network_alias_container2 \\ --net mybridge \\ --net-alias alicek106 ubuntu:14.04 docker run -i -t -d --name network_alias_container3 \\ --net mybridge \\ --net-alias alicek106 ubuntu:14.04 세.. 2022. 2. 25.
[도커] 도커 네트워크 도커 네트워크 구조 도커는 컨테이너 내부 ip를 순차적으로 할당한다 이 ip는 컨테이너를 재시작할 때마다 변경될 수 있다 내부 ip는 도커가 설치된 호스트, 즉 내부 망에서만 쓸 수 있는 ip이므로 외부와 연결될 필요가 있다 이 과정은 컨테이너를 시작할 때마다 호스트에 veth(vitual) 라는 네트워크 인터페이스를 생성하면서 이루어진다 veth 인터페이스는 사용자가 직접 생성할 필요는 없으며 컨테이너가 생성될 때 도커 엔진이 자동으로 생성함 이말은 즉, 실행중인 컨테이너 수만큼 veth로 시작하는 인터페이스가 생성된다 이때 docker() 브리지도 같이 생성되는데 브리지의 역할은 각 veth 인터페이스와 바인딩돼 호스트의 eth() 인터페이스와 이어주는 역할을 한다 도커 네트워크 기능 컨테이너를 생성.. 2022. 2. 25.
[도커] 도커 볼륨 도커 볼륨 도커의 문제점 도커에서 이미 생성된 이미지는 어떤 경로도 변경되지 않으며, 컨테이너 계층에 원래 이미지에서 변경된 파일시스템 등을 저장함 이미지에 mysql을 실행하는데 필요한 어플리케이션 파일이 들어있다면 컨테이너 계층에는 워드프레스에서 쓴 로그인 정보나 게시글 등과 같이 데이터베이스를 운용하면서 쌓이는 데이터가 저장됨 여기서 도커의 치명적인 단점이 발견이되는데 내가 쓰고 있는 mysql을 삭제하면 계층에 저장되어있던 데이터베이스의 정보도 삭제된다 도커는 컨테이너 생성과 삭제가 매우 쉬우므로 실수로 컨테이너를 삭제하면 데이터를 복구할 수 없게된다 해결방법 컨테이너의 데이터를 영속적 데이터로 활용하는 방법이다 그 중 하나가 도커 볼륨이다 도커 볼륨 호스트와 볼륨을 공유한다 불륨 컨테이너를 활용.. 2022. 2. 24.
[도커] 컨테이너 어플리케이션 구축 웹 서버 바인딩 서비스를 컨테이너화 할 때 여러 개의 어플리케이션을 한 컨테이너에 설치할 수 있지만, 컨테이너에 어플리케이션을 하나만 동작시키면 컨테이너 간의 독립성을 보장함과 동시에 어플리케이션의 버전 관리, 소스코드 모듈화 등이 더욱 쉬워짐 데이터베이스와 웹 서버 컨테이너를 구분하는 편이 도커 이미지를 관리하고 컴포넌트의 독립성을 유지하기가 쉽다 한 컨테이너에 프로세스 하나만 실행하는 것이 도커 공식 홈페이지에서도 권장하는 구조임 mysql 이미지를 사용해 데이터베이스 컨테이너를 생성 가독성을 위해서 \을 사용하여 명령어를 입력해줌 위에 준비된 워드프레스 이미지를 이용해 워드프레스 웹 서버 컨테이너를 생성 워드프레스 웹 서버 컨테이너의 -p 옵션에서 80을 입력했으므로 호스트의 포트 중 하나와 컨테이너의 80번 포트.. 2022. 2. 21.
[도커] 컨테이너 삭제 컨테이너 삭제 컨테이너 삭제 docker rm NAMES 컨테이너 확인 docker ps -a 컨테이너를 삭제할때 실행 중인 컨테이너는 삭제할 수 없으므로 컨테이너를 정지한 후 삭제하거나 강제로 삭제할 수 있는 옵션을 추가해준다 종료 후 삭제docker rm mycentos docker stop mycentos 실행 중인 컨테이너를 강제로 삭제 docker rm -f mycentos 생성한 컨테이너를 모두 삭제 docker container prune -a와 -q 옵션을 조합하여 컨테이너를 삭제 -a는 컨테이너의 상태와 관계 없이 모든 컨테이너를, -q는 컨테이너의 ID만 출력하는 역할docker rm $(docker ps -a -q) docker stop $(docker ps -a -q) 2022. 2. 19.
[도커]리눅스 putty 연결 리눅스 putty 연결 ifconfig를 사용하기 위해 net-tools 다운로드 sudo apt install net-tools ifconfig를 입력하여 네트워크 번호를 알아냄 연결을 위한 ssh 설치 sudo apt-get install ssh 포트번호 입력 후 연결 ubuntu에 초기설정한 아이디 비밀번호 입력 후 연결 연결 완료 2022. 2. 19.
[도커] 리눅스 환경에서 컨테이너 활성화하기 리눅스 환경에서 컨테이너 활성화하기 리눅스 환경에 도커 다운로드하기 sudo apt install docker.io 도커 버전 확인 docker -v 첫 번째 컨테이너 생성 docker run -i -t ubuntu:14.04 ubuntu:14.04는 컨테이너를 생성하기 위한 이미지의 이름 -i : 상호 입출력을 사용하도록 컨테이너를 설정 -t : tty를 활성화해서 배시(bash) 셸을 사용하도록 컨테이너를 설정 오류 발생 docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.24.. 2022. 2. 17.
[도커] 도커 이미지와 컨테이너 도커 이미지와 컨테이너 도커 엔진의 핵심 이미지 컨테이너 구성 요소 도커에서 사용하는 이미지의 이름은 기본적으로 [저장소 이름]/[이미지 이름]:[태그]의 형태로 구성 저장소 이름 : 이미지가 저장된 장소를 의미함. 저장소 이름이 명시되지 않은 이미지는 도커에서 기본적으로 제공하는 이미지 저장소인 도커 허브의 공식 이미지를 뜻함. 그러나 이미지를 생성할 때 저장소 이름을 명시할 필요는 없으므로 생략하는 경우도 있음 이미지 이름 : 이미지가 어떤 역할을 하는지 나타냄. 이미지의 이름은 생략할 수 없으며 반드시 설정해야 함 태그 : 이미지의 버전 관리, 혹은 리비전 관리에 사용함. 일반적으로 14.04와 같이 버전을 명시하지만 태그를 생략하면 도커 엔진은 이미지 태그를 latest로 인식 설명 이미지로 컨테.. 2022. 2. 17.