일지/막학기 전까지(23.02.15~23.03.01)

20230221화-도커

제로타이 2023. 2. 22. 01:34

 

목차

    도커를 들어가기 전에

    내가 아직 잘 모르겠는 부분. 클라우드 서비스를 이용한다치자. 그러면 그 서비스에 내가 어떻게 상호작용하는가? AWS는 API를 사용한다고? 아직까지는 어떤 식으로 되는 건지 잘 모르겠다. 내 직관에는 이러한 류의 서비스를 받는다 하면 CLI 환경의 터미널이라도 주어져야 할 것 같은데, 그렇다면 OS는 깔려 있어야 하는 것이다. 근데 여태 이야기를 봤을 때는 그런 개념으로 접근하는 게 아닌 것 같단 말이지. 

    AWS EC2로 서버 만들기 (velog.io) 아닌데. 그냥 내가 아는 개념이 맞는 것 같은데.
    내가 왜 이것에 물음을 가지느냐. 도커가 필수적인 요소는 아니라고 생각하기 때문이다. 환경 관리에 있어서는 도커가 어마무시하게 편리한 것은 정말 말할 것도 없다. 그러나 여태 팀과의 이야기 중에서는 도커가 꼭 필요하다는 듯한 인상을 받았어서 내가 잘못 알고 있던건가 궁금했던 것이다. 가령 부캠에서 제공해준 서버는 이미 도커 기반으로 서버가 부여되어 있기 때문에 여기에서 추가적으로 도커를 만지는 게 굉장히 까다롭다고 했는데, 혹시 클라우드 플랫폼도 그러한 건가 싶었다.
    그렇다고 해서 도커를 쓰지 않을 것은 또 아니다. 환경 관리를 하는데 있어서 도커를 쓰지 않으면 무얼 쓰나.

    도커라 하면 과거에 42에서 조금이지만 공부를 한 적이 있다. ft_server. 지금 보면 그 과제를 가장 열심히 했어야 할 것 같기도 하네. 도커 사용에 nginx도 써보고 mysql, 진짜 별 거를 다 간략하게 써봤다. phpmyadmin? 뭐 그런 것도 있었던 것 같고.
    지금 보면 그때 이 내용들을 다 숙지했다면 정말 난 실력자가 됐을지도 모르겠다.

    내가 이 시기에 정말 잘한 것 중 하나가, 내 과제 수행 일지를 기록으로 죄다 남겼다는 것이다. 사실 따지자면 일지는 아니다. 내가 실제로 과제를 진행한 기간은 일주일이나 그정도 되지만 42에서는 매일 일지를 제출할 것을 요구했기 때문에 나는 의도적으로 일지 상에서 과제 진행 기간을 늘렸다. 혹여 내가 무슨 일이 있어 제대로 공부를 하지 못하더라도 일지 상에서 나는 공부를 하고 있는 것처럼 보이도록 세이브 원고를 둔 것이다. 그리고 정말 일이 생겨서 이후에는 한달 만에 마친 cub3d로 거의 3달을 울궈먹었다. 지금 보면 어찌나 비통한 일이냐.

    감상에 젖을 시간 없다...지만 그래도 과거의 글을 읽는 것은 결국 말 그대로 일기를 보는 것 아닌가. 그 시절 기억도 새록새록이다. 몇 년 후의 내가 몇 년 전의 내 글을 읽고 있는 이 글을 보고 또 무슨 글을 쓰겠지. 그 시기의 나는 더 이상 nginx를 느징스라 부르지 않을 지도 모르겠다. 하지만 아직까지는 어감이 맘에 드는 관계로 느징스!

    ㅋㅋㅋ 3년 전의 나는 SQL을 공부했는데 왜 지금의 나는 몰랐냐. ft_server는 혼자 하기 매우 벅찬 내용을 담고 있어서 다른 사람의 코드를 계속 따라치면서 공부했었다. 그러니 빠르게 많은 내용을 훑었지만, 그만큼 휘발된 것도 많은 것이다. 

    도커 도전

    뭐.. 대충 이전 글을 봤지만, 결국 참고용일 뿐이다. 다른 사람의 글보다는 아무래도 내 글이 내게는 더 잘 읽히는 법. 
    과거에는 WSL에 대고 도커를 깔았었는데, 지금 보니 그냥 일반 터미널에도 도커가 깔려있기는 한 모양이다. 그렇다면 지체할 필요 없이 도커파일을 만들던가, 허브에서 가져와서 사용해보자.

    허브에 있는 이미지 중에 파이썬이 적혀있는 것을 아무거나 가져와봤다. 보니까 도커파일이 열리더라고. 나는 허브에 올라가있는 게 뭐 데비안처럼 운영체제 같은 것들만 올라가 있는 것인 줄 알았는데, 실상 보니까 그냥 도커파일들만 즐비했다. 아무튼 그 도커파일을 그대로 내 로컬에 저장. 그 다음에는 build를 통해 이미지로 만들어준다. 
    엄청 오래 걸린다..! 내일 약속 때문에 오늘 최대한 일을 마치고 가려는데..

    고려해봐야 할 요소가 몇가지 있다.

    • 우리가 클라우드 서버를 빌려서 거기에 도커를 쓴다면 허브에서 적당한 파일을 가져다 써야할 것이다. 불필요하게 많은 파일을 다운 받게 되는 경우가 생겨서 의도치 않게 비용이 더 나가는 일은 있어서는 안 될 것이다.
    • 우리가 쓰던 부캠 서버와 똑같이 작동할 수 있어야만 한다. 이를 위해서 설치할 것들이 무엇인지 꼼꼼히 체크해볼 필요가 있다.
    • 포트 연결을 명확히 해서 이전과 똑같이 서비스 이용이 가능하도록 해야 한다.

    역겁의 시간이 흘러 방금 대충 이름 지은 mine이라는 이미지가 탄생했다. 몇 년전 것들은 방금 내가 노션으로 타임 슬립했던 그 당시의 이미지렷다. 한가지 잘 모르겠는 건 파이토치 딥러닝 관련 이미지. 저거는 도무지 뭔질 모르겠다. 3년 전에 만들어졌다니. 내가 어디서 저런 이미지를 가져온 것일까? 사실 내가 가져왔을 리는 절대 없다. 밑러닝 관련인가? 아니면 부캠?

    오호 저 이미지로 컨테이너까지 만든 흔적이 있다. gogo는 내 이전 코드를 그대로 치다보니 이름이 저리 됐는데, 아무튼 저 딥러닝 놈은 7달 전에 만들어졌다. 그러면 자그마치 9월이나 10월이라는 건데, 그러면 부캠 시작하기 전이나 그쯤인 것이다. 그때 내가.. 도커를 쓸 일이 있었다고..? 내가 모르는 역사의 현장을 목격하고 있는데 그게 내 이야기다. 이 무슨 술마시고 기억 끊긴 것 같은 이야기냐.

    어떻게 하는 건지.. 까먹었다..!

    왜 컨테이너를 만들고 컨테이너가 계속 exit되는가? 답은 도커파일이 커맨드로 python3를 걸고 있기 때문이었다. 내 로컬에서는 내가 환경변수를 이미 건드렸던가, alias를 사용했던가 하는 방식으로 python3를 이미 사용하고 있지 않다.

    음. 그런 문제는 아니었네. 제대로 된 명령어를 현재 컨테이너에 전달을 못해주고 있어서 생기는 문제라고 생각했다. 파이썬 인터프리터를 실행시키면 되는 게 아닐까 했는데 그게 아닌 모양이다. 그러면 왜 게속 exited가 뜨는 것일까? 그러면 무슨 명령어를 전달해야만 하는 것인가?

    아 됐다.
    ... 선조의 지식은 정말 최고야! 그 선조도 명확한 해결법을 찾지는 못했던 모양이지만, 아무튼 되면 장땡인 것 아닐까?

    흠. 허브에 있던 파일은 혹시나했는데 정말 파이썬 인터프리터만 실행시키는 녀석이다. 넘파이도 없고.. 서버로 쓰려면 터미널 환경을 쓸 수 있어야 한다고 생각한다.

    그러면 말한대로 CMD 명렁어만 고치면 되는 거 아닐까? 해서 그냥 bash로 바꿔버렸더니 잘 실행된다.

    도커 설정

    아까부터 넘파이 되는지만 확인하려는데 자꾸 딴지가 걸린다. 이번에는 아무래도 파이썬 버전이 너무 높은 게 문제인가 보다. 별 게 다 문제다!
    일단 넘파이부터 깔 수 있게 하는 것이 목표. 그다음에는 서버의 requirement를 그대로 가져다 박아볼 건데, 당연히 안 되겠지만, 그러면서 조금씩 진전을 할 수 있을 것 같다.

    그런데 그보다.. 컴퓨터가 고장난 것 같다. 애가 말을 안 듣는다! 터미널이 먹통이다. 터미널만 먹통인 줄 알고 스샷을 따려는데 스샷도 제대로 안 찍히는 게 진짜 문제가 생긴 것 같다. 

    허어.. 일단 보니까 도커로 컨테이너를 만드는 순간부터 컴퓨터가 굉장히 느려진다. 이것때문에 컴터를 몇번 껐다 키는 건지. 쓰던 글도 날아갔네
    Vmmem 점유율 해결하기 (velog.io) 지금 보니까 이러한 이슈가 있다고.

    실제로 보니 내 컴퓨터에도 같은 현상이 발생하고 있었다. 해결법은 그냥 직접 설정파일을 건드려서 최대 메모리 점유율을 제한하는 것. 대충 글에 나온대로 실행하고 오늘은 이만 마치련다. 

    현재 어마무시하게 많은 트러블슈팅을 하고 있는데, 뭣 하나 제대로 해결되는 게 없다. 이게 버전 관리의 참 묘미지. 참 철학적이다.

    docker cp ./srcs  컨테이너아이디:/home

    docker exec -it  컨테이너아이디 /bin/bash

    회고 및 다짐

    오늘은 알고리즘 공부를 하는데 조금 많이 치중했다. 어제 문제를 풀면서 헤매는 내 자신을 보면서 실력이 많이 다운됐다는 것을 느꼈고, 폼을 올리기 위해서는 다시 충분히 감을 잡는 시간을 들여야할 것 같았기 때문이다.

    다시 도커를 만지니까 아주 정신이 혼미해지는 게 42하던 시절의 내가 받았던 고통이 살짝 느껴졌다. 지금도 어려운데 그때는 뭣도 모르던 시절이니 더했겠지. 이 난관을 극복하는 방법은.. 그냥 계속 해보는 것밖에 없다고 생각한다. 아직 감이 안 잡혀있는 상태인 것이다. 머릿속에 메뉴얼을 만들어내야 한다. 이 모든 것들을 처리할 수 있는 대분류 메뉴얼이 완성돼야 한다. 그전까지는 계속 굴러봐야겠지.