본문 바로가기

Server71

[MYSQL] LOAD DATA 사용하기 MYSQL 데이터를 마이그레이션 해야 하는 일이 발생 했다. 데이터를 밀어 넣기 위해 아래와 같이 sql alchemy를 이용해서 작업을 진행했는데.. 속도가 너무나 느렸다. 1건 당 commit을 진행하도록 코드를 작성한 것도 느린 속도에 큰 영향을 끼쳤을 것 같다. for value in valuelist: try: item = db_session.query(TEST).filter_by(id = value['id']).first() if item == None: test = TEST(value) db_session.add(test) db_session.commit() except ValueError as e: log.error('insert error %s' %(e)) for 문으로 10000개씩 묶.. 2017. 11. 7.
tcpdump로 네트워크 패킷 잡기 CENTOS에서 tcpdump를 이용해서 network packet을 잡아보자. $> sudo tcpdump -i any host [host 주소] 위와 같이 입력하면 host주소를 통해 들어오고 나가는 ip:port 정보를 확인해 볼 수가 있다. 또한 현재는 -i any를 통해 모든 네트워크 카드에 대해 패킷을 잡았는데, -i eth0 혹은 -i eth1 등으로 변경함으로써 특정 이더넷 카드만 지정해서 패킷을 확인해 볼 수도 있다.또한 아래와 같이 특정 port를 명시해서 특정 port에 해당하는 ip 패킷만 확인해 볼 수도 있다.$> sudo tcpdump -i any port [포트번호] 2017. 10. 26.
mysql 볼륨 위치 바꾸기 docker container내에 mysql을 설치하는 경우가 종종 있는데, 대부분 이러한 경우에 mysql volume 위치를 docker 공유 볼륨 쪽으로 바꿔서 위치시켜야 한다. 만약 해당 위치를 바꾸지 않는다면 mysql에 데이터가 쌓일수록 해당 컨테이너의 크기는 커지게 되고 결국 image 크기도 기하급수적으로 커질 것이다. 또한 공유 볼륨에 있지 않은 mysql 데이터의 경우 만에 하나라도 컨테이너가 삭제가 되면 mysql에 있는 모든 데이터가 하루 아침에 날라가게 된다.그래서 docker 환경에서의 mysql 볼륨의 위치 변경은 필수적이다.그럼 이제 어떻게 mysql 볼륨을 바꾸는지 살펴보자. 우선 mysql부터 설치하자. $> sudo apt-get install mysql-server-5.. 2017. 8. 29.
docker image save load 하기 부득이하게 docker hub의 사용이 불가한 경우(폐쇄망)에는 이미지를 로컬로 다운 받은 후 다운 받은 이미지를 배포해야 하는 경우가 있다.이러한 경우에 상당히 유용한 명령어를 소개한다.우선 이미지를 로컬 파일로 다운받기$> sudo docker save -o [파일명] [이미지이름]:[태크]ex) sudo docker save -o test.tar test:0.1 다운 받은 이미지 파일을 load 하기$> sudo docker load -i [파일명] ex) sudo docker load -i test.tar 위와 같이 실행하면 docker hub로 이미지 다운 없이도 무사히 이미지를 해당 서버에 배포할 수가 있다. 2017. 2. 27.
docker에서 crontab 동작 docker container 내에 서비스를 구축하고 나서 crontab으로 스케쥴을 걸어 놓으려고 했는데.. '아뿔사!!!' docker container 내에서 crontab이 동작을 하지 않는다... 몇 몇의 링크를 찾아본 결과 https://www.ekito.fr/people/run-a-cron-job-with-docker/ docker file을 만들때 crontab 까지 함께 만들어서 이미지로 구워주어야 하는 것 같다. 그런데 이렇게 되면 crontab을 수정할 때마다 이미지를 새로 구워야 하기 때문에, 다른 방법을 찾아보기로 했다. 해결책은 의외로 간단했는데, 아래의 명령어를 응용함으로써 해결했다. $> sudo docker exec -it [컨테이너명] /bin/bash docker con.. 2017. 2. 21.
우분투에 cuda 7.5 + nvidia-docker 설치하기 GPU를 사용할 수 있도록 nvidia에서 nvidia-docker를 지원하였는데, 이를 통해 docker 내에 있는 tensorflow에서 GPU 리소스를 사용해서 연산을 수행할 수가 있다. 참고로 nvidia-docker는 linux kernel 3.10 이상, docker 버전 1.9 이상에서만 설치되니 해당 요구사항이 충족되지 않는다면 커널과 docker 버전을 업데이트 하자.아래와 같이 docker를 지웠다가 다시 깔아도 기존에 있던 image와 container는 그대로 유지되니 걱정하지 말자. (실제로 해봄. container는 stop된 상태가 되는데, docker 재설치한 후 각각의 container를 다시 start 시켜주면 된다.) $> sudo apt-get purge docker... 2017. 1. 5.
Docker Compose Docker Compose 개요 하나의 docker container에 하나의 서비스만을 돌린다면 아무 문제가 없지만, 만약에 여러개의 docker container를 이용해서 하나의 서비스를 운영하는 것이라면 이야기가 달라진다.매번 각각의 container를 실행시키는 것은 너무나도 귀찮은일 일 것이다. Docker compose는 docker의 여러 container를 운영하고 정의하기 위한 툴이며, compose 파일을 구성함으로써 이러한 서비스들을 사용할 수가 있다. compose는 기본적으로 3가지 스텝을 가지는데, 1. Dockerfile에 app 환경을 정의한다. ( app을 쉽게 재생산하기 위함)2. docker-compose.yml 내에 앱을 구성하기 위한 service를 정의한다.3. .. 2016. 10. 13.
맥에서 docker daemon start stop 하기 맥에서는 docker를 각각의 virtual machine으로 띄우고 있다. 그래서 docker daemon이란 개념보다는 docker virtual machine이라는 개념이 더 명확하다. 맥에서 docker를 재시작 하고 싶다면 해당하는 virtual machine을 재시작 하면 된다. docker virtual machine 리스트 확인하기 $> docker-machine ls docker stop 하기 $> docker-machine stop [machine-name] docker start 하기 $> docker-machine start [machine-name] 2016. 4. 27.
awk와 uniq로 중복 제거하기 아래와 같은 포멧의 test.txt 파일을 ip별로 파싱해서 unique 한 ip 개수를 확인해야 하는 업무가 주어졌다. 사용자 ip - 메시지 uniq를 쓰면 중복 라인을 제거할 수는 있지만, 사용자 ip만 중복을 제거한 후 그 개수를 세어야 했기 때문에 awk를 사용해보았다. (awk는 잘 사용안하는 경향이 있던 나..) awk 사용은 아래와 같이 진행 $> awk 'BEGIN {FS="-"} {print $1}' test.txt 위의 명령어를 해석하자면 test.txt 파일의 필드 구분자 -를 라인별로 파싱해서 파싱한 첫번째 단어를 출력하라가 된다.위와 같이 명령어를 치면 '사용자 ip - 메시지' 중에서 '사용자 ip'만 출력이 된다.만약 print $2를 준다면 '메시지'가 출력될 것이다. 그 .. 2015. 11. 10.