안경잡이개발자

728x90
반응형

1. 신석기 시대 (정답: 1번)

신석기 시대는 농경과 정착생활이 시작된 시대로 기원전 8,000년 경에 해당합니다. 이 시기의 대표적인 유물로는 빗살무늬 토기가 있습니다.


- 명도전은 초기 철기 시대에 중국과 교류하기 위한 목적으로 사용되었습니다.

- 바퀴모양 토기는 가야 시대의 유물입니다.

- 잔무늬 거울은 초기 철기 시대의 유물입니다.

- 세형동검은 초기 철기 시대의 독자적인 기술이 들어간 유물입니다.


2. 부여 (정답: 4번)

부여는 12월에 영고라는 제천행사를 지냈습니다. 또한 왕 이외에 마가, 우가, 저가, 구가 등의 가들이 사출도를 나누어 다스렸습니다.


- 8조법은 고조선의 법률입니다.

- 천군이 다스리는 소도라는 지역이 있었던 곳은 삼한입니다.

- 동예의 책화 제도는 읍락 간의 경계를 침범할 경우 노비, 가축 등으로 보상하는 제도입니다.

- 동예의 특산품으로는 단궁, 과하마, 반어피 등이 있었습니다.


3. 무령왕 (정답: 4번)


무령왕릉은 충청남도 공주에 있으며 중국 남조의 영향을 받아 벽돌로 만들어졌습니다. 무령왕은 지방의 주요 지역에 22담로를 설치하고, 왕족을 파견하여 지방 통제력을 강화했습니다.


- 백제의 근초고왕은 박사 고흥을 시켜 '서기'를 편찬하도록 했습니다.

- 신라의 내물왕은 김씨의 왕위 세습을 확립했습니다.

- 백제의 침류왕은 동진으로부터 불교를 수용했습니다.

- 국자감은 고려의 교육기관입니다.


4. 삼국시대 (정답: 2번)

4세기 백제의 근초고왕은 평양성을 공격해 고구려 왕을 전사시켰습니다. 이후에 5세기 고구려의 장수왕은 한성을 공격하여 백제의 왕을 전사시켰습니다. 그러한 과정에서 장수왕은 427년 수도를 국내성에서 평양으로 옮겼습니다.


5. 금관가야 (정답: 5번)


금관가야는 벼농사와 철기 문화가 발전했던 나라입니다. 고구려의 공격을 받아 연맹의 주도권을 상실하였으며 덩이쇠를 화폐로 사용했습니다. 금관가야는 김수로왕이 건국하였다고 삼국유사에서 전해지고 있습니다.


- 골품제는 신라 시대의 신분제도입니다.

- 지방을 5도와 양계로 행정구역을 나누었던 나라는 고려입니다.

- 고조선은 한 무제의 공격으로 멸망했습니다.

- 백제의 귀족회의기구는 정사암입니다.


6. 불국사 삼층 석탑 (정답: 2번)


불국사 삼층 석탑은 2층 기단 위에 3층 탑신이 올라가 있는 구조이며 탑 내부에서 무구정광대다라니경이 발견되었습니다.


- 분황사 모전 석탑은 신라의 선덕여왕 때 지어진 탑입니다.

- 감은사지 삼층 석탑은 통일신라의 신문왕 때 완성된 탑입니다.


7. 삼국 통일 (정답: 5번)


신라는 기벌포 전투에서 당나라 군대를 물리치며 삼국 통일을 완수했습니다.


8. 지증왕 (정답: 1번)

신라의 지증왕은 국호를 신라로 정하고 '왕'이라는 칭호를 사용하기 시작했습니다. 또한 이사부를 보내 우산국을 정벌했습니다.


- 신라의 내물왕은 고구려의 광개토대왕의 도움을 받아 왜의 침입을 물리쳤습니다.

- 통일신라의 신문왕은 관료전을 지급하고 녹읍을 폐지했습니다.

- 진흥왕은 신라의 원시 청소년 단체인 화랑도를 국가적 조직으로 개편했습니다.

- 신라의 법흥왕 때 이차돈의 순교를 계기로 불교가 공인되었습니다.


9. 발해 (정답: 1번)


발해는 전국을 5경 15부 62주로 나누어 다스렸습니다.


- 관리의 비리를 감찰하는 사헌부는 조선시대의 기구입니다.

- 통일신라의 원성왕 때 독서삼품과가 설치되었습니다.

- 신라는 화백 회의를 통해 국가의 중요 정책을 결정했습니다.

- 통일신라는 상수리 제도를 통해 지방 세력을 견제했습니다.


10. 최치원 (정답: 4번)

최치원은 6두품 출신의 학자로 반공과에 급제했으며 '토황소격문'을 써냈습니다. 최치원은 신라 하대의 상황을 개선하기 위해 진성여왕에게 시무 10여조를 올렸으나 시행되지 못했습니다.


- 고려의 최충은 9재 학당에서 후학을 양성했습니다.

- 통일신라의 김대문은 화랑세기, 고승전 등을 저술했습니다.

- 신라의 승려 혜초가 인도를 다녀온 뒤 쓴 기행문은 왕오천축국전입니다.

- 고려 말의 신진사대부인 정도전은 '불씨잡변'을 통해 불교를 비판했습니다.


11. 개성 (정답: 1번)

고려의 수도 개성에는 만월대, 선죽교 등의 문화재가 있습니다.


- 개성의 선죽교에서 정몽주가 이방원 세력에 의해 피살되었습니다.

- 최충헌의 노비였던 만적은 수도인 개성에서 난을 도모하다가 발각되었습니다.

- 송상은 개성을 근거지로 활동하던 조선 후기의 사상입니다.

- 남북한 경제 협력의 일환으로 설치된 공단은 개성 공단입니다.


12. 태조 왕건 (정답: 3번)

고려의 태조 왕건은 북진 정책을 추진하였으며 지방 세력을 견제하기 위해 호족의 자제들을 수도에 머무르게 하는 기인 제도를 채택했습니다.


- 충선왕은 원의 수도 연경에 학문 연구기관인 만권당을 설치했습니다.

- 팔만대장경은 강화 천도기인 고종 때 제작되었습니다.

- 조선의 세종은 4군 6진을 개척했습니다.

- 고려의 성종은 12목에 지방관을 파견했습니다.


13. 고려 (정답: 4번)

도병마사는 고려의 회의 기구로 중서문하성과 중추원의 고위 관료들이 모여 주로 국방과 군사 문제를 다루었습니다.


- 고려의 삼사는 곡식의 회계나 출납에 대한 사무를 담당하는 기관입니다.

- 비변사는 여진이나 일본의 침입에 대비해 만들어진 임시 기구입니다.

- 상서성은 고려의 2성 6부의 2성 중 하나로 행정을 관장했습니다.

- 국군기무처는 갑오개혁을 추진했던 기관입니다.


14. 무량수전 (정답: 5번)

부석사 무량수전은 경상북도 영주에 위치한 고려시대 목조 건축물입니다.


- 금산사 미륵전은 전북 김제에 위치한 조선 후기의 건물입니다.


15. 고려와 송나라 (정답: 5번)

고려는 송나라에 종이, 인삼 등을 수출하고 송으로부터 비단과 서적을 수입했습니다.


- 의주와 만상은 조선 후기에 활동한 사상입니다.

- 기유약조는 조선 후기 광해군 때 일본과의 국교를 재개한 조약입니다.

- 연행사는 조선 후기에 청에 파견된 사절단입니다.

- 통일신라 시대에는 장보고가 설치한 청해진을 중심으로 해상무역이 이루어졌습니다.


16. 김윤후 (정답: 1번)

고려 시대의 김윤후는 몽골군이 고려를 침입했을 때 충주성에서 백성들을 이끌고 몽골군을 막아냈습니다. 충주성 전투가 있기 전에 처인성에서 적장 살리타를 사살하여 몽골군을 물리쳤습니다.


- 별무반을 조직하여 동북 9성을 개척한 사람은 윤관입니다.

- 고구려의 천리장성을 축조한 사람은 연개소문입니다.

- 쌍성총관부를 공격하여 철령 이북의 땅을 수복한 시기는 고려 말 공민왕 때의 일입니다.

- 고려 말의 최무선은 화룡도감에서 화약과 화포를 제조하여 왜구를 격퇴했습니다.


17. 공민왕 (정답: 4번)

고려 공민왕의 부인은 노국 공주이며, 신돈을 등용했습니다. 공민왕은 정민변정도감을 설치해 억울하게 빼앗긴 토지나 노비를 원래대로 돌리고자 했습니다.


- 과전법은 공양왕 때 처음 시행되었습니다.

- 조선 세종 때 칠정산이 편찬되었습니다.

