[DOCKER] 컨테이너 볼륨
·
DOCKER
컨테이너 볼륨 컨테이너를 삭제하면 컨테이너 계층 (Writable Layer)의 데이터가 모두 삭제 되기 때문에 컨테이너 데이터의 영속성을 유지하기 위해서 볼륨을 활용 컨테이너 이미지는 readonly 속성임, 컨테이너에 추가되는 데이터들은 별도의 RW 레이어에 저장되며 해당 방식을 Copy-on-Write 방식이라 하며, 파일을 효율적으로 공유하고 복사하는 방법임 컨테이너의 파일 시스템을 관리하기 위해서는 리눅스 커널이 지원하는 Storage 드라이버를 통해 Union File System을 이용해서 RO, RW 레이어가 하나인것 처럼 동작해줌 볼륨을 활용하지 않은 컨테이너가 동작하지 않으면, 데이터가 영구적으로 유지 되지 않기 때문에, 다른 프로세스나 컨테이너가 해당 데이터를 필요로 하는 경우 사용할..
[DOCKER] 컨테이너 관리
·
DOCKER
컨테이너 리소스 제한 기본으로 컨테이너는 호스트 하드웨어 리소스 사용제한을 받지 않음, 하지만 Docker 커맨드를 통하여 아래 리소스를 제한할 수 있음 CPU Memory Disk I/O docker run --help 명령어를 통해 확인 가능함 -m, --memory bytes Memory limit --memory-reservation bytes Memory soft limit --memory-swap bytes Swap limit equal to memory plus swap: '-1' to enable unlimited swap --memory-swappiness int Tune container memory swappiness (0 to 100) (default -1) --mount mount..
[CLEANCODE] 경계
·
CLEANCODE
경계 오픈소스, 라이브러리 같은 경우는 외부코드 해당하며, 우리가 만든 코드는 외부코드랑 병합을 해야함 우리코드, 외부코드를 깔끔하게 통합시키기 위해서는 경계를 지켜야함 경계 짓는 방법 우리코드를 보호하기 외부코드와 호환하기 외부라이브러리 테스트 우리 코드를 보호하기 우리코드를 보호하는 방법중에는 캡슐화를 잘 사용하는 것 캡슐화 : 객체의 실제 구현을 외부로부터 감추는 방식 안좋은 예시 Map sensors = new HashMap(); Sensor s = sensors.get(sensorId); Map 인터페이스가 제공하는 불필요한 기능이 노출하게 됨 외부코드가 함부로 호출하면 sensor 데이터가 손상될 수 있고, 의도와 벗어남 좋은 예시 public class Sensors { private Map..
[DOCKER] 계정 관리자 권한 부여
·
DOCKER
계정 관리자 권한 부여 Docker 관리자 권한 할당은 Root 계정으로만 가능함, 일반적으로 실무진행시 Root 계정을 부여안하기 때문에 Docker 사용시 해당 관리할 수 있는 권한의 계정을 부여해줘야함 -- Docker 접근 권한이 없어서 사용 불가 [dockeradmin@plat02 ~]$ docker ps Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission ..
[DOCKER] 삭제방법
·
DOCKER
Docker 삭제 컨테이너를 모두 중지하고 삭제 저장된 이미지를 모두 삭제 Docker 서비스, 컨테이너 서비스 중지 docker package 삭제 /var/lib/docker 아래의 모든 파일 디렉토리 삭제 /var/run 아래에서 docker.sock, docker.pid 파일 docker디렉토리 삭제 컨테이너 모두 중지하고 삭제 [root@plat02 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3adac0671371 centos "/bin/bash" 3 days ago Up 3 days plat-ser ver2 d8fd84d11f0f centos "/bin/bash" 3 days ago Exited (130) 3 ..
[DOCKER] 설치
·
DOCKER
도커 설치방법 Repository를 이용한설치 Download 후 직접설치 Script를 이용한설치 회사에서는 설치시 외부 인터넷망이 접근이 안되기 때문에 수동으로 다운받아서 직접 설치하지만, 일반적으로는 Repository를 이용하여 설치함 Repository를 이용해서 설치 Docker.com에서 docker package를 저장하는 Repository를 이용하여 실시간으로 다운받아서 설치 Centos 환경에서 Docker 설치방법 Repository 설정 Docker 엔진 설치 Docker 구동 Root 계정으로 설치를 진행하였음 Respository 설정 -- 패키지 설치, 최신버전 설치 확인 [root@plat02 ~]# yum install -y yum-utils Loaded plugins: ..
[CLEANCODE] 객체와 자료구조
·
CLEANCODE
자료구조 VS 객체 자료구조와 객체 사용은 상황에 맞게 선택해서 사용하면 됨 자료구조 객체 데이터 그 자체 비즈니스 로직과 관련 자료를 공개함 자료를 숨기고, 추상화, 자료를 다루는 함수만 공개 변수 사이에 조회 함수와 설정 함수로 변수를 다룬다고 해도 객체가 되는 것은 아님 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있음 자료구조를 사용하는 절차적인 코드는 기본 자료구조를 변경하지 않으면서 새 함수를 추가하기 쉬움 절차적인 코드는 새로운 자료구조를 추가하기 어려움, 모든 함수를 고쳐야함 객체지향 코드는 기존 함수를 변경하지 않으면서, 새 클래스를 추가하기 쉬움 객체지향 코드는 새로운 함수를 추가하기 어려움, 추가하려면 모든 클래스를 고쳐야함 ' 객체 - 디미터의 법칙 모..
[CLEANCODE] 형식맞추기
·
CLEANCODE
적절한길이 유지 코드 길이가 200라인을 넘어간다면, 클래스가 여러개의 일을 하고 있을 가능성이 높음 (SRP에 위배) 현업에서는 대부분의 코드들도 200라인을 유지 함 밀접한 개념은 가까이 행 묶음은 완결된 생각 하나를 표현하기 때문에, 개념은 빈 행으로 분리 변수는 사용되는 위치에서 최대한 가까이 선언해야함 Java Class 선언형식 static 변수 : public -> protected -> package -> private instance 변수 : public -> protected -> package -> private 생성자 메서드 순서 : public 메서드에서 호출되는 private 메서드는 그아래에 둠, 가독성 위주로 그룹핑을 해야함 형식 맞추기 즉 코드 컨벤션은 팀 코딩 컨벤션을 정..
[CLEANCODE] 주석
·
CLEANCODE
주석을 최대한 쓰지 말자 주석은 나쁜 코드를 보완하지 못한다 주석은 방치된다 주석은 나쁜 코드를 보완하지 못한다 주석이 추가되는 일반적인 이유는 코드 품질이 나쁘기 때문임 좋은 코드로 주석 없이 의도를 표현 할 수 있음 주석으로 설명하지 말고 코드를 개선하는데 시간을 투자해야함 주석은 방치된다 코드의 변화에 따라가지 못하고, 방치 코드는 컴파일 되어 호출되지만, 주석은 그자리에 방치되고 결국 의미없는 텍스트가 됨 좋은 주석 의도와 중요성을 설명 TODO, FIXME 주석 의도와 중요성 설명 // 사용자로부터 입력 받은 값을 저장할 때 trim으로 공백제거 필요 String name = nameInput.trim(); 의도와 중요한 부분을 설명해주는 것은 좋은 주석 TODO, FIXME TODO : 앞으로..