docker: 20개의 글
위 이미지는 도커의 공식 로고입니다.컨테이너를 실은 화물선을 고래 캐릭터로 형상화해서 귀여운 이미지라는 생각이 듭니다. 자~ 이제! 본격적으로 시작하겠습니다. 도커란 무엇인가? Docker는 2013년에 세상에 첫 선을 보였습니다. Docker는 Go 언어로 개발된 오픈 소스 프로젝트입니다. Docker는 컨테이너 기반 오픈 소스 가상화 플랫폼입니다. Docker와 관련된 프로젝트는 도커 컴포즈(Docker Compose), 도커 머신(Docker Machine), 레지스트리(Private Registry) 등이 있습니다. 일반적으로 불리우는 Docker는 도커 엔진(Docker Engine)을 의미하고 있습니다. 도커 엔진(Docker Engine)은 컨테이너 생성 및 관리하는 주체로, 컨테이너를 제어..
개발할 때 DockerFile 만들고 매번 원격지에 올리고 실행하는게 너무 귀찮았는데 Intellij에 관련 기능이 있길래 조금 삽질하다가 사용 방법을 정리합니다. [ Docker 사용하기 ] 기본으로 설치된 Docker Plugin이 있으면 위와 같이 Run | Configuration 항목에서 접속할 도커 엔진 정보를 추가할 수 있습니다. 이 화면은 OS마다 메뉴 구성이 약간씩 다른데, Windows의 경우 로컬에서 Hyper-V를 사용하는 Docker Desktop과 원격지에 tcp 소켓을 통한 도커를 추가할 수 있습니다. 이렇게 하면 Intellij에 내장된 Docker서비스가 활성화되고, GUI를 이용해 Docker Engine에 있는 컨테이너나 이미지들을 GUI로 다룰 수 있게 해줍니다. [ ..
오늘 다루어볼 포스팅은 Git과 Jenkins를 연동한 이후에 Jenkins Mulibranch pipeline으로 springboot web project를 docker image로 빌드 후 push하는 것까지 다루어볼 것이다. 이전까지는 오늘 다루어볼 포스팅의 연습 및 준비단계였고 본격적으로 CI/CD에 대해 다루어본다. 물론 오늘 다루어볼 포스팅 내용이 실무에서 그대로 활용하기 애매할 수는 있지만 포스팅을 이어나가면서 좀 더 보완해나갈 것이다. 1. Git & Jenkins 연동 후 Multibranch pipeline 작성 Jenkins - CentOS에 docker 환경으로 Jenkins 설치(Jenkins&GitHub CI) Jenkins - Jenkins&GitHub을 이용하여 아주 간단한 ..
오늘 다루어볼 내용은 kustomize이다. Kustomize는 kustomization 파일을 이용해 kubernetes 오브젝트를 사용자가 원하는 대로 변경(customize)하는 도구이다. 모든 예제는 아래 깃헙 kube-kustomize 디렉토리에 있다. yoonyeoseong/kubernetes-sample Kubernetes(쿠버네티스) sample. Contribute to yoonyeoseong/kubernetes-sample development by creating an account on GitHub. github.com kustomization 파일을 포함하는 디렉터리 내의 리소스를 보거나 실제 클러스터에 리소스를 적용하려면 다음 명령어를 이용한다. #kustomize가 적용된 설정..
오늘 다루어볼 포스팅은 "도커 이미지 만들기"이다. 이전에 한번 정리해야지해야지 하면서 미뤄왔었는데, 간단하게 다루어 볼것이다. 필자도 대충은 알았지, 뭔가 깊게 이해하지 못하고 이미지를 빌드했었는데, 이참에 기초부터 한번 정리해봐야겠다. 1. FROM : 도커 이미지의 바탕이 될 베이스 이미지를 지정한다. Dockerfile로 이미지를 빌드할 때 먼저 FROM 인스트럭션에 지정된 이미지를 내려받는다. FROM에서 받아오는 도커 이미지는 도커 허브(Docker Hub)라는 레지스트리를 참조한다. 도커 특정 버전 이상에서는 Multi stage build가 가능해져서, 하나의 베이스 이미지(FROM ..)가 아닌 여러 베이스 이미지를 사용하여 빌드가 가능하다(FROM을 여러번 사용) 2. RUN : 도커 ..
이번 포스팅은 간단하게 싱글 노드 카프카를 도커로 띄우는 방법이다. git clone https://github.com/wurstmeister/kafka-docker cd kafka-docker 설정 파일은 docker-compoese로 되어있으며, 아래와 같다. version: '2' services: zookeeper: image: wurstmeister/zookeeper ports: - "2181:2181" kafka: build: . ports: - "9092:9092" environment: KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1 KAFKA_CREATE_TOPICS: "test:1:1" KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 volum..
이번 포스팅에서 다루어볼 내용은 DOOD로 도커를 띄웠을 때, proxy 설정하는 방법이다. 그전에 간단하게 Docker in Docker(dind)와 Docker Out Of Dcoker(DooD)에 대해 알아보자. Docker in Docker(dind) 도커 내부에 격리된 Docker 데몬을 실행하는 방법이다. CI(Jenkins docker agent) 측면에서 접근하면 Agent가 Docker client와 Docker Daemon 역할 두가지를 동시에 하게 된다. 하지만 이 방법은 단점이 존재한다. 내부의 도커 컨테이너가 privileged mode로 실행되어야 한다. > docker run --privileged --name dind -d docker:1.8-dind privileged 옵션..
공식 dockerhub가 아닌, 개인 혹은 사내 dockerhub로 push하는 방법이다. (dockerHubHost가 개인 혹은 사내 도커허브 도메인) > docker build -t dockerHubHost/levi.yoon/jenkins_example > docker push dockerHubHost/levi.yoon/jenkins_example 뭔가 다른 방법이 있을 것 같긴한대.. 간단하게 위 방법으로도 가능하다 ! 출처: https://coding-start.tistory.com/344?category=761720 [코딩스타트]
Dockerfile 파일이 아니라, 커스텀한 파일명으로 docker manifest를 작성하였을 때, 로컬 빌드하는 명령이다. Dockerfile로 작성되어 있을 때 로컬빌드 명령은 아래와 같다. docker build -t 1223yys/web-project:latest . 만약 Dockerfile이 아닌 다른 파일명으로 image manifest를 작성하였을 때는 아래와 같다. docker build -t 1223yys/web-project -f ./custom_file_name . 위 명령을 실행한 후에 이미지가 잘 빌드되었는지 확인해보자. docker image ls 출처: https://coding-start.tistory.com/341?category=761720 [코딩스타트]
오늘 다루어볼 내용은 쿠버네티스 환경에서의 로깅운영 방법이다. 지금까지는 쿠버네티스에 어떻게 팟을 띄우는지에 대해 집중했다면 오늘 포스팅 내용은 운영단계의 내용이 될 것 같다. 사실 어떻게 보면 가장 중요한 내용중에 하나라고 볼 수 있는 것이 로깅이다. 물리머신에 웹을 띄울 때는 파일로 로그를 날짜별로 남기고, 누적 일수이상된 파일은 제거 혹은 다른 곳으로 파일을 옮기는 등의 작업을 했을 것이다. 하지만 쿠버네티스에서는 파일로 로그를 남기지 않으며 조금 다른 방법으로 로깅운영을 진행한다. 컨테이너 환경에서 로그를 운영하는 구체적인 방법을 설명하기 전에 컨테이너 환경에서 로그가 어떻게 생성되는지 알아본다. 비컨테이너 환경의 애플리케이션에서는 보통 로그를 파일로 많이 남기고 한다. 이에 비해 도커에서는 로그..