- 조선 후기 인조 때 상평통보가 발행되었습니다.

- 고려의 광종은 과거제를 처음 도입했습니다.


18. 구휼 정책 (정답: 1번)

(가) 진대법: 고구려의 고국천왕 때 처음 시행된 법으로 봄에 곡식을 빌려주고 가을에 갚도록 했습니다.

(나) 제위보: 고려 광종 때 처음 설치된 빈민 구호 기관입니다.

(다) 사창: 흥선대원군은 사창을 설치해 향촌에서 자치적으로 운영하도록 했습니다.


19. 율곡 이이 (정답: 4번)

율곡 이이는 군주의 덕목에 대해 논의한 '성학집요'를 저술하여 선조에게 바쳤습니다.


- 동국통감은 성종 때 완성된 역사서로 고조선부터 고려의 역사를 담고 있습니다.

- 목민심서는 조선 후기 실학자 정약용의 저서로 수령의 본분에 대해 논한 책입니다.

- 반계수록은 조선 후기 실학자 유형원의 저서로 통치제도의 개혁 방안 등을 중심으로 저술한 책입니다.

- 제왕문기는 원 간섭기 충렬왕 시기 이승휴가 지은 역사서로 단군 이야기가 수록되어 있습니다.


20. 세조 (정답: 2번)


세조 때 집현전 학자들이 단종 복위 운동을 벌이다 발각되었습니다. 세조는 그 결과 집현전을 폐지했습니다.


- 전시과는 고려의 토지제도로 경종 때 만들어졌습니다.

- 훈민정음은 세종 때 반포되었습니다.

- 고려 광종 때 노비안검법이 시행되었습니다.

- 조선 태종 때 신문고가 처음 설치되었습니다.


21. 훈련도감 (정답: 5번)


훈련도감은 조선 후기 중앙군인 5군영의 하나로 급료를 받는 상비군 형태로 구성된 부대입니다.


- 어영청은 5군영 중 왕을 호위하는 부대입니다.

- 장용영은 정조 때 조직된 국왕의 친위부대입니다.

- 진위대는 을미개혁의 일환으로 편성된 근대적 지방군대입니다.


22. 대동법 (정답: 5번)


대동법은 광해군 때 경기도에서 처음 시행되어 선혜법이라고도 불렸습니다. 대동법이 시행되어 공납이 각 호마다 특산물로 부과되던 것이 토지에 따라 쌀, 동전 등을 부과하는 방식으로 바뀌었습니다. 이러한 대동법의 시행으로 공인이 등장하게 되었습니다.


- 고종 때 호포제가 시행되면서 양반에게도 군포를 징수했습니다.

- 영조 때 균역법이 시행되면서 부족해진 세수 충당을 위해 결작을 부과했습니다.

- 인조 때 영정법이 시행하면서 전세 납부액을 1결당 4두로 고정시켰습니다.

- 정조 때 신해통공을 시행하면서 육의전을 제외한 시전 상인의 금난전권이 폐지되었습니다.


23. 병자호란 (정답: 3번)

병자호란 때 윤집, 오달재, 홍익한은 청과의 화의를 반대했습니다. 병자호란 당시 임경업은 백마산성에 주둔했습니다.


- 배중손의 삼별초는 고려에 침입한 몽골에 대한 항쟁으로 진행되었습니다.

- 최익현의 의병장 활동은 을사늑약 체결 이후입니다.

- 권율이 행주산성에 활약한 것은 임진왜란 때의 일입니다.

- 묘청의 서경 천도는 고려의 인종 때의 일입니다.

728x90
반응형

Comment +1

728x90
반응형

1. 구석기 시대 (정답: 3번)


뗀석기는 구석기 시대의 대표적인 키워드입니다. 구석기 시대 사람들은 주로 동굴이나 막집에서 살았습니다.


- 소를 이용해 농사를 지은 것은 철기 시대입니다.

- 갈판과 갈돌로 곡식을 간 것은 신석기 시대입니다.

- 가락바퀴를 사용해 실을 뽑은 것은 신석기 시대입니다.

- 빗살무늬 토기는 신석기 시대의 유물입니다.


2. 고조선 시대 (정답: 3번)


위만은 고조선에 들어와 왕이 된 인물입니다. 고조선 시대에는 사회 질서를 유지하기 위한 8조법이 있었습니다. ('사람을 죽인 자는 사형에 처한다' 등)


- 백제의 시조 온조는 하남 위례성에 도읍을 정했습니다.

- 동예의 풍속으로는 책화가 있습니다.

- 천군과 소도가 존재했던 것은 삼한입니다.

- 제가 회의는 고구려의 귀족 회의 기구입니다.


3. 옥저 (정답: 4번)


옥저는 함경도 해안 지역에 위치한 나라로 고구려에 공물을 바쳤습니다. 가족 공동 묘 풍습이 있었으며 민며느리제가 있었습니다.


- 신라 시대의 신분 제도는 골품제입니다.

- 부여의 제천 행사로는 영고가 있습니다.

- 삼한에는 신지, 읍차 등의 지배자가 있었습니다.

- 부여에는 사출도가 있었습니다.


4. 금관가야(정답: 1번)


금관가야의 시조는 김수로이며 '알에서 태어난 아이'라는 이야기로 기록되고 있습니다. 금관가야는 양질의 철 제품을 생산하여 일본에 수출했습니다.


- 은병은 고려 시대의 화폐입니다.

- 고려 시대의 무역항은 벽란도입니다.

- 고구려의 고국천왕은 진대법을 실시했습니다.

- 동예의 특산물로는 단궁, 과하마, 반어피 등이 있었습니다.


5. 고구려 (정답: 1번)


고구려의 대표적인 왕은 차례대로 다음과 같습니다.


가) 소수림왕: 불교를 수용하고 태학을 설립한 왕입니다.

나) 광개토대왕: 신라를 지원하여 왜를 물리쳤습니다.

다) 장수왕: 국내성에서 평양으로 도읍을 옮겼습니다.


6. 진흥왕 (정답: 2번)


신라가 한강 유역을 차지할 수 있도록 한 왕은 진흥왕입니다. 이후에 북한산 순수비로 영토 확장에 대한 기록을 남겼습니다.


- 김흠돌의 난을 진압한 것은 신문왕입니다.

- 이사부를 통해 우산국을 복속시킨 것은 지증왕입니다.

- 신문왕은 관료전을 지급하고 녹읍을 폐지하여 귀족들의 경제적 기반을 약화시켰습니다.

- 문무왕은 매소성과 기벌포에서 당의 군대를 물리쳤습니다.


7. 통일 신라 (정답: 5번)


통일 신라의 원성왕은 왕권을 강화하려는 목적으로 독서삼품과를 실시하여 관리를 등용했습니다.


- 전문 강좌인 7재를 설치한 것은 고려 예종입니다.

- 경당은 고구려의 교육 기관입니다.

- 문헌공도 및 사학12도 융성한 시기는 고려 중기입니다.

- 양현고를 설치해 장학 기금을 마련한 것은 고려 예종입니다.


8. 발해 (정답: 4번)


발해의 문화유산으로는 이불병좌상과 돌사자상이 있습니다. 발해는 당으로부터 해동성국이라고 불리웠습니다.


- 도병마사는 고려의 회의 기구입니다.

- 백제는 정사암에 모여 국가의 중대사를 결정했습니다.

- 9주 5소경은 통일 신라의 지방 행정 조직입니다.

- 상수리 제도는 신라의 제도입니다.


9. 신라 (정답: 1번)

신라의 문화 유산으로는 청운교, 다보탑, 석가탑, 백운교 등이 있으며 경주 불국사가 대표적입니다.


10. 후삼국 시대 (정답: 4번)


(가): 후백제의 견훤은 백제 의자왕의 원수를 갚기를 다짐하였습니다.

(나): 후고구려의 궁예는 스스로를 왕이라 일컫고 고구려의 원수를 갚기를 다짐하였습니다.


- 고려 시대의 태조 왕건은 훈요 10조를 남겼습니다.

- 귀주에서 거란의 침입을 물리친 인물은 고려의 강감찬입니다.

- 신라의 장보고는 청해진을 설치했습니다.

- 견훤은 신라의 수도를 공격했습니다.


11. 광종 (정답: 4번)


고려의 광종은 광덕이라는 연호를 사용했으며 공신과 세력 숙청을 통해 왕권을 강화했습니다.  노비안검법을 실시하여 호족의 경제력을 약화시키기도 했습니다.


- 고려의 충선왕은 만권당을 설립했습니다.

- 고려의 경종은 전시과를 제정했습니다.

- 고려의 덕종과 고구려의 영류왕은 천리장성을 축조하도록 했습니다.

- 고려의 공민왕은 전민변정도감을 설치했습니다.


