어제 포스팅에서 kubectl client와 server 버전차이로 warning이 발생해서 조치중이란 것을 기록하였다.

 

https://hoonstudio.tistory.com/425

 

[Kubernetes] kubectl client와 server 버전 차이 오류발생 (The system cannot execute the specified program.)

minikube로 쿠베를 설치하고, kubectl 로 컨트롤을 설치하고 버젼확인을 하였으나, 쿠버의 클라이언트와 서버의 버전 차이로 오류가 발생했다. 음.. 그런데 이 포스팅하려고 캡쳐본 다시 보니 error가

hoonstudio.tistory.com

그런데, 오늘 새벽 1시간동안 찾아보아도 해결이 잘 되지 않는다.

이런 사례조차 구글링에 잘 검색되지 않는다. 영어, 한국어 둘다 말이다.

 

kubectl 재설치, 업그레이드, 삭제, 제거 등 으로 해보았는데 '시스템환경변수 PATH설정' 같은 가이드밖에 없다.

참고로 이 PATH는 kubectl.exe이 있는 bin폴더에 잘 들어가 있음.

 

어쩔수없이 '못찾겠다 꽤꼬리' 방법으로 인프런에 질의를 등록하였다.

계속 고민하고 찾다보면 답이 나오겠지.

Posted by 유영훈
,

minikube로 쿠베를 설치하고, kubectl 로 컨트롤을 설치하고 버젼확인을 하였으나, 쿠버의 클라이언트와 서버의 버전 차이로 오류가 발생했다. 음.. 그런데 이 포스팅하려고 캡쳐본 다시 보니 error가 아닌 warning이었네..

 

아무튼 에러로 인지하고 당시에는 kubectl을 server버전인 1.25에 맞춰주려고 임의로 curl을 통해서 1.25 버전을 설치하였다.

그런데, 그 후에는 버전이 2개 겹쳐서인지 The system cannot execute the specified program. 에러가 발생하였다.

버전을 1개 지정을 해주어야하는데, 이 방법을 아직 못찾았음. 다음 테스트에서는 이 부분부터 시작예정.

==========================================================================

C:\Windows\system32>minikube start
* Microsoft Windows 10 Pro 10.0.19043 Build 19043 의 minikube v1.27.1
* 기존 프로필에 기반하여 hyperv 드라이버를 사용하는 중
* minikube 클러스터의 minikube 컨트롤 플레인 노드를 시작하는 중
* Restarting existing hyperv VM for "minikube" ...
* 쿠버네티스 v1.25.2 을 Docker 20.10.18 런타임으로 설치하는 중
* Kubernetes 구성 요소를 확인...
  - Using image gcr.io/k8s-minikube/storage-provisioner:v5
* 애드온 활성화 : storage-provisioner, default-storageclass

! C:\Program Files\Docker\Docker\resources\bin\kubectl.exe is version 1.21.3, which may have incompatibilites with Kubernetes 1.25.2.
  - Want kubectl v1.25.2? Try 'minikube kubectl -- get pods -A'
* 끝났습니다! kubectl이 "minikube" 클러스터와 "default" 네임스페이스를 기본적으로 사용하도록 구성되었습니다.

C:\Windows\system32>curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.23.5/bin/windows/amd64/kubectl.exe
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 45.6M  100 45.6M    0     0  5191k      0  0:00:08  0:00:08 --:--:-- 6534k

C:\Windows\system32>kubectl version
Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.5", GitCommit:"c285e781331a3785a7f436042c65c5641ce8a9e9", GitTreeState:"clean", BuildDate:"2022-03-16T15:58:47Z", GoVersion:"go1.17.8", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.2", GitCommit:"5835544ca568b757a8ecae5c153f317e5736700e", GitTreeState:"clean", BuildDate:"2022-09-21T14:27:13Z", GoVersion:"go1.19.1", Compiler:"gc", Platform:"linux/amd64"}
WARNING: version difference between client (1.23) and server (1.25) exceeds the supported minor version skew of +/-1

C:\Windows\system32>curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.25/bin/windows/amd64/kubectl.exe
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   224  100   224    0     0    532      0 --:--:-- --:--:-- --:--:--   535

C:\Windows\system32>kubectl version
The system cannot execute the specified program

 

