전체 글

전체 글

    [ Docker && Kubernetes ] - 도커 컨테이너 다루기: 로그

    [ Docker && Kubernetes ] - 도커 컨테이너 다루기: 로그

    STDOUT / STDERR 도커 컨테이너에서는 어플리케이션 단에서 stdout/stderr로 로그를 내보내는 것을 표준으로 해야합니다. 이렇게하게 되면 로깅 드라이버가 stdout/stderr로 내보내지는 로그를 쌓아가지고 처리할 수 있게 합니다. 도커같은 경우는 로깅 드라이버를 다양한 종류를 지원해주고 있습니다. 사용의 목적에 따라 로깅 드라이버를 선택하면 됩니다. 가장 기본적인 로깅 드라이버는 json-driver입니다. 로그 확인하기 바로 위 명령어를 기반으로 간단한 실습을 해보도록 하겠습니다. logs명령어로 nginx컨테이너를 하나 띄웠습니다. 그리고 docker logs명령어로 해당 컨테이너의 로그를 보실 수 있습니다. 또한 --tail 10을 지정해주어 마지막 10개의 로그만 확인할 수도 ..

    [ Docker && Kubernetes ] - 도커 컨테이너 다루기: 볼륨

    [ Docker && Kubernetes ] - 도커 컨테이너 다루기: 볼륨

    도커 레이어 아키텍쳐 docker build -t app .명령어로 도커 이미지를 빌드하게 되는데, 이 때 Dockerfile이라는 명세서를 기반으로 빌드하게 됩니다. 만약 컨테이너가 우분투 이미지를 베이스로 사용한다고 하면, 첫번쨰는 base Ubuntu Layer라는 레이어가 쌓일 것입니다. 그리고 두번째로 우분투 운영체제에서 사용되어 지는 package를 설치하는게 두번쨰 레이어로 올라갈 겁니다. ( apt-get ) 그 외에도 파이썬과 관련된 이미지여서 이와 관련된 레이어가 3번째로 올라갈 수 있으며, 그 이후에 소스코드를 복사한다고 하면 그 내용이 레이어4에 저장이 되고, 그리고 컨테이너의 엔트리포인트를 변경한다고 하면 이게 레이어5에 올라갈 수 있게 됩니다. 만약 레이어 4인 Source C..

    [ Docker && Kubernetes ] - 도커 컨테이너 다루기: 네트워크

    [ Docker && Kubernetes ] - 도커 컨테이너 다루기: 네트워크

    도커 네트워크 구조 Docker 컨테이너(container)는 격리된 환경에서 돌아가기 때문에 기본적으로 다른 컨테이너와의 통신이 불가능합니다. 하지만 여러 개의 컨테이너를 하나의 Docker네트워크에 연결시키면 서로 통신이 가능해집니다. 네트워크 조회 Docker네트워크의 기본은 내 컴퓨터에서 어떤 네트워크가 생성되어 있는지를 아는 것일 겁니다. docker network ls 커맨드를 사용하면 현재 생성되어 있는 Docker네트워크 목록을 조회할 수 있습니다. bridge, host, none은 Docker의 데몬(daemon)이 실행되면서 디폴트로 생성되는 네트워크 입니다. 대부분의 경우에는 이러한 디폴트 네트워크를 이용하는 것 보다는 사용자가 직접 네트워크를 생성해서 사용하는 것이 권장됩니다. 네..

    [ Docker && Kubernetes ] - 도커 컨테이너 다루기: 명령어 실행

    [ Docker && Kubernetes ] - 도커 컨테이너 다루기: 명령어 실행

    docker exec 이는 실행중인 컨테이너에 명령어를 실행하는 것입니다. 이는 그래서 컨테이너에서 특정 이슈가 발생했을 떄, 빈번하게 사용합니다. 그리고 이이를 실행하기 위해서는 nginx컨테이너 안에 bash쉘이나 sh쉘이 존재해야 그 안으로 들어갈 수 있게 됩니다. 이렇게 정상 작동하는 것을 확인할 수 있습니다. 이렇게 하게되면 nginx config파일들을 상세히 볼 수 있어서 오류에 대처를 유연하게 할 수 있게 됩니다.

    [ Docker && Kubernetes ] - 도커 컨테이너 다루기: 환경변수

    [ Docker && Kubernetes ] - 도커 컨테이너 다루기: 환경변수

    환경변수 docker container안에서 민감한 정보를 주입하기 위해서, -e, --env로 환경변수를 주입할 수 있는데, 위와 같이 -e MY_HOST=fastcampus.com이 컨테이너 bash쉘 안에서 잘 확인되는 것을 볼 수 있습니다. 이제 해당 컨테이너를 insepct해 보면 Env안에 우리가 주입한 정보가 있는 것을 확인할 수 있습니다. 이 외에도 환경변수를 파일로 주입해 줄 수 있습니다. sample.env라는 파일을 만들고 --env-file에 상대 경로를 주입해 주었고 env로 확인을 해 보니 잘 주입되어 있는 것을 확인해 볼 수 있습니다. https://hub.docker.com/_/nginx nginx - Official Image | Docker Hub Quick referen..

    [ Docker && Kubernetes ] - 도커 컨테이너 다루기: 엔트리포인트와 커맨드

    [ Docker && Kubernetes ] - 도커 컨테이너 다루기: 엔트리포인트와 커맨드

    엔트리포인트와 커맨드 엔트리 포인트와 커맨드는 다릅니다. 엔트리포인트를 설정하게되면, 도커 컨테이너가 실행할 때 고정적으로 실행되는 스크립트 혹은 명령어를 지정할 수 있고, 생략하면 커맨드에 지정된 명령어로 수행하게 됩니다. 그냥 [Entrypoint] [Command]와 같이 Entrypoint가 Prefix로 들어간다고 보시면 됩니다. 다음과 같이 Dockerfile을 구성해서 이미지를 빌드할텐데, 다음과 같이 CMD에 해당하는 명령어가 샐행되기 전에 실행되어야 하는 쉘 스크립트를 지정해 줄 수 있습니다. 기본적으로 ubuntu:focal을 실행하면 bash쉘로 동작하는데 --entrypoint로 sh를 주게 되면, sh로 컨테이너를 실행하게 됩니다. 다음과 같이 sh쉘로 잘 들어가짐을 확인할 수 ..

    [ Docker && Kubernetes ] -  도커 컨테이너  다루기 & 컨테이너 라이프사이클

    [ Docker && Kubernetes ] - 도커 컨테이너 다루기 & 컨테이너 라이프사이클

    도커 컨테이너 라이프사이클 도커 컨테이너가 Run상태로 가기 위해서는 2가지 방법이 존재합니다. docker run, docker. create가 있습니다. 그리고 pause unpause를 통해서 다시 컨테이너를 실행시킬 수도 있습니다. 이 뿐만 아니라 stop start를 통해서 다시 run상태로 할 수 있고 stop상태에서 rm을 하면 docker container를 삭제할 수 있게 됩니다. 더 심오한 라이프 사이클이 있는데, 이는 다양한 도커 명령어를 알아보면서 자연스럽게 이해해 보도록 하겠습니다. 컨테이너 시작 run, create둘다 컨테이너를 만드는데 가장 많이 사용되는 방법입니다. create는 컨테이너를 생성하고 -> 생성한 컨테이너를 start를 통해서 실행시키는 방법입니다. run은 ..

    [ Docker && Kubernetes ] - 도커 이미지와 컨테이너

    [ Docker && Kubernetes ] - 도커 이미지와 컨테이너

    도커 구성요소 일단 이전시간에 우리가 설치한 docker-cli가 Client가 됩니다. 우리는 그리고 동일한 서버에 client와 host가 깔려 있지만, Docker daemon ( Docker engine )이라고 불리는게 Ubuntu에 설치 되어있습니다. 위와 같이 Docker daemon이 띄워져 있는 서버를 Docker_HOST라고 합니다. 이 Docker_daemon이 Images, Containers를 사용하게 됩니다. docker image를 만드는 방법은 ( build, pull )하는 방법이 있습니다. 이미지를 가져올 때 사용하는 것이 Registry ( 이미지 저장소 )라고 할 수 있습니다. 그리고 이 이미지 저장소로 부터 Container를 실행하는 매커니즘이라고 보시면 됩니다. ..

    [ Docker && Kubernetes ]  - 개요

    [ Docker && Kubernetes ] - 개요

    컨테이너 기술의 발전 일단 서버에서 어플리케이션이 어떻게 구동되는지 패러다임을 간단히 살펴보고 여기에서 컨테이너 기술인 Docker와 Kubernetes가 어떻게 활용되는지 살펴보도록 하겠습니다. Traditional Deployment 보통 Operating System & Hardware가 하나의 서버라고 할 수 있을겁니다. 그리고 여기에다 라이브러리와 프레임워크를 다운하게 되고, 그 위에서 애플리케이션 로직 코드를 받게 됩니다. 여기까지 볼때는 큰 문제점을 느낄 수 없을겁니다. 다만 한 서버 내에서 구동하는 어플리케이션의 종류가 어려대가 될 경우, 아래와 같이 어플리케이션간의 의존성이 생기게 되고, 여기에서는 다른 버전의 라이브러리를 설치하기 위해서는 Tricky한 방법이 사용되어야 하므로, 어플리..

    방학이 끝나간다..

    정말 오랜만에 온 본가이기도 하고 방학도 끝나가고.. 너무 심심해서 글이나 끄적거리구 있어용 방학때 세운 목표가 있는데, 공부, 운동, 대회나가기 등이 있었는데 다 지켰는지 모르겠어요.. 뭔가 내가 진짜 좋아하는게 뭔지 찾아가는 방황하는 시기였던거 같기도 하고, 좋은 선배나 좋은 후배들 많이 만나서 행복했던거 같아요.. 막상 쓰려고 하니까 또 귀찮아서 끄려고 하는데 쓰던것만 마저 쓰고 마칠게요 ㅋㅋㅋ 집에 내려와서는 동생이랑 놀고 휴대폰이나 부모님이랑 영화도 보고 우리 가족이 하는 식당도 가서 밥두 먹구 말 그대로 그냥 힐링을 지대루 하고 있어용 너무 행복한 하루하룬데.. 다시 기숙사가야할 생각하니까 너무 고되네요,. 내 다음 룸메는 누구일지 ㅎㅎ 하지만 1점만 벌점 더 받으면 영구 강제 퇴관이라는점....