12. 고려의 무신 집권기 (정답: 2번)


고려의 무신 집권 시대에는 최충헌이 이의민을 제거했습니다. 또한 최충헌이 정권을 장악한 이후에 노비였던 만적이 반란을 도모했습니다.


- 고려의 성종 때 최승로가 시무 28조를 건의했습니다.

- 신라의 삼국통일 과정에서 김유신은 황산벌 전투에서 승리했습니다.

- 고려 태조 때 대광헌이 발해 유민을 이끌고 투항했습니다.

- 고려 예종 때 윤관이 별무반으로 여진을 정벌했습니다.


13. 고려시대 공민왕 (정답: 1번)


고려 때 원나라와의 강화 이후에 원나라는 정동행성을 설치해 고려의 내정을 간섭했습니다. 이후에 공민왕이 고려 관제를 복구합니다.


- 농사직설은 조선의 세종 시대 때 편찬되었습니다.

- 고려 예종 때 여진을 정벌하고 동북 9성을 축조했습니다.

- 고려 인종 때 이자겸의 난이 일어났습니다.

- 9서당 10정은 통일 신라 시대의 군사 조직입니다.


14. 고려의 탑 문화 (정답: 5번)


고려의 경천사지 십층 석탑은 대리석으로 만들어져 국립 중앙 박물관에 전시되어 있습니다.


- 정림사지 오층 석탑은 백제의 대표적인 석탑입니다.

- 감은사지 삼층 석탑은 통일 신라 초기의 석탑입니다.


15. 역사적인 고승들 (정답: 4번)


- 원효: 무애가

- 의상: 화엄일승법계도

- 혜초: 왕오천축국적

- 의천: 해동 천태종

- 지눌: 수선사


16. 이성계 (정답: 1번)


이성계는 요동 정벌이 어렵다고 말하며 위화된에서 회군하여 최영을 제거한 뒤 공양왕을 즉위시킵니다.


- 망이와 망소이는 공주 명학소에서 봉기했습니다.

- 서희는 거란 1차 침입 때 소손녕과의 담판으로 강동 6주를 획득했습니다.

- 발해의 무왕은 당의 동주를 공격합니다.

- 고려의 묘청은 서경 천도 운동을 일으킵니다.


17. 태종 (정답: 2번)


태종은 왕권을 강화하기 위해 6조 직계제를 시행합니다.


- 흥선대원군은 경복궁 중건을 위해 당백전을 발행합니다.

- 광해군은 방납의 폐단을 시정하기 위해 대동법을 시행합니다.

- 영조는 줄어든 재정을 보충하기 위해 결작을 부과합니다.

- 철종은 삼정의 문란을 바로잡기 위해 삼정이정청을 설치합니다.


18. 세종 (정답: 3번)


조선 세종 때 칠정산이 편찬되었으며 강우량 측정을 위한 측우기가 제작되었습니다.


- 거중기는 조선 정조 때 설계되었습니다.

- 동의보감은 조선 광해군 때 편찬되었습니다.

- 정상기의 동국지도는 조선 영조 때 제작되었습니다.


19. 성균관 (정답: 3번)


조선의 최고 교육 기관으로 한양에 있는 것은 성균관입니다.


- 서원은 사립 교육 기관입니다.

- 향교는 지방 교육 기관입니다.

- 4부 학당은 중등 교육 기관입니다.


20. 임진왜란 (정답: 5번)


조선 선조 시대 때 발생한 난은 임진왜란입니다. 권율은 행주산성 전투에서 승리합니다.


- 흥선대원군의 척화비는 병인양요와 신미양요 이후의 일입니다.

- 이종무의 대마도 정벌은 조선 세종 때의 일입니다.


21. 성종 (정답: 3번)


조선 성종은 경연을 활성화하고 사림을 등용했습니다. 또한 경국대전을 완성하였습니다.


- 조선 영조는 균역법을 제정했습니다.

- 조선 정조는 초계문신제를 시행하여 능력있는 신하를 재교육했습니다.


22. 간도 (정답: 3번)


백두산정계비는 조선과 청 사이에 백두산 일대 국경선을 표시하기 위해 세운 비석입니다. 1881년에 청나라가 간도를 개척하려고 하여 정계비를 조사하여 조선의 영토임을 주장했습니다.


- 안용복은 울릉도와 독도의 수호에 힘쓴 인물입니다.

- 제너럴 셔먼호 사건이 발생한 곳은 평양입니다.

- 보빙사는 조미 수호 통상 조약 이후에 파견된 사절단입니다.


23. 유형원 (정답: 4번)


조선 후기 실학자 유형원은 반계수록을 저술하였으며 균전론을 주장했습니다.


- 이익은 곽우론을 저술하엿으며 한전론을 주장했습니다.

- 박제가는 중상주의 실학자로 소비론 등을 주장했습니다.

- 박지원은 중상주의 실학자로 화폐 유통, 수레의 사용 등을 주장했습니다.


24. 조선 후기 (정답: 2번)


조선 후기에는 담배와 생강 등 상품작물을 재배하였고, 일본 및 청과의 교육으로 이익을 보았습니다.


- 조선 후기에는 모내기법이 확산되었습니다.

- 조선 후기에는 덕대가 광산을 전문적으로 경영했습니다.

- 조선 후기에는 독점적 도매상인인 도고가 성장했습니다.

- 조선 후기에는 국가에 관수품을 조달하는 공인이 활동했습니다.


25. 조선 후기 (정답: 5번)


조선 후기에는 풍속화가 유행했습니다.


- 조선 후기에는 홍길동전이 등장했습니다.

- 조선 후기 문화를 소리꾼이 있습니다.

- 조선 후기에는 청화 백자가 유행했습니다.

- 조선 후기에는 탈춤을 추는 광대가 있었습니다.


26. 비변사 (정답: 3번)


비변사는 변방 방비에 대한 긴급한 일 등이 있을 때 대신과 지변재신들이 한자리에 모여 계책을 세우기 위해 설치된 것입니다. 이후에 흥선대원군은 비변사를 혁파하고 의정부와 삼군부를 부활시킵니다.


- 박문국은 한성순보를 발행한 기관입니다.

- 좌사정과 우사정은 발해의 관직입니다.


27. 승정원일기 (정답: 5번)


승정원일기는 조선 시대 국왕의 비서 기관에서 왕명 출납 등을 기록한 책입니다. 2001년에 유네스코 세계 기록 유산으로 등재되었습니다.


28. 정조 (정답: 2번)


정조는 수원에 화성을 축조했으며 세자의 무덤을 현륭원으로 바꾸었습니다. 또한 국왕의 친위 부대인 장용영을 창설합니다.


- 조선 효종은 나선 정벌에 조총 부대를 파견합니다.

- 조선 예종은 여진족을 몰아내고 4군 6진을 개척했습니다.

- 조선 선조 때 임진왜란을 거치며 훈련도감을 설치했습니다.

- 조선 숙종 때 금위영을 설치하여 5군영 체제를 완성했습니다.


29. 추사 김정희 (정답: 1번)


추사 김정희는 세한도를 그렸으며 추사체를 창안했습니다.


- 박지원은 양반전을 그렸습니다.

- 유득공은 발해도를 집필했습니다.

- 김정호는 대동여지도를 제작했습니다.


30. 신미양요 (정답: 2번)


신미양요는 미국이 강화도의 광성보를 공격해 어재연이 결사 항전한 사건입니다.


- 1863년 고종 즉위

- 1868년 오페르트 도굴 사건

- 1871년 신미양요

- 1876년 강화도 조약 체결

- 1884년 갑신정변

- 1889년 함경도 방곡령 선포

- 1896년 아관파천


31. 갑오개혁 (정답: 1번)


갑오개혁을 통해 과부의 재가를 허용하고 과거제 및 신분제를 폐지했습니다.


- 어영청은 임진왜란 이후에 설치되었습니다.

- 조선 인조 때 영정법을 제정했습니다.

- 흥선대원군은 호포제를 실시했습니다.


32. 대한 제국 (정답: 5번)


대한 제국 시기에는 조선 국명이 변하여 대한국이 되었습니다.


- 대한 제국 시기에는 지계가 발급되었습니다.

- 대한 제국 시기에는 원수부가 설치되었습니다.

- 대한 제국 시기에는 실업 학교가 설립되었습니다.

- 대한 제국 시기에는 대한국 국제가 반포되었습니다.


33. 신민회 (정답: 1번)

신민회는 국권 회복을 목표로 하여 안창호, 이승후, 양기탁 등이 주요 인물로 활약한 단체입니다. 오산 학교, 대성 학교 설립과 태극 서관, 자기 회사 운영 등의 활동을 수행했습니다. 이러한 신민회는 105인 사건으로 해체되었습니다.