Posted by 유영훈
,

C:\Users\move_>docker ps
error during connect: This error may indicate that the docker daemon is not running.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json": open //./pipe/docker_engine: The system cannot find the file specified.

 

원인 : 도커 데몬이 미실행

최초 조치 : 도커 데스크탑 실행 > 알약에서 차단

 

조치 방법 : 알약 > 환경설정 > 탐지제외 에 위 경로 및 파일을 예외로 추가

 

C:\Users\move_>docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED      STATUS          PORTS                                   NAMES
4a8cd91e7be7   mariadb:latest     "docker-entrypoint.s…"   6 days ago   Up 34 seconds   3306/tcp                                wp_db_1
351ecfbe3c95   wordpress:latest   "docker-entrypoint.s…"   6 days ago   Up 34 seconds   0.0.0.0:8000->80/tcp, :::8000->80/tcp   wp_wordpress_1

 

 

Posted by 유영훈
,

작년 12월 도커 글이 마지막이었으니 거의 9개월 정도가 지났네

내가 이런 포스팅을 올렸었나 싶을 정도인데, 인프런 다시켜보니 딱 여기서 이어보기가 되더라.

https://hoonstudio.tistory.com/367?category=948751 

 

[도커] fastify사용한 웹 애플리케이션 만들기

fsatify : 웹 프레임워크 https://www.fastify.io/docs/latest/Getting-Started/ Getting-Started Fast and low overhead web framework, for Node.js www.fastify.io 강의안과 다르게 cmd창에 npm을 치면 명령어..

hoonstudio.tistory.com

그런데 오랜만에 실행한 내 Docker Desktop 은 실행이 안된다.

Docker Desktop is shutting down. 라고 뜬다.

당연히 Docker Desktop is shutting down.로 구글링도 해보았지.

새벽 4시 51분에 수정된 settings.json이 보이는가.

새벽 미라클 모닝으로 공부하려고 하였는데, 처음부터 막히네

이 json파일을 지우고 실행해도 동일하였고, 다른 외국분들도 재설치를 해서 해결했다는 댓글을 보아서 재설치하려고 한다.

Posted by 유영훈
,

fsatify : 웹 프레임워크

https://www.fastify.io/docs/latest/Getting-Started/

 

Getting-Started

Fast and low overhead web framework, for Node.js

www.fastify.io

강의안과 다르게 cmd창에 npm을 치면 명령어가 없다고 나온다.

node.js를 설치해주면 cmd에 npm 치면 옵션들이 쭉 나온다. 설치완료된 것이다.

* npm은 node package manager의 뜻으로 노드 패키지 관리자 역할을 한다.

 

https://nodejs.org/ko/download/

 

다운로드 | Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

fastify 라이브러리 패키지 설치

npm i fastify --save

브라우져에 접속하면 app.js 파일로 만들어놓은 페이지가 잘 출력된다.

이를 도커 이미지로 빌드하는데 시간이 꽤 걸렸다. 796.8s 이니깐 대략 13분 좀 넘게 소요되었네

빌드한 이미지를 실행하려고 했는데, 오류가 나서 살펴보민

Error에 module이 없다는 것인데, VSCode로 보니 오타가 있었다. 뒤에 QQ를 빼고 다시 실행해주니 잘 실행되고, 웹접속도 성공하였다.

D:\05.Lab\01.test\web>docker run -p 3000:3000 web
internal/modules/cjs/loader.js:638
    throw err;
    ^

Error: Cannot find module '/usr/src/app/app.jsQQ'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)

D:\05.Lab\01.test\web>docker images

D:\05.Lab\01.test\web>
D:\05.Lab\01.test\web>
D:\05.Lab\01.test\web>
D:\05.Lab\01.test\web>docker run -p 3000:3000 web
{"level":30,"time":1638947532214,"pid":8,"hostname":"1a97ede7f0a9","msg":"Server listening at http://0.0.0.0:3000"}
{"level":30,"time":1638947532215,"pid":8,"hostname":"1a97ede7f0a9","msg":"server listening on http://0.0.0.0:3000"}
{"level":30,"time":1638947532503,"pid":8,"hostname":"1a97ede7f0a9","reqId":"req-1","req":{"method":"GET","url":"/","hostname":"127.0.0.1:3000","remoteAddress":"172.17.0.1","remotePort":52382},"msg":"incoming request"}
{"level":30,"time":1638947532535,"pid":8,"hostname":"1a97ede7f0a9","reqId":"req-1","res":{"statusCode":200},"responseTime":20.34059999883175,"msg":"request completed"}

