Data Engineering(Pipeline, Hadoop...)/Docker 7

[Docker] Jupyter에 가상환경 kernel 추가하기

도커 컨테이너를 활용해, jupyter를 포트포워딩해서 띄운 경우, 다른 가상환경에 설치된 모듈을 이용한 개발이 필요할 때가 있다. 이런 경우, 우선 터미널창에서 가상환경을 실행해보자. (나 같은 경우에는 airflowenv 라는 가상환경을 기존에 가지고 있었다.) # 가상환경 실행 source ~/[나의 가상환경 이름]/bin/activate source ~/airflowenv/bin/activate # ipykernel 설치 pip install ipykernel # 커널 실행 python -m ipykernel install --user --name [나의 가상환경 이름] --display-name [Jupyter 커널에 표기하고자 하는 이름] python -m ipykernel install --..

Docker Container 날짜(date) 한국시간(KST)으로 변경하기

date 간단하게 date 명령을 통해, 현재 날짜를 확인해보면, 아래와 같이 UTC 기준의 날짜와 시간으로 보이는 것을 확인할 수 있다. 이 시간대를 KST로 바꾸는 것은 간단하다. # systemd 설치 및 Seoul 시간 리스트 확인 apt install systemd timedatectl list-timezones | grep Seoul # 표준시를 Asia/Seoul 로 셋팅 timedatectl set-timezone Asia/Seoul # date 확인 host 서버의 시간을 바꾸는 것은 위와 같이 하면 간단하게 변경이 가능하다. 그러나, Docker Image로 올라간 container 내에서는 위와 같은 방법으로 진행할 경우, 아래와 같은 에러를 발생시킨다. System has not b..

Docker 파헤치기 4(컨테이너 이미지화[commit] -> 배포[push])

오늘은 생성한 컨테이너 환경을 누군가에 공유하고자 할 때 유용한 commit, push 기능에 대해 알아보겠다. 우선 작업한 컨테이너를 멈추어 주자 # docker stop docker stop [컨테이너명] docker stop my_container # 컨테이너 이미지화 docker commit [컨테이너명] [계정명]/[나의 이미지명 정하기]:latest docker commit my_container my_name/my_first_image:latest 이후, docker images 를 통해, 제대로 나의 컨테이너가 이미지화되어 올라갔는지 확인해보자. # 원격 Repository에 push 하기 위해 login --> 계정이 없으신 분은 hub.docker.com 에서 계정을 우선 생성하여야 한..

Docker 파헤치기 3(컨테이너 자원 할당)

여러 컨테이너를 운용하고, 각 컨테이너 별로 사용하는 사용자가 다르다면 서로의 자원이 공유되기 때문에 형평성이 맞게 자원을 분배 할당해야하는 시점이 올 것이다. 오늘은 서버 관리자로 잠깐 빙의해서, 각 컨테이너별 가상의 유저가 있다고 생각하고 자원을 균형있게 할당해보도록 하겠다. # 컨테이너 현재 상태 확인 docker inspect [컨테이너명] docker inspect my_container CpusetCpus, CpusetMems 가 " " 로 비어있는 것을 확인할 수 있다. 비어있는 부분을 채워주어야한다. # 컨테이너 별 현재 cpu, memory 사용량 확인 docker stats --format "table {{.Name}}\t{{.Container}}\t{{.CPUPerc}}\t{{.Mem..

Docker 파헤치기 2(데이터 공유 및 볼륨 마운트)

앞선 포스트에서 언급한 바와 같이, 데이터 공유 및 볼륨 마운트에 대해 알아보고자 한다. 데이터 공유라 하면, Host - Container 간 공유일 수 있고, Container - Container 간 공유일 수 있다. # Host -> Container 데이터 이동 docker cp [host 파일경로] [container name]:[container 내부 경로] (예시) docker cp ~/data/test.md my_container:/root/data/ # Container -> Host 데이터 이동 Host -> Container 로 이동과 반대로 명령을 하면 이동이 된다. docker cp [container name]:[container 내부 경로] [host 파일경로] (예시) do..

Docker 파헤치기 1(기본 명령어 및 옵션)

도커 컨테이너에 대한 간단한 명령어에 대해 알아보고자 한다. docker란 무엇인지, 컨테이너에 대한 개념은 기본적으로 알고 있다는 전제하에 실무에서 사용되는 기본적인 명령어들을 소개하겠다. 운영체제는 Windows가 아닌 Linux 이므로, 우선 리눅스 커맨드 창을 켜보도록 하자. 현재 내가 사용하고 있는 리눅스가 어떤 배포판을 가지고 있는지 확인해보겠다. cat /etc/issue # docker install sudo wget -qO- https://get.docker.com/ | sh # docker image 확인 docker images # docker conntainer 확인 (현재 올라와 있는 Container) docker ps # docker conntainer 확인 (모든 Contai..

Docker 컨테이너(jupyter)로 khaiii 형태소분석기 실행해보기

# 도커 컨테이너(tensorflow jupyter) 생성 docker run -d -p [포트 번호]:8888 --name [컨테이너 이름] tensorflow/tensorflow:latest-jupyter # 컨테이너 커맨드 접속 docker exec -it [컨테이너 이름] /bin/bash # cmake(빌드 도구) 설치 - 다양한 운영체제에서 문제없이 빌드하기 위해 필요 pip install cmake # git 저장소 clone git clone https://github.com/kakao/khaiii.git cd khaiii mkdir build cd build CXXFLAGS="-Wno-error=deprecated-copy" cmake .. # cmake로 khaiii, 리소스 빌드 ma..