- 근우회는 기관지로 근우를 발행했습니다.

- 조선어학회는 한글 맞춤법 통일안을 발표했습니다.

- 의열단은 조선 혁명 선언을 활동 지침으로 삼았습니다.

- 보안회는 일제의 황무지 개간권 요구를 철회시켰습니다.


34. 임오군란 (정답: 2번)

임오군란은 구식 군인들이 일본 공사관을 습격하고 일본인 교관을 살해한 사건입니다. 임오군란의 결과 제물포 조약이 체결되어 일본에 피해보상을 하게 되었습니다.


- 김옥균, 박영효 등이 주도한 활동은 갑신정변입니다.

- 물산 장려 운동은 평양에서 시작되어 전국으로 확산되었습니다.

- 병인양요는 외규장각 도서가 약탈되는 결과를 가져왔습니다.

- 조선 순조 때 서북인에 대한 차별이 원인이 되어 홍경래의 난이 발생했습니다.


35. 개화기 (정답: 5번)

개항(1876년)부터 국권 피탈(1910년) 사이를 개화기라고 하며 이 시대의 문물로는 경인선, 광혜원, 명동 성당, 한성 전기 회사가 있습니다.


36. 동학 농민 운동 (정답: 5번)


- 동학 농민 운동 때 전주에서 정부와 화약을 맺습니다.

- 동학 농민 운동 때 욱므치에서 일본군과 전투를 벌입니다.

- 동학 농민 운동 때 황토현에서 관군에게 승리를 거둡니다.

- 동학 농민 운동 때 농민 자치 기구인 집강소를 설치합니다.


37. 조선 의용대 (정답: 1번)

중일 전쟁 발발 이후에 중국 관내에서 최초로 조직된 독립군은 조선 의용대입니다.


38. 대한민국 임시 정부 (정답: 2번)


대한민국 임시 정부는 3.1 운동을 계기로 상하이에서 수립되었습니다.


- 대한민국 임시 정부의 조직으로는 연통제가 있습니다.

- 대한민국 임시 정부는 자금 마련을 위해 독립 공채를 발행했습니다.


39. 이육사 (정답: 3번)


이육사는 의열단 단원으로 활동하며 저항시로 '청포도' 및 '절정' 등을 발표했습니다.


40. 형평 운동 (정답: 3번)

형평 운동은 백정의 칭호가 없어지며 전개되었으며 조선 형평사가 주도했습니다.


- 물산 장려 운동은 '내 살림 내 것으로'라는 구호를 내세웠습니다.

- 독립 협회는 러시아의 절영도 조차 요구를 저지했습니다.


41. 미주 지역 독립 운동 (정답: 3번)


미주 지역에서 서재필, 박용만 등의 인물이 독립 운동을 전개했습니다. 미주 지역에는 구미 위원부가 설치되었습니다.


- 북간도에는 서전서숙이 세워졌습니다.

- 만주에는 북로 군정서가 조직되었습니다.

- 만주에는 대한 독립군이 창설되었습니다.

- 일본 지역에서 2.8 독립 선언서가 발표되었습니다.


42. 무단 통치 시기 (정답: 4번)

무단 통치 시기에 일본은 조산 주차 헌병을 파병해 치안 유지에 관한 경찰과 군사 경찰을 관장했습니다. 이러한 무단 통치 시기의 대표적인 일본의 사업은 토지 조사 사업입니다.


- 남면북양 정책은 1930년 일본의 경제 정책입니다.


43. 의열단 (정답: 4번)

의열단의 대표적인 인물로는 박재혁, 김익상, 나석주 등이 있으며 이들은 주로 폭탄 투척을 수행했습니다. 이러한 의열단은 1919년 김원봉이 만주에서 조직하여 운영했습니다.


44. 안중근 (정답: 5번)


안중근 의사는 이토 히로부미를 사살했습니다.


45. 건국 준비 위원회 (정답: 5번)

건국 준비 위원회는 여운형 등을 중심으로 결성되어 일시적 과도기에 있어서 국내 질서를 자주적으로 유지하고자 했습니다.


- 브나로드 운동은 1930년대에 일어난 농촌계몽운동입니다.

- 우익 세력은 신탁 통치 반대 운동을 주도했습니다.


46. 한국의 경제 정책 (정답: 4번)


- 1950년 이승만: 원조 물자를 기반으로 삼백 산업이 성장했습니다.

- 1965년 한일 협정 조인

- 1972년 유신 헌법 공포

- 1977년 박정희: 연간 수출액 100억 달러를 최초로 달성했습니다.

- 1979년 YH 무역 사건

- 1991년 남북 기본 합의서 발표

- 1993년 김영삼: 금융 실명제를 전격 실시했습니다.

- 1996년 김영삼: 경제 협력 개발 기구(OECD)에 가입했습니다.

- 2002년 한일 월드컵 개최


47. 박정희 (정답: 2번)


박정희는 7.4 남북 공동 성명을 통해 자주, 평화, 민족 대단결의 평화 통일 3대 원칙을 제시했습니다. 이러한 과정에서 남북 조절 위원회가 설치되었습니다.


- 김대중: 개성 공단 조성에 합의했습니다.

- 김영삼: 민족 공동체 통일 방안을 발표했습니다.

- 김영삼: 한반도 비핵화 공동 선언을 채택했습니다.

- 전두환: 처음으로 이산가족 고향 방문을 성사시켰습니다.


48. 자유 민주주의 운동 (정답: 5번)


- 1960년: 4.19 혁명

- 1980년: 5.18 민주화 운동

- 1987년: 6월 민주 항쟁


49. 부산 (정답: 4번)


부산은 대일 무역의 거점이었으며 강화도 조약 때 개항장이 설치된 지역입니다. 또한 6.25 전쟁 때 임시 수도였습니다.


50. 노태우 (정답: 4번)


노태우 때 서울 올림픽 개최와 남북한 유엔 동시 가입이 진행되었습니다. 또한 노태우 정부는 북방 외교를 추진하여 소련 및 중국과 수교를 맺었습니다.


- 이승만: 농지 개혁법이 제정되었습니다.

- 박정희: 베트남에 국군이 파병되었습니다.

- 김대중/노무현: 남북 정상 회담이 개최되었습니다.

- 이명박: 미국과의 자유 무역 협정(FTA)이 체결되었습니다.

728x90
반응형

Comment +0

728x90
반응형

  가끔 이클립스(Eclipse) 개발 환경에서 자바(Java) 개발을 하다 보면, 45초 서버 실행(Server Start) 제한 때문에 오류가 발생할 때가 있습니다. 45초 이내에 서버가 시작이 안 되면 문제가 있다고 보기 때문이에요. 다만 서버에 이것저것 라이브러리를 추가하다 보니까 어쩔 수 없이 서버가 실행되기까지 45초가 넘어가는 경우도 존재합니다. 그럴 때 45초 제한을 해제하는 방법을 알려드리고자 합니다.


오류 메시지: Server Tomcat v8.5 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.



  위와 같이 오류 문구가 발견되면, 다음과 같이 조치하시면 됩니다.



  이클립스의 아래 쪽에 'Servers' 란에 떠있는 서버를 더블 클릭하여 상세 정보를 확인합니다.



  이후에 위와 같이 'Timeouts' 탭을 누르시면 됩니다.



  그러면 위와 같이 Start 부분 및 Stop 부분의 시간을 늘릴 수 있습니다. 저는 Start 부분의 시간을 90초로 증가시키니까 문제가 해결되었네요.

728x90
반응형

Comment +3

728x90
반응형

  인텔리J (IntelliJ)자바(Java) 통합 개발 환경 중에서 가장 많이 사용되고 있는 것 중 하나입니다. 기본적으로 인텔리J는 유료 제품이지만 학생에 한해서 학생 인증을 수행하면 이를 무료로 이용할 수 있습니다. 이번 시간에는 학생 인증을 통해 무료로 설치하는 방법에 대해 알아보도록 하겠습니다. 현재 저도 대학생이라서 인텔리J를 무료로 사용할 수 있습니다.


1. 인텔리J 학생 인증 공식 사이트 접속: https://www.jetbrains.com/student/



  위와 같이 학생 라이선스 인증 사이트에 들어가서 등록 버튼을 누릅니다. 이후에 다음과 같이 자신의 정보와 '학교 이메일 주소'를 입력합니다. 일반적인 대학교는 웹 메일을 신청하면, 웹 메일 주소를 하나씩 할당해주는 방식을 사용할 것이므로 메일이 없으신 분은 자신의 학교에 요청을 하시면 됩니다.


2. 본인의 학생 정보 기입하기



3. 이메일 주소에서 인증 수행하기


  이후에 인증 메일이 도착하면 인증을 진행하면 됩니다.



