목록Infra -------------------------/DOCKER (17)
도찐개찐
Issue Docker container 만들고 처음엔 학습이 됐는데 갑자기 No CUDA GPUs are available nvidia-smi 찍어보면 Failed to initialize NVML: Unknown Error in Docker after Few hours 호스트가 데몬 다시 로드(또는 유사한 활동)를 수행합니다. 컨테이너가 systemd를 사용하여 cgroup을 관리하는 경우 daemon-reload는 "NVIDIA GPU에 대한 참조가 있는 모든 유닛 파일을 다시 로드하도록 트리거합니다." 그러면 컨테이너가 다시 로드된 GPU 참조에 액세스할 수 없게 됩니다. 문제로 인해 문제가 발생했는지 확인하는 방법 : 컨테이너에 여전히 GPU 액세스 권한이 있는 경우 " host " 터미널을 열..
1. NVIDIA Container Toolkit 설치 NVIDIA Docker는 이제 NVIDIA Container Toolkit으로 대체되었습니다. 이를 설치하려면, 먼저 NVIDIA의 GPG 키와 저장소를 추가해야 합니다. 다음 명령어를 실행합니다 $ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) $ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - $ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/..
Docker Nginx OpenSSL 설정 1. Docker nginx 컨테이너 SSL 포트 expose Nginx 컨테이너 생성: Nginx 컨테이너를 생성합니다. 이를 위해 Docker 명령어를 사용합니다. 예를 들어, 기본 Nginx 이미지를 사용할 수 있습니다 $ docker run --name my-nginx -p 80:80 -p 443:443 -d nginx 2. Docker nginx 컨테이너 내부 접속 $ docker exec -it my-nginx bash 3. nginx 컨테이너 OpenSSL 설치 $ apt -y update && apt -y install openssl 4. nginx 컨테이너 SSL 인증서 생성 $ mkdir /etc/nginx/ssl && openssl req -..
이미지 centos:7를 사용하려고 했더니 systemctl을 사용할 수가 없다 ;; ubuntu에서는 잘 됐던거 같은데 centos은 안되는게 왜케 많은지 모르겠다 [user01@master ~]$ docker run -it centos:7 bash [root@9fa1db10b89c /]# systemctl Failed to get D-Bus connection: Operation not permitted 1. 컨테이너 해결방법 --privileged 옵션과 -d 옵션으로 /sbin/init을 실행한후 exec로 /bin/bash를 실행시켜야 한다 $ docker run --privileged -d --name mycentos centos:7 /sbin/init $ docker exec -it myce..
$ docker pull python:3.9.12 1. Container 생성 Python 환경의 container를 생성합니다. setting은 아래와 같이 진행하면 되고 Jupyter는 기본적으로 8888포트를 사용하기 때문에 Container의 8888 port를 host port에 연결시켜야 합니다. host의 8888 포트를 container의 8888 포트에 연결시켜주는 예시 코드입니다. # Host에 mount할 폴더 /home # container의 폴더 /root # port (host port):8888 $ docker run -d -it --name jupyter -p 8888:8888 --mount type=bind,source=/home,target=/root python:3.7...
1. VM(Virtual Machine)이란? VM(virtual machine)의 정의는 컴퓨팅 환경을 소프트웨어로 구현한 것, 즉 컴퓨터 시스템을 에뮬레이션(가상현실화)하는 소프트웨어라고 하며, 가상머신상에서 운영 체제나 응용 프로그램을 설치 및 실행 할 수 있다고 한다. VM에 대해 구글링 하다보면 하이퍼바이저에 대한 기술 언급이 많이 되는 것을 알 수 있다. 2. 하이퍼바이저(Hypervisor) 하이퍼바이저(hypervisor)는 호스트 컴퓨터에서 다수의 운영 체제(operating system)를 동시에 실행하기 위한 논리적 플랫폼이다. 이는 소프트웨어로 구성되며 물리적 머신에 다수의 가상머신을 띄워 분할할수 있도록 도와준다. 하이퍼바이저는 단일 하드웨어에서 여러 다른 가상 머신을 호스팅할 수..
docker container와 image들을 모두 삭제했는데도 docker가 차지하는 용량이 매우 많았다. 어디서 용량을 잡아 먹는지 찾아 봤더니 /var/lib/docker/overlay2 디렉토리에서 정체를 알 수 없는 데이터들이 용량을 잡아 먹고 있었다. docker 이미지를 생성하고 커밋하는 과정에서 쌓인 데이터로 추정되는데 해당 데이터를 삭제하는 방법은 다음과 같다. 참고로 다음 명령을 수행하면 작업했던 내용이 날라갈 수 있으므로 주의해야 한다. $ sudo docker system prune --volumes 참고 https://stackoverflow.com/questions/46672001/is-it-safe-to-clean-docker-overlay2
Putty, Mobaxterm 등 SSH 프로토콜로 Docker Contrainer에 접는하는 방법을 알아보자. 1. 포트를 개방한 컨테이너 생성 먼저 외부에서 접근할 포트랑 내부에서 사용할 포트를 바인딩 시켜서 컨테이너를 생성해야 한다. 생성된 컨테이너에서 추가로 포트를 여는 작업은 까다로운 것 같다. 그와 관련된 글은 아래 주소에 있다. https://prup.tistory.com/54 docker run -it -p 5222:22 -p 5280:80 --name 'deep_1' pytorch/pytorch:1.9.0-cuda10.2-cudnn7-devel -> 외부에서 5222포트로 접근하면 내부 22번 포트로 연결된다. 2. 필수유틸 설치 apt-get update apt-get install n..