개발환경을 구축하고 사용하다 보면 버전이 꼬이고.. 의존성 문제가 발생하고..
필요한게 설치가 안되고.. 동작 하던게 동작을 안하고... 하하.. 스트레스..
docker를 활용하여 환경을 구축하면 많은 문제를 해결 할 수 있을것 같아서 공부하면서 사용 해 보기 시작
개념은 공부하면서 천천히 다시 쌓아야지..
기본 Docker 설치
-
오래된 버전의 도커 삭제
$ sudo apt-get remove docker docker-engine docker.io
-
필요 패키지 설치
$ sudo apt-get update && sudo apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ software-properties-common
-
패키지 저장소 추가
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" $ sudo apt-get update && sudo apt-cache search docker-ce >> docker-ce - Docker: the open-source application container engine
-
docker-ce 설치
$ sudo apt-get update && sudo apt-get install -y docker-ce $ sudo usermod -aG docker $USER # 권한설정
Nvidia-docker 설치
Nvidia GPU 사용할거면 이 방법을 이용하는것이 편리하다
이 단계를 진행하기 전에 NVIDIA 드라이버가 설치되어 있어야 한다.
-
저장소 추가
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \ sudo apt-key add - $ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) $ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \ sudo tee /etc/apt/sources.list.d/nvidia-docker.list $ sudo apt-get update
-
nvidia-docker 설치
$ sudo apt-get install -y nvidia-docker2 $ sudo reboot
nvidia-docker를 설치 한 후에는 재부팅을 하거나 아래 명령어로 도커대몬을 재실행 해 준다
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
Nvidia-docker 찾기
-
docker hub link : https://hub.docker.com/r/nvidia/cuda/tags/
-
접근은 nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04 와 같은 형태로 한다.
-
다운로드는 다음과 같이 가능하다
$ docker pull nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04
Docker 옵션
-
컨테이너 생성 예제
$ docker run --runtime=nvidia -it -v /data:/data nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04 /bin/bash
-
run :
-
ps : 동작중인 컨테이너 확인 / -a 파라미터 추가하면 정지된 컨테이너도 확인 가능
-
rm : 컨테이너 지우기
-
rmi : 이미지 지우기
-
-it : 키보드와 마우스를 사용 가능하도록 한다.
-
-d :
-
exec : 시작 된 컨테이너 내부로 진입
$ docker exec -it [CANTAINER NAME] /bin/bash
GUI를 사용하는 컨테이너 생성
-
기본 생성 방법에서 공유폴더 및 설정 몇가지를 추가로 포함 해 준다.
$ docker run --runtime=nvidia -it -v /run/user/1000:/run/user/1000 -v /dev:/dev -v /tmp/.X11-unix:/tmp/.X11-unix:ro --privileged --ipc=host --shm-size=256m --net=host -e DISPLAY=$DISPLAY -e XDG_RUNTIME_DIR=/run/user/1000 -v /home/user/docker_share/ubuntu-openpose:/home/user/docker_share/ubuntu-openpose nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04 /bin/bash
-
호스트 환경에서 아래 명령어를 실행
$ xhost +local:docker
Docker 컨테이너 환경설정
-
기본 언어 및 로케일 등 설정을 위해 컨테이너 안에서 실행
$ apt update $ apt install -y dialog language-pack-en $ export LANGUAGE=en_US $ export LANG=en_US.UTF-8 $ export LC_ALL=en_US.UTF-8 $ update-locale
-
기본 개발을 위한 라이브러리 등 설치
$ apt install -y sudo wget git vim cmake cmake-qt-gui python-dev python-pip python-numpy $ pip install --upgrade pip $ apt install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libboost-all-dev libgoogle-glog-dev liblmdb-dev libopenblas-dev libatlas-base-dev
문제 해결
-
docker-ce 가 설치되지 않을 경우
$ sudo add-apt-repository ppa:ubuntu-sdk-team/ppa $ sudo apt-get update $ sudo apt-get install docker-ce # 이제 설치 가능 (의존성 문제 해결)
-
docker에 root로 진입 할 경우 환경변수 설정은?
- user로 진입하면 /home/user/.bashrc 에서 보통 작업하지만 root로 진입 할 경우에는
/etc/bash.bashrc 에 선언하면 된다. - 또는 /root/.bashrc 에 사용 가능. (여기가 조금 더 직관적이군.)
- user로 진입하면 /home/user/.bashrc 에서 보통 작업하지만 root로 진입 할 경우에는
-
"Could not connect to display" 문제 해결
sudo docker run --rm -it -v /run/user/1000:/run/user/1000 -v /dev:/dev -v /tmp/.X11-unix:/tmp/.X11-unix:ro --privileged --ipc=host --shm-size=256m --net=host -e DISPLAY=$DISPLAY -e XDG_RUNTIME_DIR=/run/user/1000 /bin/bash
'Programming > Git, Docker' 카테고리의 다른 글
Docker image를 저장/배포하자 (0) | 2019.09.16 |
---|---|
Git 에서 사용하는 명령어 정리 (0) | 2018.01.15 |