4. 추가 이메일 인증 수행하기


  첫 번째 인증이 수행되면 다시 제대로 회원가입을 수행하기 위해서 활성화(Activate) 관련 이메일이 추가적으로 도착합니다. 여기에서 교육 라이선스(Educational License) 활성화를 진행해주시면 됩니다.



5. 회원가입 수행하기


  이제 본인이 사용할 계정 정보로 회원가입을 진행하시면 됩니다.



6. 인텔리J 소프트웨어 다운로드 사이트 접속https://www.jetbrains.com/idea/


  이제 인텔리J 소프트웨어를 설치해주시면 됩니다.



7. 설치 프로그램 다운로드


  학생은 기본적으로 인텔리J 얼티메이트(Ultimate) 버전을 무료로 이용할 수 있기 때문에 다음과 같이 얼티메이트 버전으로 다운로드를 진행해주시면 됩니다.



8. 인텔리J 설치 이후에 인증 및 실행


  인텔리J를 설치하고, 처음 실행하시면 초기 환경을 세팅하고 결과적으로 라이선스 인증을 하라는 메시지가 나옵니다. 그 때 계정 정보를 입력하고 인증하여 실행하시면 됩니다.




728x90
반응형

Comment +0

728x90
반응형

CNN(Convolution Neural Network)을 통해 배우는 이미지 인식 인공지능 기술

1. 인공지능 기술 및 CNN의 개요

나동빈


인공지능: 컴퓨터가 인간의 지능을 흉내내도록 하는 기술


  최근의 인공지능 기술은 경험주의에 기반하고 있습니다. 사람이 컴퓨터에게 별도의 지식을 제공하지 않아도 컴퓨터가 데이터로부터 지식을 직접 학습할 수 있다고 보는 관점입니다. 오직 컴퓨터가 데이터라는 경험만을 이용하여 수식(Function)을 찾아냅니다. 실제로 이러한 접근 방법이 최근 딥 러닝(Deep Learning) 기술까지 이어졌습니다.


  현재 인공지능은 데이터로부터 스스로 학습하는 단계까지는 왔다고 말할 수 있지만 초월적인 지능으로 새로운 발견을 하는 단계가 되기까지는 한참 멀었다고 보는 것이 일반적입니다.


※ 머신러닝 인공지능의 분류 ※


1) 지도학습(Supervised Learning): 학습 데이터가 정답 정보인 레이블(Label)을 가지고 있도록 하는 학습 방법입니다.

→ 딥 러닝이 대표적인 예시이며, 우리가 공부하게 될 CNN도 지도학습에 속합니다.


2) 비지도학습(Unsupervised Learning): 학습 데이터가 레이블을 가지고 있지 않도록 하는 학습 방법입니다. 데이터 자체에 들어있는 고유한 특징을 스스로 찾아냅니다.

→ 대표적인 기술로는 비슷한 데이터끼리 묶는 클러스터링(Clustering)이 있습니다.

→ 레이블이 없다는 점에서 지도학습보다 더 난이도가 높은 경우가 많습니다.


3) 준지도학습(Semi-Supervised Learning): 학습 데이터가 어느 정도만의 레이블을 가지고 있도록 하는 학습 방법입니다.


4) 강화학습(Reinforcement Learning): 학습의 정답 유무를 출력하기까지 시간이 필요한 학습 방법입니다. 주로 게임(Game) 인공지능으로 활용됩니다.

→ 바둑(Go) 인공지능과 같은 게임 인공지능이 대표적인 예시이며 전략적인 상황에서 활용도가 높습니다.


※ 컴퓨터 비전(Computer Vision) ※


  컴퓨터 비전 기술은 컴퓨터의 시각(Vision) 요소에 관련한 기술을 연구하는 분야입니다. 증강현실, 문자 인식, 패턴 인식, 얼굴 인식, 이미지 복구, 가상현실 등의 세부 분야가 있습니다. 우리가 공부하게 될 CNN도 대표적인 컴퓨터 비전 분야의 기술입니다.


※ 머신러닝 데이터의 분류 ※


  머신러닝은 인공지능 알고리즘 중 하나이며 대표적인 경험주의적 철학이 반영된 알고리즘입니다. 이러한 머신러닝에서 사용되는 데이터는 다음과 같이 세 가지로 분류될 수 있습니다.


· 훈련 데이터: 모델의 학습을 위해 사용하는 데이터입니다. 예를 들어 특정한 이미지가 주어졌을 때 미리 그 이미지가 '말'에 해당하는지, '소'에 해당하는지 등의 정답 데이터를 준비해놓고 학습을 진행합니다.


· 검증 데이터: 모델의 검증을 위해 사용하는 데이터입니다. 학습이 잘 되었는지 판단하기 위한 중요한 척도가 됩니다.


· 테스트 데이터: 주로 현재 가지고 있지 않은 데이터로 실제로 인공지능 소프트웨어를 운영하면서 만나게 될 데이터를 의미합니다.


  일반적으로 전체 데이터훈련 데이터와 검증 데이터로 나누어서 먼저 훈련을 시키고, 나중에 검증을 하는 방식으로 데이터를 활용합니다. 일반적으로 학습 모델을 표현하고자 할 때는 '신경망 모델(Neural Network Model)'을 이용해 표현합니다. 여러 개의 노드(Node)가 서로 연결되어 있는 그래프 형태로 표현합니다. 대부분의 딥 러닝 알고리즘은 신경망 모델을 이용해 표현됩니다.


※ 학습 모델의 평가 ※


  일반적으로 모델을 평가할 때는 해결하고자 하는 문제에 따라서 다른 모델 평가 방식을 적용할 수 있습니다. 가장 많이 사용되는 평가 방식은 다음과 같습니다.


· 회귀 문제{y - f(x)}^2의 합으로 모델을 평가합니다. f(x)는 각 데이터에 대한 모델의 예측 값을 의미합니다. y는 실제 정답 값을 의미하는데, 제곱을 해주는 이유는 모델이 예측한 값이 얼마나 실제 정답과 거리가 있는지를 양수로 표현하기 위해서입니다.


· 정확도: 전체 테스트 데이터의 개수가 N개 일 때, 정답을 맞힌 테스트 데이터의 개수가 K개라면 K/N이 정확도가 됩니다.


※ CNN(Convolution Neural Network) ※


  일반적인 신경망 기술로는 해결하기 어려운 문제인 '이미지' 문제를 해결하기에 적합한 인공지능 알고리즘입니다. CNN은 1989년 LeCun의 필기체 인식 알고리즘으로 처음 등장하여 2000년대부터 본격적으로 관심을 받아 지속적으로 개선이 이루어지고 있습니다.

728x90
반응형

Comment +0

728x90
반응형

예제를 통해 도커파일(Dockerfile) 명령어 알아보기

나동빈


  지난 시간에는 간단한 형태의 도커파일(Dockerfile)을 작성하여 직접 도커 이미지(Docker Image) 파일을 생성하는 방법을 알아보았습니다. 이번 시간에는 도커파일에 사용되는 다양한 옵션 및 명령어에 대해 알아보는 시간을 가져보도록 하겠습니다. 


  먼저 도커 이미지를 만들 때 기존에 존재하는 다양한 라이브러리를 섞어서 이미지를 만들 수 있다는 것을 이해해봅시다.


※ 고래의 말(whalesay) 이미지 사용해보기 ※


  고래의 말(Whale Say)는 도커에서 튜토리얼 목적으로 만든 간단한 형태의 이미지입니다. 그냥 고래가 나와서 무슨 말을 하는 것 말고는 전혀 기능이 없습니다. (말 그대로 똥 같은 프로그램이죠...)



docker search (검색할 이미지): 도커 허브(Docker Hub)에서 이미지를 검색합니다.



  이제 위와 같이 docker run docker/whalesay cowsay Hello!를 입력해서 고래가 'Hello!'라고 말하도록 해봅시다. 여기에서 cowsay는 whalesay 이미지에서 사용할 수 있는 기능 중 하나이고, 그 뒤에 'Hello!'를 넣어서 이러한 문장을 고래가 말하도록 설정할 수 있는 것입니다.



  출력할 문장을 'Hi!'로 바꾸었을 때도 정상적으로 작동하는 것을 알 수 있습니다. 이제 우리가 해 볼 것은 단순히 직접 고래가 할 말을 넣어주는 것이 아니라 고래가 랜덤으로 의미 있는 격언을 말하도록 해보는 것입니다.