기존 테스트 중지를 안하니 오류가 발생

C:\Users\move_>docker run -p 3001:3000 web
docker: Error response from daemon: driver failed programming external connectivity on endpoint hungry_satoshi (3220b1383366fafc9092bc9f3d1743ca9d080e512f7b739826f4b760d22405c8): Bind for 0.0.0.0:3001 failed: port is already allocated.

그런데 기존 테스트때문이 아니었음

껐음에도 동일한 오류가 발생해서 혹시 내가 할당하는 포트의 충돌인가 싶어서 3002번으로 변경하였더니

웹도 잘 출력되고 cmd창에 로그도 잘 찍혔다.

C:\Users\move_>docker run -p 3001:3000 web
docker: Error response from daemon: driver failed programming external connectivity on endpoint beautiful_tereshkova (b6841b2541526d8a4f92368b738311a6d6420946329b1e45892756d068f414f9): Bind for 0.0.0.0:3001 failed: port is already allocated.

C:\Users\move_>docker run -p 3002:3000 web
{"level":30,"time":1638948253156,"pid":8,"hostname":"cfbf8a5cf3c6","msg":"Server listening at http://0.0.0.0:3000"}
{"level":30,"time":1638948253158,"pid":8,"hostname":"cfbf8a5cf3c6","msg":"server listening on http://0.0.0.0:3000"}
{"level":30,"time":1638948263812,"pid":8,"hostname":"cfbf8a5cf3c6","reqId":"req-1","req":{"method":"GET","url":"/","hostname":"127.0.0.1:3002","remoteAddress":"172.17.0.1","remotePort":49984},"msg":"incoming request"}
{"level":30,"time":1638948263832,"pid":8,"hostname":"cfbf8a5cf3c6","reqId":"req-1","res":{"statusCode":200},"responseTime":18.8648000061512,"msg":"request completed"}
{"level":30,"time":1638948264280,"pid":8,"hostname":"cfbf8a5cf3c6","reqId":"req-2","req":{"method":"GET","url":"/favicon.ico","hostname":"127.0.0.1:3002","remoteAddress":"172.17.0.1","remotePort":49984},"msg":"incoming request"}
{"level":30,"time":1638948264281,"pid":8,"hostname":"cfbf8a5cf3c6","reqId":"req-2","msg":"Route GET:/favicon.ico not found"}
{"level":30,"time":1638948264283,"pid":8,"hostname":"cfbf8a5cf3c6","reqId":"req-2","res":{"statusCode":404},"responseTime":2.851500004529953,"msg":"request completed"}

정리 : 이미지 만들 때, dockerfile을 가지고 만든다

 

Posted by 유영훈
,

docker compose

docker-compose의 version부터 확인하면서 이번 포스팅 시작

 

yml [야믈] 이란 것이 띄어쓰기를 통해 데이터를 표현하는 방식

 

이렇게 docker명령어를 하나씩 쳐볼수도 있지만, 실무에서는 대부분 yml 파일을 만들어서 진행

도커 : 레이어드 파일 시스템 기반

AUFS, BTRFS, Overlayfs ...

이미지 : 프로세스가 실행되는 파일들의 집합(환경)

프로세스는 환경을 변경할 수 있음

이 환경을 저장해서 새로운 이미지 생성

 

docker build -t 이름/이미지이름:태그 .

docker build -t hoon/ubuntu:git1 .

 

TDD : 파란불이 뜰때까지 많은 실패할 것이고, 성공하더라도 리팩토링을 통해 최적화를 해야함

 

dockerfile로 관리를 하면 다른 사람들이 보아도 어떤 히스토리로 서버가 설치되었는지 확인이 가능하다

(기존에는 히스토리 관리가 안되었다)

Posted by 유영훈
,

https://hoonstudio.tistory.com/323?category=948751 

 

[도커] -v 옵션으로 mysql 삭제후 재설치해도 데이터 남기기

