Elastic Beanstalk 의 Docker 에서 Cuda가 지원되지 않는 문제

Elastic Beanstalk 에서 docker 런타임으로 배포시 g4dn 인스턴스임에도 컨테이너 안에서 gpu를 쓸 수 없는 문제를 발견했다.
구글링 결과 찾은 유일한 글(https://stackoverflow.com/q/59035690)의 솔루션은

  1. Deep Learning AMI 를 사용
  2. 환경변수에 NVIDIA_VISIBLE_DEVICES=all, NVIDIA_DRIVER_CAPABILITIES=compute,utility 넣기
  3. .ebextensions 에 command 를 추가해서 /opt/elasticbeanstalk/hooks/appdeploy/enact/00run.sh 안에 있는 docker run -ddocker run --runtime=nvidia -d 로 replace 하기

그러나 최신 EB 환경 안에서는 00run.sh 를 찾을 수 없었고 배포도 실패했다.
EB 인스턴스 안에서 docker run 이라는 텍스트가 포함된 모든 파일을 / 부터 다 find 했는데도 그 비슷한 배치파일 하나 찾을 수 없었다.
아마도 EB 배포방식이 조금 달라졌나보다.

한참 헤매다가 docker default-runtime 을 nvidia 로 설정할 수 있는 방법(http://haanjack.github.io/docker/2018/02/21/nvidia-docker2-runtime.html)을 찾아서 /etc/docker/daemon.json 를 overwrite 하는 방법으로 문제를 해결했다.

 

Deep Learning AMI (Amazon Linux 2) Version 36.0 (ami-0550df853e1f98198) 에서
환경변수 NVIDIA_VISIBLE_DEVICESNVIDIA_DRIVER_CAPABILITIES 를 설정하고
.ebextensions/01-nvidia-docker.config 를 아래와 같이 작성했더니 잘 작동했다.

참고로 이미 다른 컨테이너가 띄워진 인스턴스에서는 ebextensions 를 작성해서 deploy 해도 바로 적용되진 않고 ec2 인스턴스에 접속해서 docker service 를 restart 해야 default runtime이 적용이 된다.
처음 만들어지는 인스턴스에는 restart를 할 필요 없이 바로 적용된다.
(첫 배포시에는 인스턴스를 다 죽이고 처음부터 배포하는게 편하다 ㅎㅎ)

critical process died 문제 해결 기록

 

문제상황

시스템 복원 이후 critical process died 블루스크린 발생

  1. 윈도우 부팅 안됨
  2. 안전모드 부팅 안됨
  3. 시스템 복원 시도. 이 드라이브에서 시스템 보호를 사용해야 합니다 오류
  4. sfc /scannow 시도. windows 리소스 보호에서 요청된 작업을 수행할 수 없습니다 오류
  5. 각종 dism 복구 시도. Error: 2 발생 (The system cannot find the file specified)
  6. chkdsk /r 시도. 이상없음

 

예상되는 문제

윈도우 시스템 레지스트리의 손상

 

해결

부팅 옵션 또는 윈도우 부팅 usb 에서
문제해결 - 고급옵션 - 명령프롬프트
진입

  1. 기존 레지스트리 백업
    mkdir C:\configBak
    copy C:\Windows\System32\config C:\configBak
    
  2. config 파일 이전버전으로 복구
    dir C:\Windows\System32\config
    
    왜인지는 모르겠지만 SOFTWARE.iobit 파일이 있었음
    용량을 보니 SOFTWARE 파일의 백업본일것이라고 추정
    SOFTWARE 또는 SYSTEM 파일에 문제가 있었을 것이라고 생각했기 때문에 overwrite 시도 (실패시 C:\configBak 에 있는 파일로 다시 복구해야함)
    copy C:\Windows\System32\config\SOFTWARE.iobit C:\Windows\System32\config\SOFTWARE
    
    이후에 dism 이 동작했음
  3. dism 으로 시스템 복원 기능 복구 시도
    dism /image=C:\ /cleanup-image /revertpendingactions
    
    이후 시스템 복원 기능이 정상동작했음
    따로 다른시점으로 복원하지는 않았으나 재부팅시 정상적으로 윈도우 진입이 가능함

Virtualbox: install guest additions on RHEL 8 / CentOS 8

 

성공적으로 설치 후에도 게스트 디스플레이 크기 자동 조정 옵션이 비활성화 되어있다면 머신 디스플레이 설정에서 아래와같이 VBoxVGA 로 바꾼다.

잘못된 설정이라고 알림이 뜨지만 무시하면 된다.

How to decomplie the compiled pyinstaller exe file

Step 1

https://github.com/NeoTim/PyInstallerExtractor

별도의 종속성없이 바로 실행 가능하다.

python3 pyinstxtractor-patched app.exe

Step 2

추출한 파일중에 확장자가 없는 파일이 메인 소스파일 이다.
magic number는 이미 포함되어있어 바로 uncompyle6 로 디컴파일 가능

 

https://github.com/rocky/python-uncompyle6

가상환경으로 종속성 구성

python3 -m venv venv
venv\Scripts\activate
pip install .

main 파일에 확장자 .pyc 를 붙인 후 가상환경에서 uncompyle6 실행

uncompyle6 main.pyc > main.py

'개발' 카테고리의 다른 글

Pyinstaller decompile  (0) 2019.10.24
Windows10 에서 npm 업데이트  (0) 2019.01.29
MongoDB setup on Ubuntu  (0) 2017.09.10
GIT 초기 최적화  (0) 2017.02.15
구글번역 사용시 코드영역 제외하고 번역하기  (1) 2017.02.12
브라우저 header  (0) 2017.02.09

이미 만들어진 DB에서 sqlalchemy Model 생성하기

 

 

  1. keaton 2020.01.10 11:22

    주인장님 덕분에 model을 자동으로 생성해서 개발 시간을 엄청 단축했습니다. 감사드립니다!

Windows10 에서 npm 업데이트

! node도 업데이트 해야 한다면 C:\Program Files\nodejs\node_modules\npm 를 수동으로 삭제한 다음에 새로운 버전의 node 설치를 진행한다. 이전 버전의 npm과 충돌이 발생 할 수 있다.


관리자 권한으로 PowerShell 실행

npm install --global --production npm-windows-upgrade

Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force
npm-windows-upgrade  # 화살표 키로 node 버전 선택

npm uninstall --global npm-windows-upgrade

'개발' 카테고리의 다른 글

Pyinstaller decompile  (0) 2019.10.24
Windows10 에서 npm 업데이트  (0) 2019.01.29
MongoDB setup on Ubuntu  (0) 2017.09.10
GIT 초기 최적화  (0) 2017.02.15
구글번역 사용시 코드영역 제외하고 번역하기  (1) 2017.02.12
브라우저 header  (0) 2017.02.09

The latest supported Visual C++ downloads

https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads


Microsoft Visual C++ Build Tools

error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
https://visualstudio.microsoft.com/ko/visual-cpp-build-tools/



Visual Studio 2017용 Visual C++ 재배포 가능 패키지(x64)

https://aka.ms/vs/15/release/vc_redist.x64.exe

Visual Studio 2017용 Visual C++ 재배포 가능 패키지(x86)

https://aka.ms/vs/15/release/vc_redist.x86.exe

Microsoft Visual C++ 2015 재배포 가능 패키지 Update 3

https://www.microsoft.com/en-us/download/details.aspx?id=53840

Visual Studio 2013용 Visual C++ 재배포 가능 패키지

https://www.microsoft.com/ko-kr/download/details.aspx?id=40784

http://download.microsoft.com/download/f/8/d/f8d970bd-4218-49b9-b515-e6f1669d228b/vcredist_x64.exe

http://download.microsoft.com/download/f/8/d/f8d970bd-4218-49b9-b515-e6f1669d228b/vcredist_x86.exe

Visual Studio 2012 업데이트 4용 Visual C++ 재배포 가능 패키지

https://www.microsoft.com/ko-kr/download/details.aspx?id=30679

Microsoft Visual C++ 2010 SP1 재배포 가능 패키지(x64)

https://www.microsoft.com/ko-kr/download/details.aspx?id=13523

Microsoft Visual C++ 2010 SP1 재배포 가능 패키지(x86)

https://www.microsoft.com/ko-kr/download/details.aspx?id=8328

Microsoft Visual C++ 2008 SP1 재배포 가능 패키지(x64)

https://www.microsoft.com/ko-kr/download/details.aspx?id=2092

Microsoft Visual C++ 2008 SP1 재배포 가능 패키지(x86)

https://www.microsoft.com/ko-kr/download/details.aspx?id=5582

Microsoft Visual C++ 2005 SP1 재배포 가능 패키지(x64)

https://www.microsoft.com/ko-kr/download/details.aspx?id=18471

Microsoft Visual C++ 2005 SP1 재배포 가능 패키지(x86)

https://www.microsoft.com/ko-kr/download/details.aspx?id=5638

https://support.microsoft.com/ko-kr/kb/2977003

https://www.visualstudio.com/ko/downloads/

https://www.softexia.com/windows/programming/microsoft-visual-c-2017

https://www.softexia.com/windows/programming/microsoft-visual-c-2015

출처: https://optic.tistory.com/2

MySQL 8 on docker



MySQL 최신버전(8.0.13)을 docker container로 실행했더니 접속시 오류가 발생했다.

Authentication plugin ‘caching_sha2_password’ cannot be loaded:


MySQL 8 이상에서는 SHA-256 으로 사용자 계정의 암호를 설정할 수 있고
caching_sha2_password 는 authentication 시에 서버측에서 캐싱을 하기 위한 모듈이다.
그런데 현재 대부분의 mysql client는 (구버전인 이유로) caching_sha2_password 모듈이 존재 하지 않는다.

--default-authentication-plugin=mysql_native_password 옵션을 추가해서 기본 authentication 설정을 바꾸어주면 이전 버전의 MySQL 처럼 접속 할 수 있다.


PASSWORD: password
docker run -d --name some-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql --default-authentication-plugin=mysql_native_password
Empty PASSWORD
docker run -d --name some-mysql -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql --default-authentication-plugin=mysql_native_password
Empty PASSWORD & Binding localhost
docker run -d --name some-mysql -p 127.0.0.1:3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql --default-authentication-plugin=mysql_native_password


'개발 > docker' 카테고리의 다른 글

MySQL 8 on docker  (1) 2018.11.04
Redis on docker  (0) 2018.08.13
Running RabbitMQ on docker  (0) 2017.12.19
docker ubuntu apt 미러 서버 교체하기  (1) 2017.07.08
  1. Favicon of http://tvple.me/video BlogIcon 유뷰트 동영상 2020.07.15 14:54

    잘 보고 갑니다~~

docker run --rm --name some-redis -it -p 6379:6379 redis redis-server --requirepass password --bind 0.0.0.0

'개발 > docker' 카테고리의 다른 글

MySQL 8 on docker  (1) 2018.11.04
Redis on docker  (0) 2018.08.13
Running RabbitMQ on docker  (0) 2017.12.19
docker ubuntu apt 미러 서버 교체하기  (1) 2017.07.08
docker run -d --hostname my-rabbit --name rabbitmq -p 8080:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq:3-management


'개발 > docker' 카테고리의 다른 글

MySQL 8 on docker  (1) 2018.11.04
Redis on docker  (0) 2018.08.13
Running RabbitMQ on docker  (0) 2017.12.19
docker ubuntu apt 미러 서버 교체하기  (1) 2017.07.08

+ Recent posts