※ 랜덤으로 격언을 출력하는 고래 이미지 만들기 ※


  지난 시간에 배웠던 내용과 흡사하게 하나의 이미지를 만들어봅시다. 우리가 다운로드 받았던 whalesay 이미지는 기본적으로 리눅스 운영체제 위에서 고래가 말을 하는 것을 출력하는 기능이 있는 이미지입니다. 따라서 apt-get 명령어를 사용해 다른 라이브러리도 설치하도록 할 수 있어요. 우리는 그 중에서 랜덤으로 격언을 반환하는 fortune 라이브러리를 사용할 겁니다. 따라서 바로 도커 파일을 작성해봅시다.



FROM docker/whalesay


RUN apt-get update

RUN apt-get install -y fortune # fortune 라이브러리를 기존의 이미지에 추가적으로 설치합니다.


CMD /usr/games/fortune -a | cowsay # 설치된 fortune 라이브러리를 실행해 나온 격언 문장을 cowsay 명령어의 파라미터로 전달합니다.


  위 소스코드를 보시면 랜덤 문장을 cowsay 명령어의 파라미터로 전달하여 랜덤으로 문장을 고래가 출력하도록 만든 것을 알 수 있습니다.



docker build --tag mywhale .


  이 명령어로 우리가 만든 도커 파일을 이용해 mywhale이라는 이름의 이미지를 생성할 수 있습니다.



  이제 docker images 명령어를 이용해 생성된 이미지를 확인할 수 있습니다. 기존에 존재하는 docker/whalesay 이미지에 덧붙여서 273MB의 mywhale 이미지가 생성되었네요.



  이제 docker run mywhale을 입력하여 이미지를 실행할 때마다 랜덤으로 격언이 출력되는 것을 확인할 수 있습니다.


  여기까지 예제를 잘 따라오셨다면 기본적으로 도커파일이 어떠한 기능을 가지고 있는지 대략적인 이해가 되셨을 겁니다. 이제 보다 자세하게 도커파일에서 사용될 수 있는 명령어를 확인해봅시다.


※ 도커파일 명령어 알아보기 ※


- FROM: 베이스 이미지를 지정하는 명령어입니다. FROM ubuntu:14.04와 같은 방식으로 사용하고, 버전으로는 latest를 넣을 수도 있습니다. 하지만 가능하면 14.04와 같은 정확한 버전명을 기입하는 것이 좋습니다.


- RUN: 이미지 상의 리눅스 커맨드를 실행하도록 해주는 명령어입니다.


  예를 들어 RUN apt-get -y fortune을 하면 리눅스에서 fortune 라이브러리를 다운로드 받게 됩니다. 이 때 RUN 명령어는 일반적으로 한 번 사용될 때마다 레이어가 하나씩 추가됩니다. 그래서 RUN 명령어를 어떻게 쓰냐에 따라서 이미지의 크기가 달라질 수 있습니다. 그러므로 여러 개의 명령어가 이어지는 경우 다음과 같이 &&를 이용해 하나의 라인에 명령어를 쓰는 것이 좋습니다.


  RUN apt-get update && apt-get install -y fortune


- CMD: 이미지 명령을 지정하기 위해 사용하는 명령어입니다. 예를 들어 CMD ["nginx"]라고 입력하면 nginx 서버를 실질적으로 구동시키게 되는 것입니다.


- EXPOSE: 컨테이너에서 공개하고자 하는 포트를 정의하기 위해 사용하는 명령어입니다. 80, 443 등의 포트가 일반적으로 많이 사용됩니다.


- ENV: 환경변수를 정의하기 위해 사용하는 명령어입니다. 'ENV NGINX_VERSION (버전명)'과 같은 방식으로 사용할 수 있습니다.


- ADD, COPY이미지 안에 파일을 복사하고자 할 때 사용할 수 있는 명령어입니다. 'COPY jerkins.sh /user/local/bin/jenkins.sh'와 같은 방식으로 사용할 수 있습니다. 이 때 압축을 풀 필요 없이 단순히 이미지 안에 넣을 때는 COPY를 쓰고, 압축까지 푸는 등 후처리가 필요하다면 ADD를 사용합니다.


- WORKDIR작업위치를 지정할 때 사용하는 명령어입니다.


- ONBULID이미지 빌드 이후에 실행되는 명령을 지정하기 위해 사용하는 명령어입니다.


- ENTRYPOINT: 이미지 실행 명령을 다시 지정하기 위해 사용하는 명령어입니다. 기본적으로 이미지는 한 번 만들어지면 수정할 수 없다는 점에서 마치 프로그램을 작성하듯이 쉘 스크립트를 작성하여 엔트리 포인트로 걸어놓고 사용할 수 있습니다. 아까 다루었던 예시에서 cowsay에 다른 명령을 이용해 적용했던 것을 떠올리시면 됩니다.


- VOLUME: 바인딩하고자 하는 디렉토리를 정의할 때 사용하는 명령어입니다. 흔히 리눅스에서의 마운트를 생각하시면 됩니다. 컨테이너 자체는 stateless한 특성을 가지고 있습니다. 하지만 특정한 데이터를 저장하는 등의 기능이 필요하다면 호스트 서버의 특정 위치와 컨테이너의 특정 위치를 마운팅 시킬 수 있습니다. 이는 실제로 굉장히 많이 사용되는 요소 중 하나입니다.


- USER: 사용자를 지정하기 위해 사용하는 명령어입니다. 별도로 지정하지 않으면 사용자는 기본적으로 'docker'로 설정됩니다. 기본적으로 docker라는 하나의 사용자가 있다고 가정을 하고 동작하고, 이러한 docker 사용자가 없거나 현재 사용자가 docker 그룹에 포함 되어 있지 않다면 Permission 오류가 발생할 수 있습니다. 


  일반적으로 이러한 사용자 문제는 컨테이너 자체를 실행할 때는 별 문제가 되지 않습니다. 주로 볼륨(Volume) 마운팅 기능을 이용할 때 문제가 됩니다. 마운팅을 수행하면 서버의 특정 디렉토리에 액세스를 하고자 하여 문제가 발생할 수 있습니다. 그럴 때는 호스트에 도커와 동일한 사용자를 만들고, 사용자의 UID 값도 맞추어주어 해결할 수 있습니다.


  이렇게 사용자 기능을 쓰는 것에 대해서는 찬반의 의견이 다수 존재합니다. 이는 권한 관리의 문제가 있기 때문이고, 컨테이너 외부에서도 최고 권한(root)으로 돌아가도록 설계된 경우 관리 책임의 소지도 함께 다루어야 될 문제이기 때문입니다.

728x90
반응형

Comment +0

728x90
반응형

도커파일(Dockerfile)을 이용해 nginx 웹 서버 도커 이미지 만들어보기

나동빈


  지난 시간에는 윈도우(Windows) 운영체제에서 도커(Docker)와 특정한 폴더를 공유하는 방법에 대해 알아보는 시간을 가져보았습니다. 이후에 파이썬을 이용해 공유된 폴더의 특정 파이썬 스크립트(Python Script)를 실행하는 것까지 해보았습니다. 다만, 지금까지 이용한 헬로우 월드(Hello World) 이미지나, 파이썬(Python) 이미지 등은 이미 다른 사람이 만들어 놓은 이미지(Image)입니다.


  그렇다면 우리가 직접 도커 이미지(Image)를 만들고자 한다면 어떻게 할 수 있을까요? 그 때 사용할 수 있는 것이 바로 도커파일(Dockerfile)입니다. 도커 파일의 이름은 'Dockerfile'로 만들며, 당장 도커 파일을 만들어보면서 사용 방법을 익혀 보겠습니다.



cd (도커 파일 경로): 도커 파일을 만들 경로로 이동합니다.

vi Dockerfile: 도커 파일을 생성해 작성합니다.


  사실 도커 파일은 그냥 윈도우에서 메모장 등을 실행해서 작성할 수도 있는데, 이왕이면 위와 같이 vi 에디터 같은 리눅스 전용 도구에 익숙해지도록 하세요. (이미 리눅스에 매우 익숙하신 분이라면 편하신 대로 작성하셔도 됩니다.)



FROM ubuntu:14.04 #기반으로 할 이미지를 설정합니다.

MAINTAINER Dongbin Na "ndb796@naver.com" # 작성자의 정보를 기입합니다.


RUN apt-get update # RUN을 이용해 쉘 스크립트를 실행합니다.

RUN apt-get install -y nginx # nginx를 설치합니다.


WORKDIR /etc/nginx # 이후의 CMD 명령어가 실행될 경로를 찾습니다.


CMD ["nginx", "-g", "daemon off;"] # nginx를 백그라운드에서 돌아가도록 실행합니다.


