관리 메뉴

ComputerVision Jack

Docker 구축 본문

Computer Vision/Vision Note

Docker 구축

JackYoon 2021. 3. 21. 18:50
반응형

오늘은 Docker에 대해 알아보고 서버에 Docker를 구축해보는 시간을 가져보려합니다.

subicura.com/2017/01/19/docker-guide-for-beginners-1.html

 

초보를 위한 도커 안내서 - 도커란 무엇인가?

도커를 처음 접하는 시스템 관리자나 서버 개발자를 대상으로 도커 전반에 대해 얕고 넓은 지식을 담고 있습니다. 도커가 등장한 배경과 도커의 역사, 그리고 도커의 핵심 개념인 컨테이너와 이

subicura.com

우선 리눅스 환경과 container에 대한 개념이 없던 저는 위 링크에 연결된 블로그를 참조하면서 docker에 대한 지식을 쌓았습니다. 한번 읽어보셔서 docker를 이해하시는 것을 강력 추천드립니다.

 

자 이제 docker를 이해하면 직접 서버에 docker를 설치하는 과정을 진행하려고합니다.

오늘은 docker를 구축하는 과정까지 진행하고 다음에 설치된 docker를 이용하여 ssh로 local과 연결하여 직접 실행해보는 시간을 진행하려고합니다.

 

우선 원격 접속을 통해 서버로 들어갑니다. (여기서 서버는 리눅스 환경입니다.)

서버의 리눅스 환경 창

원격 접속을 통해 서버로 들어간 후, C + A + T 명령어로 리눅스 서버에 터미널을 실행합니다.

Docker에는 2가지 버전이 존재합니다.

1) 그냥 Docker 2) Nvidia Docker

우리는 gpu를 사용하여 모델을 학습을 진행해야하기 때문에 Nvidia Docker를 설치해야합니다.

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker

 

Installation Guide — NVIDIA Cloud Native Technologies documentation

On RHEL 7, install the nvidia-container-toolkit package (and dependencies) after updating the package listing: Restart the Docker daemon to complete the installation after setting the default runtime: Note Depending on how your RHEL 7 system is configured

docs.nvidia.com

 

해당 시이트에 들어가시면 Nvidia-Docker를 설치하는 방법이 나와있습니다. 해당 사이트 대로 진행 하신 후, 사이트에서 nvidia-smi를 실행하는 부분까지 진행하시면, 서버에 docker가 설치된 것을 알 수 있습니다.

 

위 과정을 지나면 docker가 서버에 설치됩니다. 정말 간단합니다. 이제 docker에 관한 전반적인 명령어입니다

$ docker -v 명령어

해당 명령어를 통해 설치된 docker의 명령어를 확인할 수 있습니다.

 

$ docker ps 명령어

해당 명령어를 통해 실행중인 모든 container 목록을 출력합니다.

하지만 그냥 docker ps를 사용하면 Docker Demon error 문구를 만날 수 있습니다. 그 이유는 사용자가 docker socket에 접근할 권한이 없기 때문입니다. 따라서 사용하시려면 sudo를 붙여서 사용합니다.

 

반복하여 sudo를 붙일 수 없기 때문에 sudo usermod -aG docker $USER, sudo su -$USER를 사용하여 docker 그룹에 사용자를 추가합니다.

 

이제 이미지를 사용하여 docker 컨테이너를 제작해야합니다. image란 docker에서 실행해야하는 것입니다.

$ docker pull image:tag 명령어

해당 명령어를 통해 docker hub에서 필요한 image 파일을 찾아서 가져옵니다.

hub.docker.com/

 

Docker Hub

We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy

hub.docker.com

저는 tensorflow 1.14 버전을 사용하기 때문에 image->tensorflow/tensorfow 를 검색하고 Tag 정보로 1.14를 가져왔습니다. Tag 정보에 대한 default는 (latest로 되어있습니다.)

 

위 과정이 끝나면 docker image를 가져오게됩니다.

$ docker images 명령어

해당 명령어를 통해 docker image의 종류를 확인합니다.

다음은 위의 tensorflow/tensorflow 이미지를 활용하여 컨테이너를 생성해봅니다.

docker run --gpus '"device=0","capabilities=compute,utility"' -it -d -v /host/dir:/container/dir -p 9999:22 –p 9998:6006 image_name /bin/bash

위의 명령어를 통해서 container를 생성할 수 있습니다. 해당 명령어에 대해 간략하게 설명하자면

  • device는 해당 서버의 사용할 gpu의 번호를 입력합니다.
  • 다음 /host/dir : /container/dir 경우 마운트할 디렉토리를 설정합니다. 서버에서 내가 사용할 폴더에 접근해 pwd 명령어를 사용하면 해당 host/dir를 알수 있고, 이제 제가 해당 디렉토리에 접근할 container/dir를 설정하면됩니다. 
  • port 번호를 2개 설정하였습니다. 하나는 ssh를 위한 port이고 하나는 tensorboard를 사용하기 위한 port 번호 입니다.

위 과정을 통해 container를 제작합니다.

이제 $ docker ps 명령어를 사용하면 아까와는 다르게 생성된 container를 확인할 수 있습니다.

이렇게 docker를 설치하고 image를 가져와서 container까지 생성하는 진행을 해보았습니다.

다음엔 해당 container를 사용하여 ssh로 local에서 학습을 진행하는 시간을 가져보겠습니다.

반응형

'Computer Vision > Vision Note' 카테고리의 다른 글

ssh를 이용한 Docker 실행  (0) 2021.04.17
Data Augmentation  (0) 2021.03.30
Vision Task Workflow  (0) 2021.03.14
Comments