본문 바로가기
반응형

DevOps128

[Docker] : Remote API 라이브러리를 이용한 도커 사용 필요에 따라 -H 옵션을 통해 원격의 도커 데몬을 제어하기 위해 사용하는 것도 좋지만 컨테이너 애플리케이션이 수행 할 작업이 많거나 초기화 등에 복잡한 과정이 포함되어 있다면 도커를 제어하는 라이브러리를 사용해 좀 더 쉽게 해결이 가능하다. 도커를 제어하고 싶을 때 Remote API에 대한 요청을 소스코드로 코딩 할 필요가 없고, 이미 만들어 놓은 라이브러리를 통해 사용할 수 있다. 이런 라이브러리 목록은 SDK 페이지에서 확인이 가능하다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 3. 2.
[Docker] : CAdvisor CAdvisor 구글이 만든 컨테이너 모니터링 도구로 컨테이너로서 간단히 설치할 수 있고 컨테이너별 실시간 자원 사용량 및 도커 모니터링 정보 등을 시각화해 보여준다. CAdvisor는 오픈소스로 깃허브에서 소스코드로 사용할 수 있고 도커 허브에서 도커 이미지로도 배포하고 있다. docker run \\ --volume=:/:/rootfs:ro \\ --volume=/var/run:/var/run:ro \\ --volume=/sys:/sys:ro \\ --volume=/var/lib/docker/:/var/lib/docker:ro \\ --volume=/dev/dis/:/dev/disk:ro \\ --publish=8080:8080 \\ --detach=true \\ --name=cadvisor \\ g.. 2022. 3. 2.
[Docker] : events, stats, system df 명령어 events, stats, system df 명령어 events events 명령어는 도커가 실시간 스트림 로그로 어떤 일이 일어나고 있는지 보여주는 기본적으로 제공하는 명령어이다. 사용법은 간단하다. docker events docker system events 위 명령어를 입력하고 어떤 이벤트도 도커 데몬에 발생하지 않아서 따로 출력 되는 게 없다. docker pull ubuntu:14.04 새로운 터미널을 열어 이미지를 pull해 본다. docker events 이미지를 pull하고 난 뒤 확인해 보면 로그 기록이 출력이 되는 것을 확인할 수 있다. 이처럼 도커 데몬에서 실행되는 명령어의 결과를 로그로 출력하는데 도커 클라이언트에서 입력된 모든 명령어를 출력하지는 않고 attach, commit,.. 2022. 3. 2.
[Docker] : 도커 데몬 디버그 명령어 도커 데몬에서 어떤 일이 일어나고 있는지 확인하기 위해 디버그 옵션으로 실행을 한다. 이렇게 하면 Remote API의 입출력, 로컬 도커 클라이언트 명령어 등을 로그로 출력한다. dockerd -D 명령어로 간단하게 확인할 수 있다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 3. 1.
[Docker] : overlay2에서 컨테이너 저장 공간 설정하기 overlay2를 스토리지 드라이버로 사용하고 있고 도커 데이터가 저장되어 있는 디스크가 xfs 파일 시스템일 경우 project quota 기능으로 컨테이너의 저장 공간을 제한할 수 있다. mkfs.xfs /dev/xvdf xfs 파일 시스템으로 포맷한다. mkdir /mnt/xfs mount /dev/xvdf /mnt/xfs -o rw,pqota 디렉터리 생성 후 디스크 마운트. DOCKER_OPTS="--storage-driver=overlay2 --data-root=/mnt/xfs" 도커 데몬 옵션에 추가해준다. —data-root에 옵션 값을 지정하면 해당 경로에 도커의 데이터가 새롭게 저장된다. docker info | grep Storage docker info | grep Backing 스.. 2022. 3. 1.
[Docker] : devicemapper 컨테이너 저장 공간 설정하기 CentOS는 도커 엔진이 devicemapper를 기본적으로 사용하도록 되어 있다. 여기서 컨테이너의 저장 공간을 확인해 본다. docker info | grep devicemapper docker run -it --name ubuntu ubuntu:14.04 df -h 확인해 보면 10GB의 저장 공간을 할당 받고 있는 것을 확인할 수 있다. 우분투에서 30GB를 모두 할당 받고 있는 것과는 차이가 있다. 이처럼 각 스토리지 드라이버마다 저장 공간을 할당하는 방식이 다르다. 하지만 일부 스토리지 드라이버는 저장 공간을 제한하는 것이 가능한데 devicemapper는 아래 코드를 도커 데몬 옵션에 넣으면 된다. DOCKER_OPTS="--storage-driver=devicemapper --storag.. 2022. 3. 1.
[Docker] : 컨테이너 저장 공간 체크하기 컨테이너 내부에서 사용되는 파일시스템 크기는 도커가 사용하고 있는 스토리지 드라이버에 따라 조금씩 다르다. 도커 엔진이 스토리지 드라이버를 사용하도록 되어있다면, 컨테이너는 호스트와 저장 공간의 크기를 공유한다. docker info | grep overlay2 docker run -it --name ubuntu ubuntu:14.04 df -h 사용 중인 드라이버와 용량을 체크해 본다. 2022. 3. 1.
[Docker] : ZFS 드라이버 사용하기 ZFS는 압축, 레플리카, 데이터 중복 제거 등 다양한 기능을 제공하지만 라이센스 문제로 리눅스 커널에 기본적으로 탑재되어 있지 않아 따로 설치해야 한다. CentOS 보다는 Ubuntu에서 사용하는 것을 권장한다. service docker stop 도커 데몬을 정지한다. apt install zfsutils-linux ubuntu 16.04와 18.04에서는 위 명령어로 zfs 관련 유틸을 설치할 수 있다. modprobe zfs 위 명령어로 모듈을 로드한다. zpool create -f zpool-docker /dev/xvdb 새로운 zpool을 생성한다. 뒤에 /dev/xvdb는 디바이스에 맞게 이름을 입력하면 된다. zfs create -o mountpoint=/var/lib/docker zpo.. 2022. 3. 1.
[Docker] : Devicemapper 드라이버 사용하기 Deivcemapper 드라이버는 레드헷 계열의 리눅스를 위해 개발된 스토리지 드라이버다. CentOS 등 포함한 대부분 리눅스 배포판에서 사용할 수 있지만 성능상 이유로 더 이상 사용하지 않는 것을 권장하고 있다. 대체로 overlay 혹은 overlay2 스토리지 드라이버를 사용하는 게 좋다. vi /etc/default/docker 도커 설정에 들어간다. DOCKER_OPTS="--storage-driver=devicemapper" 이렇게 Devicemapper 스토리지 드라이버를 사용하게 해준다. service docker restart 재시작은 꼭 해준다. ls -la /var/lib/docker/devicemapper/devicemapper/ 무려 100GB 크기의 data 파일이 생성되어 있.. 2022. 3. 1.
[Docker] : AUFS 드라이버 사용하기 AUFS는 데비안 계열에서 기본적으로 사용할 수 있는 드라이버고 오래 사용되어 왔기 때문에 안정성이 좋다고 평가받지만 커널에 포함되어 있지 않아 일부 운영체제에서 사용할 수 없다.(RHEL, CentOS 등) vi /etc/default/docker 우분투에서 환경 설정하는 경로이다. DOCKER_OPTS="--storage-driver=aufs" 이런 설정을 편집기로 추가를 해준다. service docker restart 환경 설정 후 재시작을 꼭 해준다. grep aufs /proc/filesystems AUFS 드라이버를 사용할 수 있는 리눅스 배포판인지 확인을 해본다. nodev aufs라는 출력이 나오면 AUFS를 사용할 수 있는 것이다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하.. 2022. 2. 28.
[Docker] : 스토리지 드라이버 원리, CoW 및 RoW 그리고 이미지와 컨테이너 컨테이너와 이미지의 기본 원리는 이미지는 읽기 전용 파일로 사용되고 컨테이너는 이 위에 컨테이너 레이어를 생성해서 컨테이너의 고유 공간을 생성하는 것이지만 실제로 컨테이너 내부에서 읽기, 쓰기 작업이 일어날 때 드라이버에 따라 Copy on Write(CoW) 혹은 Redirect-on-Write(RoW) 개념을 사용한다. 스냅숏은 원본 파일은 읽기 전용으로 사용하고 이 파일이 변경되면 새로운 공간을 할당하는 것인데 스토리지를 스냅숏으로 만들면 스냅숏 안에 파일이 어디에 저장되어 있는지가 목록으로 저장된다. 이 스냅숏을 사용하다 파일 안에 변화가 생기면 변경된 내역을 따로 관리해 스냅숏을 사용한다. CoW는 스냅숏의 파일에 쓰기 작업을 수행할 때 스냅숏 공간에 원본 파일을 복사하고 쓰기 요청을 반영한다... 2022. 2. 28.
[Docker] : 도커 스토리지 드라이버 변경하기 --storage-driver 도커는 스토리 백엔드 기술로 컨테이너와 이미지를 저장, 관리한다. 보통 자동 설치가 되어 있는데 데미안 계열 운영체제는 deviceampper를 사용하는 것이 대표적이다. docker info | grep "Storage Driver" 위 명령어로 확인할 수 있다. 스토리지 드라이버는 도커 데몬 옵션 중 —storage-driver를 통해 사용할 수 있고 지원하는 드라이버는 OverlayFS, AUFS, Btrfs, Devicemapper, VFS, ZFS 등이 있다. 이 중 하나를 선택해 도커에 적용할 수 있고 적용하게 되면 스토리지 드라이버에 따라 컨테이너와 이미지가 별도로 생성된다. docker --storage-driver=devicemapper 별도 생성된 Devicemapper 파일은 /var.. 2022. 2. 28.
[Docker] : 도커 데몬에 보안 적용하기 --tlsverify 도커 데몬에 보안 적용하기 --tlsverify 도커 설치 시 보안 연결 설정이 안되어 있다. 실제 운영 환경에서 도커를 사용한다면 보안을 적용해야 한다. 아니면 Remote API를 위해 바인딩된 IP 주소와 포트 번호만 알면 도커를 제어할 수 있기 때문이다. 보안을 적용할 때 사용될 파일은 총 5개다. ca.pem server-cert.pem server-key.pem cert.pem key.pem 클라이언트가 도커 데몬에 접근하기 위해 필요한 파일이 ca.pem, cert.pem, key.pem이다. 서버측 파일 생성 mkdir keyss && cd keys openssl genrsa -aes256 -out ca-key.pem 4096 1. 마지막에 비밀번호를 두 번 입력해 줘서 인증서에 사용될 키.. 2022. 2. 28.
[Docker] : 도커 데몬 제어 명령어 -H 도커 데몬 제어 : -H -H 옵션은 도커 데몬의 api를 사용할 수 있는 방법을 추가한다. dockerd dockerd -H unix:///var/run/docker.sock 아무런 옵션을 설정하지 않고 실행하면 /var/run/docker.sock을 사용하기 때문에 위에 두 명령어는 차이점이 없는 셈이 된다. -H에 IP 주소와 포트 번호를 입력하면 원격 API인 Docker Remote API로 도커를 제어할 수 있다. Remote API는 도커 데몬이 아니여도 제어가 가능하고 RESTful API 형식이라 HTTP 요청으로 도커를 제어할 수도 있다. dockerd -H tcp://0.0.0.0:2375 위 명령어를 통해 호스트에 존재하는 모든 네트워크 인터페이스의 IP 주소와 2375번 포트를 바.. 2022. 2. 27.
[Docker] : 도커 데몬 설정 도커 데몬에 적용할 수 있는 옵션이 무엇인지 확인하기 위해 dockerd --help 명령어를 입력하면 알 수 있다. 옵션을 직접 추가해서 도커 데몬을 실행할 수도 있다. dockerd --insecure-registry=192.168.99.100:5000 이렇게 사용할 수 있지만 dockerd 명령어로 도커 데몬을 직접 실행하기 보다 도커 설정 파일을 수정하고 도커 데몬이 설정 파일을 읽어 서비스로 실행되게 하는 방법을 주로 사용한다. dockerd -H tcp://0.0.0.0:2375 --insecure-registry=192.168.100.99:5000 --tls=false dockerd로 직접 도커 데몬을 실행하는 명령어이다. vi /etc/default/docker 이것은 우분투 14.04에서.. 2022. 2. 27.
[Docker] : 도커 데몬 실행, 중단하기 도커 데몬 실행 우분투에서는 도커가 설치되면 자동을 서비스를 등록해서 호스트가 재시작되도 자동 실행이 된다. service docker start service docker stop 위 명령어로 도커 데몬을 시작하고 멈출 수 있다. 참고로 레드헷 계열의 OS는 도커를 설치해도 자동 실행으로 설정되지 않는다. systemctl enable docker 위 명령어로 레드헷 계열에서 도커를 자동으로 실행하도록 설정할 수 있다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 2. 27.
[Docker] : 도커 데몬 - 도커의 구조 which docker 명령어로 도커의 위치를 확인할 수 있다. ps aux | grep docker 실행중인 도커 프로세스도 확인할 수 있다. 도커 구조는 두 가지로 나뉘는데 클라이언트로서의 도커, 서버로서의 도커이다. 실제로 컨테이너를 생성하고 실행하며 이미지를 관리하는 주체는 도커 서버이고, 이는 dockerd 프로세스로서 동작한다. 도커 엔진은 외부에서 API 입력을 받아 도커 엔진의 기능을 수행하는데, 도커 프로세스가 실행되어 서버로서 입력을 받을 준비가 된 상태를 도커 데몬이라고 한다. 도커 클라이언트는 도커 데몬이 API를 입력 받아 도커 엔진의 기능을 수행할 때 API를 사용할 수 있게 CLI를 제공하는 것이 도커 클라이언트다. 사용자가 docker로 시작하는 명령어를 작성할 때 많이 사용.. 2022. 2. 26.
[Docker] : Dockerfile로 빌드할 때 주의해야 할 점 하나의 명령어를 \로 나눠 가독성을 높인다. .dockerignore를 작성해 불필요한 파일을 빌드 컨텍스트에 포함하지 않도록 한다. 빌드 캐시를 통해 기존에 사용한 이미지 레이어를 재사용한다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 2. 26.
[Docker] : ENTRYPOINT, CMD 명령어 ENTRYPOINT CMD와 비슷한데 다른 역할을 한다. 컨테이너가 시작될 때 수행할 명령을 지정한다는 점에서 같지만 커맨드를 인자로 받아 사용할 수 있는 스크립트의 역할을 할 수 있다는 점에서 다르다. entrypoint에 하나의 명령어만 입력할 수도 있지만 일반적으론느 스크립트 파일을 entrypoint의 인자로 사용해 컨테이너가 시작될 때마다 해당 스크립트 파일을 실행하도록 설정한다. CMD 컨테이너가 시작 될 때 실행할 명령어를 설정한다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 2. 26.
[Docker] : ADD, COPY 명령어 ADD ADD에 추가할 파일을 깃과 같은 외부 URL로 지정할 수 있고 tar 파일을 추가할 수도 있다. 단, tar파일을 자동으로 해제해서 추가한다. ADD 사용을 권장하진 않는다. COPY COPY는 로컬 디렉터리에서 읽어 들인 컨텍스트로부터 이미지에 파일을 복사하는 역할을 한다. 사용 형식은 ADD와 같다. ADD와 차이점은 COPY는 로컬의 파일만 이미지에 추가할 수 있지만 ADD는 외부 URL, tar 파일에서도 파일을 추가할 수 있다. 즉, COPY의 기능이이 ADD에 포함되는 셈이다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 2. 26.
[Docker] : Onbuild, Stopsignal, Healthcheck, Shell Onbuild, Stopsignal, Healthcheck, Shell Onbuild 빌드된 이미지를 기반으로 다른 이미지가 Dockerfile로 생성될 때 실행할 명령어를 추가한다. FROM ubuntu:14.04 RUN echo "this is onbuild test" ONBUILD RUN echo "onbuild!" >> /onbuild_file "onbuild!" >> /onbuild_file을 통해 onbuild!라는 명령어가 최상위 디렉터리의 onbuild_file에 저장되도록 지정했다. Stopsignal 컨테이너가 정지될 때 사용될 시스템의 콜 종류를 지정한다. 디폴트 값은 SIGTERM으로 설정되어 있지만 선택도 할 수 있다. FROM buntu:14.04 STOPSIGNAL SIGKIL.. 2022. 2. 25.
반응형