EXPOSE 80 # 80번 웹 서버 포트를 열어 웹 서버에 정상적으로 접근할 수 있도록 합니다.


  위와 같은 명령어를 입력하면 결과적으로 ubuntu 이미지에 nginx가 포함되는 방식으로 동작하게 됩니다. 리눅스 명령어에서 apt-get 명령어를 사용하면 그 리눅스 안에 설치가 이루어집니다. 이러한 형태는 이미지 위에 이미지가 쌓이는 방식을 적나라하게 보여줍니다. FROM 명령어로 이미 존재하는 다른 이미지 위에 추가적으로 어떠한 모듈을 설치하는 과정임을 이해하시면 됩니다. 레이어(Layer)가 쌓이는 겁니다.


  그래서 특정한 이미지를 만들 때는 베이스로 삼고 있는 이미지가 우수한 이미지여야 한다는 가정이 있는 겁니다.



docker build --tag myubuntu:0.1 .


  위 명령어는 특정한 태그(Tag) 이름으로 이미지를 빌드(Build)하는 명령어입니다. 저는 myubuntu라는 이름으로 이미지를 만들어 보았습니다. 여기서 주의할 점은 빌드 명령어의 마지막에는 온점(.)을 찍어주어야 합니다. 원래 온점 대신 URL 등 다양한 내용이 들어갈 수 있는데, 단순히 온점만 찍어서 명령어를 마무리해주는 겁니다.



  이후에 위와 같이 이미지 목록을 확인해보면 베이스 이미지가 되는 우분투(Ubuntu)가 먼저 설치되고, 그것을 기반으로 하여 myubuntu라는 이름의 이미지가 만들어진 것을 알 수 있습니다. 보면 이미지의 크기가 188MB -> 230MB로 겹겹히 쌓인 것을 알 수 있습니다. 다양한 기능이 추가될 수록 이미지가 더 커지는 겁니다. 근데, 커져봤자 200MB 정도인 걸 보면 역시 갓도커라는 생각이 드는 군요.



docker run --name (컨테이너 이름) -d -p 80:80 (이미지 이름):(버전 정보)


  위 명령어를 응용해서 우리가 방금 만든 nginx 웹 서버 전용 우분투를 데몬(Daemon)으로 실행해보았습니다. 데몬 명령어는 -d 옵션으로 줄 수 있으며 웹 서버나 데이터베이스 서버와 같이 계속해서 실행이 되고 있어야 하는 서비스에 주로 적용합니다. 버전 정보는 우리가 만들 때 적어 주었던 0.1 버전으로 적어주었습니다. 또한 -p 옵션을 이용해 호스트 서버의 80번 포트와 도커 서버의 80번 포트를 연결해주었습니다.


  이후에 docker ps 명령어도 넣어보니까 위 그림과 같이 새로운 컨테이너가 돌아가고 있으며 포트 번호가 0.0.0.0:80->80/tcp로 매핑이 되어있는 것을 알 수 있습니다. 여기에서 0.0.0.0은 로컬(Local)이라고 이해하시면 됩니다.



  이제 돌아가고 있는 웹 서버에 접속하기 위해 docker-machine ip 명령어를 입력해 아이피 주소를 확인해봅시다. 아이피 주소는 도커 머신의 기본 주소인 192.168.99.100이군요.



  이제 바로 브라우저를 실행하여 192.168.99.100:80으로 접속합니다. 그럼 바로 위와 같이 웹 서버에 접속이 된 것을 알 수 있습니다. 이렇게 아주 간단하게 직접 우분투 이미지에 nginx를 설치한 새로운 '이미지'를 생성하는 방식으로 웹 서버를 띄워보았습니다.



  이렇게 웹 서버를 만들게 되면 데몬으로 계속 돌아가기 때문에 컨테이너를 바로 지우거나 할 수 없습니다. 그래서 먼저 컨테이너의 동작을 중지시키고, 컨테이너를 제거한 뒤에 비로소 이미지 파일까지 안정적으로 지울 수 있습니다.


docker stop (컨테이너 ID): 현재 작동 중인 컨테이너를 정지(Stop) 시킵니다.

docker rmi (이미지 ID): 현재 도커 머신에 저장된 특정한 이미지를 삭제합니다.


  저는 방금 만들어보았던 myubuntu 이미지를 제거해보았습니다. 그랬더니 Deleted가 여러 번 수행되는 것을 알 수 있습니다. 정확히 일치하지는 않지만 제거되는 횟수는 일반적으로 도커 파일(Docker File)을 작성할 때 사용했던 명령어 라인의 수와 비례합니다.

728x90
반응형

Comment +0

728x90
반응형

윈도우에서 도커(Docker) 공유 폴더 생성 및 도커 머신에서 공유 파일 실행하기

나동빈


  지난 시간에는 도커에서 단순히 파이썬(Python) 개발환경을 콘솔 환경으로 실행해보는 시간을 가져보았습니다. 다만 도커(Docker)에서 특정한 애플리케이션을 실행하여 효과적으로 운용하기 위해서는 공유 폴더 기능이 반드시 필요합니다. 예를 들어 파이썬 스크립트를 미리 작성하거나, 웹 서버까지 구축한 이후에 '배포할 때만' 도커를 이용하는 식입니다. 이번 시간에는 그러한 전반적인 과정을 익히는 시간을 가져보도록 하겠습니다.


  공유 폴더: 도커 머신과 Host OS가 파일을 공유하기 위해 사용하는 폴더를 의미합니다.



  위와 같이 C 드라이브 내에 하나의 폴더를 만들어봅시다. 기본적으로 윈도우에서 도커 툴박스를 실행할 때는 관리자 권한이 아닌 일반 권한으로 실행하기 때문에 기존의 Program Files 폴더에는 쓰기 권한이 없을 수 있습니다. 따라서 저는 C:\Docker 경로를 사용하려고 합니다.



  폴더 생성 이후에는 위와 같이 C:\Docker 폴더로 이동해서 hello.py 스크립트를 작성해봅시다.



  내용으로는 print('hello')를 채우고 종료(ESC) -> :wq!를 입력해 저장하고 나가기를 해줍시다.



  그러면 위와 같이 해당 폴더 내에 hello.py 파일이 생긴 것을 확인할 수 있습니다.



  이제 VirtualBox에서 자신이 사용하고 있는 도커 머신(Docker Machine)의 '설정'을 확인해 '공유 폴더' 경로를 찾습니다.



  기본적으로 윈도우(Windows) 운영체제에서 도커를 설치하면 C:\Users 폴더가 공유 폴더로 자동으로 지정됩니다. 저는 위와 같이 공유 폴더를 효과적으로 사용하기 위해 Docker 폴더를 만들어 C:\Users\Docker를 공유 폴더로 쓰고자 합니다.


  이제 해당 공유 폴더에 hello.py 파일을 복사해줍시다.



docker-machine ls: 존재하는 도커 머신의 목록을 출력합니다.

docker-machine ssh (도커 머신 이름): 특정 도커 머신으로 접속합니다.


  도커 머신에 SSH 명령어를 이용해 접속하는 경우 도커 머신과 Host OS는 완전히 분리됩니다. 도커 머신 내부로 들어온 것입니다.



  도커 머신 내부에서 C 드라이브 사용자(User) 공유 폴더에 접근할 때는 /c/Users/ 경로로 접근해야 합니다. 이는 공유 폴더로 지정이 되었기 때문에 접근이 가능한 것으로 Host OS의 다른 폴더에는 접근할 수 있는 권한이 없습니다.



  이제 다시 도커 머신에서 밖으로 탈출합시다.



docker run -v (호스트 공유 경로):(도커 머신 공유 경로) python (파이썬 명령어)


  위 명령어에서는 -v 옵션이 적용되어 볼륨(Volume) 마운팅 기능이 사용됩니다. 도커(Docker)에서는 항상 호스트(Host)와 도커 머신(Docker Machine)이 :(콜론)을 기준으로 매칭이 이루어집니다. 즉 호스트를 기준으로 했을 때는 아까 우리가 만든 공유 경로인 C:\Users\Docker를, 도커 머신을 기준으로 했을 때는 도커 머신 내부의 /home/Shared 디렉토리를 선택해서 서로 실시간으로 공유하도록 만들어 준 겁니다.


  결과적으로 위 명령어를 실행하면 도커 머신 내부의 /home/Shared 폴더에 hello.py가 존재하는 것처럼 처리되어 hello.py를 실행할 수 있게 된 겁니다. 또한 명령어에서 python 키워드를 두 번 써주었는데, 왼쪽은 python 이미지를 사용하겠다는 의미이며 오른쪽은 python 명령어 그 자체를 의미합니다. 결과적으로 hello.py의 내용이 실행되어 'hello'가 출력된 것을 알 수 있습니다.

728x90
반응형

Comment +0

728x90
반응형

도커(Docker)를 이용해 파이썬 개발환경 즉시 구축해보기