[예시 명령어] docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --network=app-network --name mysql -v D:\01.test\mysql:/var/lib/mysql mysql:5.7 이렇게 내 로컬 디렉토리와 컨테이너 디렉토..

hoonstudio.tistory.com

역시 포스팅을 하길 잘했다..

지난번 포스팅에도 회사 시험으로 흐름이 끊겨서 다시한다고 써놓았는데

오늘도 한달만에 그 맥을 또 이어보려고 한다

 

한가지 칭찬할점은 한달에 한번정도 잊혀질만 하면 공부해야되는 것 실행하는 나의모습

보완해야할 점은 너무 일을 많이 벌리지 말자.. 이것저것 챙기느라 몰입을 못하는 듯 싶다

 

docker: error during connect: This error may indicate that the docker 

아무리 명령어 입력해도 동일한 에러가 나왔다

생각해보니 도커를 시작프로그램에서 중지했었는데 (SAA 시험보느라) 그 영향인 것 같아 실행하고 진행하였더니 잘 된다.

 

Posted by 유영훈
,

[예시 명령어]

docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --network=app-network --name mysql -v D:\01.test\mysql:/var/lib/mysql mysql:5.7

 

이렇게 내 로컬 디렉토리와 컨테이너 디렉토리를 연결하면, 컨테이너에 mysql 삭제해도 동일하게 연결하면 로컬의 데이터를 가져와서 보여준다.

Posted by 유영훈
,

도커에 워드프레스 띄우기가 너무 쉬워서 놀랬다.

저장과 동시에 데이터베이스를 조회해보면 실제 입력한 값이 당연하게도 조회가 된다.

온프레미스에서 왜이리 어렵게 워드프레스를 설치했던 것이었지? 란 생각이 들었다.

워드프레스와 mysql을 연결하고, mysql을 삭제했을 때 테스트

그래서 이번에는 내 로컬 디렉토리와 도커에 띄운 컨테이너의 디렉토리를 서로 연결해서 데이터를 저장해보도록 한다.

우선 연결만으로도 이렇게 WSL을 통해서 filesharing이 되었다고 팝업이 뜬다.

실제 내 로컬 디렉토리에도 mysql관련 파일들이 생성되어 있다.

Posted by 유영훈
,

기존 도커 공부를 위해 유튜브에서 재즐보프님 영상으로 진행하려고 하였으나, 이런저런 사유로 진행못하였다.

https://hoonstudio.tistory.com/category/IT%20Studio/Docker%20_kubenetes

 

'IT Studio/Docker _kubenetes' 카테고리의 글 목록

IT와 음악을 기록하고 공유하는 블로그입니다.

hoonstudio.tistory.com

그래서 인프런 강의를 회사지원으로 시작하게 되었다.

그래서 선택한 강의가 '초보를 위한 도커 안내서'이다.

윈도우 환경에서 도커를 설치하고 진행해야하는데, 자세한 설치내용은 생략하고 강의가 넘어가서 갓대희님 블로그를 통해서 진행하였다.

https://goddaehee.tistory.com/251

 

[Docker (1)] window10 Docker 설치하기(윈도우 10 도커 설치)

[Docker (1)] window10 Docker 설치하기(윈도우 10 도커 설치) 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ Window10 도커 설치 ] 입니다. : ) 도커 설치하기 ▶ 1. 도커란? 도커 설치와 관련된 포스팅 이기.

goddaehee.tistory.com

 

중간에 WSL 2 관련 미설치 내용이 나왔는데, 갓대희님께서 말씀주신 것과 같이 업데이트를 진행하니 설치가 완료되었다.

설치 URL은 위 링크를 클릭해도 된다.

https://docs.microsoft.com/ko-kr/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package

 

이전 버전 WSL의 수동 설치 단계

wsl install 명령을 사용하지 않고 이전 버전의 Windows에 WSL을 수동으로 설치하는 방법에 대한 단계별 지침입니다.

docs.microsoft.com

그렇게 해서 도커까지 설치완료하였다.

사실 회사 노트북에 이미 설치하고 컴포즈 테스트까지는 하였는데, 개인 노트북에 설치하느라 다시 보게 되었고

회사 시험때문에 도커 공부가 끊겨서 처음부터 맥을 이어나가기 위해 진행하는 차원도 있다.

Posted by 유영훈
,