나동빈


  이전 강의까지 도커(Docker)의 개괄적인 내용에 대해 함께 공부해보는 시간을 가졌습니다. 하지만 아직까지 공부한 내용으로는 도커를 굳이 사용할 이유를 못 느끼셨을 수 있습니다. 이번 시간부터는 간단한 예제부터 다루어보며 도커를 왜 사용해야 하는지 함께 알아 볼 것입니다. 일단 먼저 컨테이너 목록 확인 및 삭제 방법부터 알아봅시다.


※ 컨테이너 목록 확인 및 삭제 ※



  일단 지난 시간에는 hello-world를 띄워보는 시간을 가졌습니다. docker ps -a 명령어를 통해 해당 컨테이너를 확인한 결과는 위와 같습니다.



docker rm (컨테이너 ID): 특정 컨테이너를 삭제합니다.

docker rm (컨테이너 ID) -f: 특정 컨테이너를 강제로 삭제합니다.


  위와 같이 hello-world 컨테이너는 더이상 사용되지 않으니까 지워주도록 합시다.



  이후에 다시 컨테이너 목록을 확인해보니 어떠한 컨테이너도 나오지 않는 것을 알 수 있습니다.


※ 파이썬 개발환경 구축해보기 ※


  먼저 파이썬 개발환경을 도커를 이용해 구축해보겠습니다.


  docker run -it python: 파이썬 이미지를 다운로드 받아서 실행해주는 명령어입니다.


  이 때 -it 옵션은 표준 입출력을 이용해 컨테이너에 명령어를 입력할 수 있게 해줍니다.



  위와 같이 파이썬을 실행하여 다양한 명령어까지 입력해 본 것을 알 수 있습니다.


  네, 정말 이게 끝입니다... 윈도우에서 이것보다 쉽게 파이썬 콘솔 개발환경을 이용할 수 있을까요?


※ 컨테이너의 재시작 및 재접속 ※


  이제 간단히 컨테이너를 종료하고, 재시작 및 재접속 해보는 방법도 알아보겠습니다.



quit(): 파이썬 콘솔을 종료시키는 명령어입니다.

docker start (컨테이너 ID): 종료된 컨테이너를 재시작하는 명령어입니다.

docker attach (컨테이너 ID): 특정 컨테이너로 재접속하는 명령어입니다.


  위 화면과 같이 해주시면 다시 재접속이 가능합니다.



  파이썬3을 실행하고 있는 컨테이너에 접근해 볼 수도 있습니다. 이 때는 주로 bash 쉘을 이용합니다.


docker exec -it (컨테이너 ID) bash: 실행 중인 컨테이너에 배시(Bash) 쉘로 접속하는 명령어입니다.


  위와 같이 성공적으로 접속한 것을 알 수 있습니다.

728x90
반응형

Comment +0

728x90
반응형

도커 툴박스(Docker Toolbox)를 구동시키는 Virtual Box 분석하기

나동빈


  윈도우에서 도커를 갓 접하여 공부하시는 분들에게는 도커(Docker) 관련 Virtual Box 환경설정 때문에 애를 많이 먹게 됩니다. 그래서 나중에 헤매이지 않기 위해서 몇 가지 Virtual Box 관련 상식을 알고 있으시는게 좋습니다. 이를 건너뛰고 다음 강의를 보셔도 상관이 없지만 이 강의에서 다루는 내용을 제대로 숙지하고 넘어가시는 것을 강력하게 추천합니다.


  현재 다루는 내용은 도커 툴박스(Docker Toolbox)를 설치하신 분을 기준으로 설명이 진행됩니다. 다시 말해 Oracle VM VirtualBox를 사용한다고 가정하는 것입니다.


※ Virtual Box는 어떻게 사용되고 있는 걸까? ※



docker-machine ls: 현재 설치된 모든 도커 머신(Docker Machine) 정보를 출력합니다.


  위 명령어 입력 결과 'default'라는 이름의 도커 머신이 돌아가고 있는 것을 알 수 있습니다. 그렇다면 이러한 도커 머신은 어디에서 확인할 수 있을까요?



  도커 툴박스를 설치하면서 자동으로 설치된 Oracle VM VirtualBox를 열어봅시다. 그랬더니 방금 도커 머신에서 확인했던 'default'가 보입니다. 다시 말해 도커 머신은 하나의 ISO 이미지 파일로 동작한다고 볼 수 있는 겁니다. 우리는 우리의 컴퓨터에 여리 개의 도커 머신을 설치할 수 있는데요, 도커 머신을 설치할 때마다 완전히 다른 ISO 이미지 파일이 생성되어 우리의 Virtual Box 위에서 돌아가는 것이라고 할 수 있습니다. 그렇기 때문에 도커 머신끼리는 완전히 분리되어 각각 다양한 이미지와 컨테이너 파일을 다룰 수 있는 것입니다.



  한번 'default' 이미지 파일의 '자세한 정보'를 살펴봅시다. 그랬더니 리눅스 운영체제 64-bit으로 설정된 것을 알 수 있습니다. 신기한 점은 boot2docker.iso를 이용하고 있는데, 이미지 파일이 48MB 밖에 안 됩니다. 우분투(Ubuntu) 등의 리눅스 운영체제를 설치해보신 분들은 아시겠지만 보통 운영체제는 1GB는 우스울 정도의 큰 용량을 가집니다.


  그에 반해 도커(Docker)는 가벼운 용량을 위해 최소한의 기능만을 갖춘 운영체제의 위에서 돌아가도록 설계된 겁니다. 지난 시간에 언급했듯이 사실 윈도우는 Docker Host OS가 될 수 없으므로 이러한 리눅스를 가상으로 구축하여 그 위에 도커 엔진을 올리게 되는 것이랍니다.


※ 물리적 경로에서 살펴보기 ※


  ▶ 도커 머신의 물리적 경로: C:\Users\(사용자 이름)\.docker



  윈도우 운영체제에서 도커 머신은 실제로 위 경로에서 찾을 수 있습니다. 다시 말해 .docker 폴더 내에 실질적인 도커 머신 관련 이미지 파일을 포함해 각종 파일들이 모두 들어가 있는 겁니다.



  위와 같이 'default' 도커 머신의 경로를 찾아 들어가봅시다. 그랬더니 ISO 파일 및 vmdk 파일이 존재합니다. 다시 말해 Virtual Box에서 돌릴 수 있는 이미지가 그대로 존재하는 겁니다. vmdk 파일은 도커 머신 내부의 이미지 및 컨테이너를 모두 포함하고 있는 파일이기 때문에 만약에 특정 도커 머신에 이미지를 많이 설치하면 이 파일의 크기가 매우 커집니다. 이것저것 필요한 걸 모두 설치하다 보면 20GB도 우습게 될 수 있습니다. 도커는 가벼운 용량을 지향하지만 부득이한 경우를 잘 고려하셔야 합니다.



docker version: 클라이언트 및 서버의 버전 정보를 출력합니다.


  위 명령어는 클라이언트 혹은 서버 중에서 설정이 잘못 되어있으면 위와 같이 정상적으로 출력이 되지 않을 수 있답니다. 일단 위 경우를 살펴보자면 클라이언트 정보는 'Windows'이고, 서버 정보는 'Linux'입니다. 이것이 어떤 의미냐면 현재 도커 서버는 아까 봤듯이 기본적으로 리눅스 운영체제를 Host로 하여 돌아가고 있으므로 거기에 접속을 할 때는 윈도우 상의 클라이언트 소프트웨어가 이용된다는 말입니다. 우리도 모르는 사이에 커맨드 명령을 입력해서 도커 서버와 통신을 하고 있는 것입니다. 물론 클라이언트나 서버나 지금은 실습하고 있는 우리 로컬 컴퓨터 안에 모두 포함되어 있지만요.


  재미있는 점은 도커 자체는 '관리자 권한(root)'으로 실행되지만 도커 위에서 돌아가는 컨테이너(Container) 자체는 Host에 대한 관리자 권한이 없습니다. 컨테이너 안에서만 사용되는 권한이 부여되는 것이기 때문에 Host OS와 도커 컨테이너는 완전히 분리됩니다. 그래서 컨테이너가 해킹(Hacking)을 당해도 웹 서버와 같은 코어 모듈이 아닌 이상 Host OS까지 모두 피해를 받는 일은 적습니다. 또한 지금처럼 Host OS가 윈도우 상에 올라가 있는 가상 리눅스라면 리눅스를 타고 윈도우까지 침입을 하는 경우는 더 어렵죠. 물론 실제 상용 서버에서는 윈도우가 아닌 자체 리눅스 Host OS에서 도커 엔진을 돌리는 경우가 많기 때문에 보안상의 만반의 준비를 하실 필요가 있습니다.

728x90
반응형

Comment +1