WinSxS 폴더, 정리 및 삭제 방법 4가지

디스크 정리 실행

첫 번째 방법은 윈도우에 기본으로 내장되어 있는 디스크 정리 프로그램을 활용합니다.

1. 윈도우 로고 + E 키를 눌러 파일 탐색기를 엽니다.
2. 내 PC를 클릭하고 윈도우가 설치된 드라이브(보통 C:)를 오른쪽 클릭한 다음 속성을 선택합니다.

3. 일반에서 디스크 정리를 클릭합니다. 디스크 정리 프로그램이 실행되면 윈도우 시스템에서 사용되는 디스크 공간을 계산할 때까지 기다립니다. 이 작업을 완료하는 데 몇 분 정도 걸릴 수 있습니다.

4. 시스템 파일 정리 버튼을 클릭합니다.

5. 기본으로 체크된 모든 항목의 체크를 푸세요.
6. Windows 업데이트 정리 항목을 체크합니다.

7. 확인 버튼을 클릭합니다.

버튼을 클릭하면 디스크 정리 도구가 WinSxS 폴더 내에서 발견된 모든 임시 파일을 삭제합니다.

저장소 센스로 WinSxS 폴더 크기를 줄이는 방법

저장소 센스 기능으로도 WinSxS 폴더를 정리할 수 있는데요. 아래에 소개한 방법대로 진행해보세요!

1. 윈도우 로고 + I(영문자 아이) 키를 눌러 설정을 엽니다.
2. 시스템을 클릭합니다.

3. 저장소를 클릭합니다.
4. 로컬 디스크 부분에서 임시 파일 항목을 클릭합니다. 임시 파일 항목이 보이지 않으면 더 많은 범주 표시를 클릭하여 찾아보세요.

5. 기본으로 선택된 항목의 체크를 모두 풉니다.
6. Windows 업데이트 정리 항목을 체크합니다.

7. 파일 제거 버튼을 클릭하세요.

이렇게 해서 WinSxS 폴더의 불필요한 파일을 한 번에 제거할 수 있습니다.

DISM 명령으로 WinSxS 크기를 줄이기

세 번째 내용은 DISM 명령을 사용하여 WinSxS 폴더의 크기를 줄이는 방법인데요. DISM(배포 이미지 서비스 및 관리)는 윈도우(Windows 이미지를 시스템에 연결하고 관리하기 위해 사용하는 명령어 입니다.

1. 시작 버튼을 클릭하고 명령 프롬프트를 입력한 다음, 검색 결과가 나타나면 마우스 오른쪽 버튼을 클릭하고 관리자 권한으로 실행을 선택합니다.

2. 아래 명령을 입력하고 엔터 키를 눌러 WinSxS 폴더의 크기를 줄입니다.
dism.exe /online /Cleanup-Image /StartComponentCleanup

3. 명령 실행이 완료되면 아래의 명령을 입력하고 엔터 키를 눌러 시스템 업데이트 이후 문제가 발생할 시를 대비하여 보관하고 있던 불필요한 예비 파일을 모두 제거합니다. 이 명령이 완료된 후에는 기존의 모든 서비스 팩 및 업데이트를 제거할 수 없습니다. 물론, 명령 실행 이후에 새롭게 설치할 서비스 팩 또는 업데이트의 제거는 문제 없이 가능합니다.

dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase

4. 컴퓨터를 다시 시작합니다. 이제 윈도우 탐색기를 열고 여유 공간이 어느 정도 확보됐는지 확인해보세요.

WinSxS 폴더의 파일을 직접 삭제하는 방법. 주의, 또 주의!

이번에는 최소 2년~4년 전에 다운로드된 오래된 업데이트 파일을 삭제하는 방법을 알아보겠습니다. 이 방법대로 진행하기 전에 시스템을 이미지 파일 형태로 따로 백업해 두거나 가상 머신이라면 스냅샷을 생성하시고요. 업무용 컴퓨터나 메인으로 사용하는 주 컴퓨터에는 이 방법을 적용하지 않는 것이 좋습니다. WinSxS에서 파일과 폴더를 삭제한 후 윈도우가 정상적으로 작동하는지 테스트 환경에서 확인하는 것이 좋습니다.

1. 윈도우 로고 + E 키를 눌러 윈도우 탐색기를 엽니다.
2. C:\Windows로 이동한 다음 WinSxS 폴더를 마우스 오른쪽 클릭하고 속성을 선택합니다.

3. 보안 탭을 클릭한 다음 고급 버튼을 클릭하여 고급 보안 설정 창을 엽니다.

4. ‘소유자: TrustedInstaller’의 오른쪽 옆에 위치한 변경 링크를 클릭합니다.

5. 윈도우에 로그인할 때 사용하는 관리자 그룹의 계정 아이디(MS 계정 사용 중이라면 이메일 주소)를 입력하고 이름 확인 버튼을 클릭한 다음 확인을 누릅니다.

6. 다시 확인 버튼을 클릭하여 고급 보안 설정 창을 닫습니다. 역시나 확인 버튼을 한 번 더 클릭하여 WinSxS 속성 창도 닫습니다.

7. WinSxS 폴더를 오른쪽 클릭한 다음 속성을 선택하여 다시 WinSxS 폴더의 속성 창을 엽니다.

8. 속성 창에서 편집 버튼을 클릭한 다음 사용 권한 창이 열리면 추가 버튼을 클릭합니다. 이제 윈도우에 로그인할 때 사용하는 관리자 그룹의 계정 아이디(MS 계정 사용 중이라면 이메일 주소)를 입력하고 이름 확인 버튼을 클릭한 다음 확인을 누릅니다.

9. 방금 전에 추가한 로그인 할 때 사용하는 계정을 선택하고 모든 권한 옆에 있는 허용 부분의 체크 박스를 체크합니다.
10. 시스템 폴더의 사용 권한 설정을 변경할지 묻는 창이 뜨면 를 클릭해주세요. 마지막으로 적용을 클릭한 다음 확인을 클릭합니다. 열려 있는 모든 창을 닫습니다.

11. 이제 오래된 업데이트 파일을 삭제합니다. 제 경우에는 2016년 ~ 2018년 사이에 다운로드된 모든 파일을 삭제하여 10GB 정도의 여유 공간을 확보했습니다.

윈도우 10의 다이어트를 응원하며

글에서 소개한 방법대로 진행하여 WinSxS 폴더의 크기와 용량을 줄일 수 있습니다. WinSxS 폴더에서 오래되거나 불필요한 파일을 삭제할 수도 있고요. 단, 향후 새롭게 나올 업데이트를 설치하다 보면 시간이 지날수록 폴더 크기가 다시 커지게 되는데요. 윈도우 10에 자체적으로 폴더 크기를 자동으로 줄이는 기능이 있다고는 하지만, 생각 보다 잘 작동하지 않는 듯한 인상을 줄 때가 많죠. 글에 나온 내용을 필요할 때마다 적용하시면 WinSxS 폴더 크기를 항상 최소 크기로 유지할 수 있습니다.

뚱뚱한 윈도우 10이 스스로 능숙하게 다이어트하는 날이 빨리 오기를 마음속으로 바라봅니다! 😁

 

프로세서 성능 및 전원 관리 고급 수정하는 방법

 

우선 코어 파킹을 알아보고 만지다가 사용하게된 기능이므로 정보와 자료에 관해서 링크도 올려봅니다.
(경험담입니다만, 스로틀링은 그냥 두시는게 좋아요. 절전 효과는 그저 그런데 퍼포먼스가 엄청나게 저하됩니다.)

http://tshoo.tistory.com/tag/%EC%9C%88%EB%8F%84%EC%9A%B07%20%EC%BD%94%EC%96%B4%ED%8C%8C%ED%82%B9

윈도우 전원 관리는 절전 – 균형 – 고성능으로 나뉘어져 있습니다.

셋 다 최소 프로세서 수치를 변경하면 프로세서의 최소 스피드 스탭 단계를 정할 수는 있습니다만,

점유율에 의해 클럭이 내려가고 올라가는 정도도 확연히 틀립니다.

특히 절전을 써보신 분들은 아시겠지만,

프로세서 설정은 균형과 차이가 없는데도 클럭이 안 올라가는 것을 느끼셨을 겁니다.

여기서 눈치 빠르신 분들은 바로 눈치채셨겠죠. ㅇ_ㅇ/

윈도우 7 프로세서 전원 옵션에는 클럭을 올리고 내리는 상한, 하한선이 존재하며 수정할 수도 있습니다.

특히 절전은 상관이 없는데, 고성능과 균형의 퍼포먼스 차가 심하죠.

그냥 고성능으로 쓰기에는

시작 – regedit로 레지스트리 에디트를 여신 다음에

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings

\54533251-82be-4824-96c1-47b60b740d00

위 경로로 이동해 주세요.

여기에 보이는 하위 값이 프로세서 전원관리와 관계가 있는 값입니다.

대부분 코어 파킹과 관련이 있습니다만, 다 설정해버리면 뭐가 뭔지도 모르겠고 토 나옵니다.

코어 파킹에 대해서는 위 링크를 참고해 주세요.

여기서는

06cadf0e-64ed-448a-8927-ce7bf90eb35d

12a0ab44-fe28-4fa9-b3bd-4b64f44960a6

4d2b0152-7d5c-498b-88e2-34345392a2c5

요 항목 들을 수정해주시면 됩니다.

우측에 보이는 Attributes를 0으로 설정해 주세요.

그리고 제어판 – 시스템 – 전원관리 – 고급옵션에 들어가셔서 프로세서 전원관리를 열어보시면

aab3a9ab7e439188bfca6121b9b0fdc9.jpg

프로세서 성능 증가 임계값

프로세서 성능 감소 임계값

프로세서 성능 시간 검사 간격

이렇게 세 항목이 생깁니다.

이걸 절전 – 균형 – 고성능 마다 확인해 보시면 값이 확연히 다르다는 것을 아실 수 있습니다.

(고성능이 15 ,균형이 30 ,절약 200,   최저값 1000이였네요.)

덧붙여 추가한 성능시간 검사간격은 맛폰의 SetCPU를 사용하셨던 분 들에겐 익숙한 항목일 겁니다.

말 그대로 클럭 전환을 얼마나 신속히/천천히 하는지를 결정하는 항목입니다.

줄이면 소비전력은 조금 증가하지만 클럭 변동이 그만큼 빨라지고,

내리면 소비전력도 조금 감소하고 그만큼 CPU의 반응이 둔해집니다.

이제 이것들을 원하시는 수치로 수정하시면 되는데…

원래 있던 프로필을 수정하시는 것 보단 새로 프로필을 만드셔서 수정하시는 것을 권장드립니다.

고성능 기반의 옵션을 생성하실 경우에

디폴트 설정이 최소 프로세서 상태 100%이므로 이걸 수정해주시지 않으면 말짱 꽝입니다.

Recommend : 10% / 5% / 1초 / 30%

Coppermine Gallery 사진 라이브러리 관리 툴 설치

설치방법

1. 깃 허브에서 최종버전 첨부파일을 다운로드 받아 압축을 해제한 후 자신의 웹 서버에 업로드한 뒤
브라우저를 통해 해당 경로로 접속하면 처음 실행 화면이 나옵니다. “here” 부분을 클릭.

2. 설치 첫번째 화면 입니다. 언어선택 화면 입니다.
한국어가 없으니 영어(English) 를 선택한 후 [Let’s go!] 를 클릭.

3. 설치 두번째 화면 입니다.
ERROR 부분의 메시지를 해석해 보면 PHP 설정 중 register_globals 옵션이 켜져 있어 보안상 위험하다는 메시지네요.
일단 알겠으니 참고만 하고 넘어 갑니다. [Next step] 클릭.

4. 설치 세번째 화면 입니다. 폴더의 권한을 체크하는 부분 입니다.
폴더의 권한이 없을 경우에는 707 또는 777 권한을 주면 되겠습니다.
권한 체크가 완료 되면 [Next step] 클릭.

5. 설치 네번째 화면 입니다.
서버에 설치된 이미지 패키지는 체크하는 화면이네요.
CAFE24 에는 GD 라이브러리와 ImageMagick 과 설치되어있네요.
기본 선택 상태로 넘어갑니다. [Next step] 클릭.

6. 설치 다섯번째 화면 입니다.
이미지 가공을 테스트 해보는 것 같습니다. 다 정상적으로 보이면 넘어갑니다. [Next step] 클릭.

7. 설치 여섯번째 화면 입니다. MySQL 계정을 입력하는 단계 입니다.
자신의 웹서버 MySQL 정보를 입력하고 [Test connection] 을 클릭.

아래 메시지가 보이면 [Next step] 클릭하여 다음으로.

8. 설치 일곱번째 화면 입니다. DB 선택 화면 입니다.
기존 DB를 선택하거나 생성할 수 있습니다.
새 DB 생성은 위 7번 설명에서 입력한 MySQL 계정에 DB 생성 권한이 있어야 하겠네요.
그리고, 테이블명 앞에 붙일 Prefix 를 입력한 후 [Populate database] 를 클릭.

9. 여덟번째 과정 입니다. 앞에서 선택한 DB에 테이블이 쭉 생성이 되었네요.
확인했으면 [Next step] 클릭.

10. 설치 아홉번째 과정 입니다. 갤러리에서 사용할 계정을 생성하는 단계 입니다.
이 계정이 사용자계정이자 관리자계정이 되는 것 같으니 어려운 패스워드로 잘 입력합니다.
다 했으면 [Next step] 클릭.

11. 축하합니다. 아무 탈 없이 설치가 완료 됐습니다.

* 사용방법

1. 설치가 끝나고 처음 갤러리에 들어오면 이미지가 없어 휑한 느낌 입니다.
상단에 Login 버튼을 눌러 로그인 한 뒤 이미지를 올려보겠습니다.

2. 로그인 후 Upload file 을 클릭하면 앨범이 없다고 Error 메시지를 보여줍니다.
당황하지 않고 “Create / order my albums” 를 눌러 앨범을 만들어 봅니다.

3. [New album] 을 누르면 앨범 이름을 입력할 수 있는 창이 보이고,
앨범 이름을 입력한 뒤 [OK] 버튼을 누르면 앨범이 생성 됩니다.

4. 앨범 생성이 완료 되었으면, Upload file 을 다시 눌러봅니다.
아까와는 다른 화면이 나오며 업로드 할 앨범을 선택할 수 있습니다.

[Browse] 버튼을 누르면 파일선택창이 보이고
여러개의 파일을 선택하고 [열기] 누르는 순간 업로드가 자동으로 됩니다.

5. 이미지를 올리고 다시 첫화면으로 와보면 이미지들이 잘 보이는것을 볼 수 있습니다!!

윈도우 MP3 한글 태그 cp949에서 UTF-8 일괄 변환

위의 화면은 최초 실행 후 원하는 mp3 파일들을 불러들인 화면이다. 위의 스크린샷에서도 볼 수 있다시피 노래 제목들의 글자가 다 깨져서 읽을 수가 없는 상황이다. 한글 윈도우에서는 mp3 파일들의 태그들을 모두 cp-949 한글 인코딩으로 저장하기 때문에 영문 윈도우 혹은 다른 언어권 윈도우에서는 읽을 수가 없게 된다. 이럴 때 아래의 그림과 같이 Actions (Quick) 메뉴를 선택한다.

그렇게 하면 아래와 같이 액션 타입을 선택하는 옵션 화면이 나오게 되는데 여기서 Convert Codepage 옵션을 선택하도록 한다.

그다음에는 실제로 어느 필드를 변환할 것인지에 대해 아래와 같이 물어본다. 여기서는 Title 필드를 Koean - 한국어 (949)로 선택한다.

그 다음에는 선택한 모든 파일들이 원하는 인코딩으로 바뀌면서 한글을 읽을 수 있게 됐다.

하지만 여전히 mp3 파일에 방금 변환했던 결과가 반영되는 것은 아니다. 아래와 같은 추가적인 옵션을 세팅한다면 모든 깨진 한국어 제목들이 더이상 깨지지 않고 나타난다.

이렇게 옵션을 저장한 후 위의 맨 왼쪽에 있는 저장 버튼을 클릭하면 모든 작업은 끝이다. 이렇게 해서 변환시킨 mp3 파일들은 이제 멀쩡하게 보일 것이다. 참쉽죠?

스위치 프로콘 컴퓨터에 연결하기 (스팀설정까지)

스팀에서 컨트롤러 사용하는 법은 맨 아래쪽에 나와있으니, 이 부분이 궁금하신분은 아래 쪽으로 스크롤 내려주세요!


1. 제어판에서 등록하기

제어판> 장치 및 프린터> Bluetooth 장치 추가

준비물은 프로콘과 블루투스 기능이 있는 컴퓨터!

저는 노트북에 연결하여 사용하고 있습니다.

1. 제어판> 장치 및 프린터> Bluetooth 장치 추가 클릭!

2. 장치 추가를 누르면 컴퓨터가 자동으로 장치를 검색하는데,

목록에 프로콘이 자동으로 뜨지 않는다면 컨트롤러에서 버튼을 하나 눌러주어야 합니다.

프로콘의 케이블단자 옆에 조그마한 동그란 버튼을 꾹~ 누르고 있으면 검색가능한 상태로 바뀌면서 장치 검색이 가능합니다.

3. 컴퓨터에서 프로 컨트롤러가 검색되었다면 선택하고 다음버튼을 눌러서 자동으로 장치가 추가되기를 기다려주면 됩니다.

장치가 연결되면 우측하단에 알림창이 뜨면서 완료!!


2. 설정에서 등록하기

설정> 장치> 장치 추가

1. 시작표시줄에서 윈도우버튼을 눌러 종료위에 톱니바퀴 모양 아이콘을 클릭하여 설정에 들어갑니다.

2. Windows 설정창에서 장치를 선택해줍니다.

3. Bluetooth 및 기타 디바이스 창에서 장치 추가 버튼을 눌러줍니다.

4. 디바이스 추가 창에서 블루투스를 선택해줍니다.

5. 프로콘이 목록에 뜨면 클릭하여 자동으로 연결되기를 기다려줍니다.

활성화 되어있으면 자동으로 목록에 뜨지만, 다른기기에 연결되어있거나 비활성화 상태에서는 검색이 불가합니다.

6. 목록에 프로콘이 자동으로 뜨지 않는다면 컨트롤러에서 버튼을 하나 눌러주어야 합니다.

프로콘의 케이블단자 옆에 조그마한 동그란 버튼을 꾹~ 누르고 있으면 검색가능한 상태로 바뀌면서 장치 검색이 가능합니다.

7. 디바이스를 사용할 준비가 되었다는 안내창이 뜨면 완료를 눌러줍니다.


스팀에서 컨트롤러 사용하기

설정> 컨트롤러> 일반 컨트롤러 설정

1. 먼저 스팀설정창을 켜주고 컨트롤러 설정에서 일반 컨트롤러 설정 버튼을 눌러줍니다.

2. 컨트롤러 설정창이 뜨면 ‘Switch Pro 설정 지원’에 체크 해 줍니다.

3. 그리고 버튼 레이아웃을 지정 가능한데 저는 닌텐도 버튼 레이아웃을 그대로 사용하는 것에 체크하였습니다. (이 부분은 취향차이이니 본인에게 맞게 설정해서 쓰시면 됩니다)

스팀 설정내에서 컨트롤러 보정이나 진동 등 다양한 세부 설정이 가능하니 조정이 필요하신 분은 이 부분도 설정해주세요.

가족컴퓨터의 경우라면, 계정별로 세부 설정이 가능하니 걱정말고 본인 취향대로 설정해두셔도 됩니다.


이렇게 프로콘을 PC에 연결하고, 스팀에서 사용하는 법까지 살펴보았습니다.

스팀에 한 번 연결 해두면 컨트롤러를 지원하는 게임을 플레이 할 때, 프로콘만 들고 활성화해서 바로 사용이 가능합니다.

저는 휴먼 폴 플랫이나 ibb&obb를 플레이 할 때 프로콘을 사용하고 있습니다.

확실히 마우스&키보드 조합보다는 편한 자세로 플레이 할 수 있다는 부분이 장점입니다. (TV 리모트 플레이까지 켜두면 세상 천국이 따로 없…)

하지만 키보드와 마우스를 필수로하는 빠른 선택이나 세부적인 조작이 필요한(인벤토리의 아이템을 사용해야 하는 게임 등…) 게임에서의 사용은 시도하지 않으시기를 바랍니다.

컨트롤러 완벽 지원

컨트롤러를 지원한다면 게임상점페이지 설명에 ‘컨트롤러 완벽지원’ 이라고 써있으니 이 부분을 확인 하셔서 즐거운 플레이 하시기를 바랍니다.

컨트롤러 일부지원 게임의 경우에는 대체로 비효율적이었으니 사용 비추합니다.

보통 콘솔게임으로도 발매된 게임은 거의 완벽지원하는 듯 합니다.

+ 게임하다가 컨트롤러가 갑자기 버벅거리거나 작동하지 않을 때는 충전상태를 꼭 확인해보시기 바랍니다.

저는 보통 이런 증상이 나타나면 충전케이블 꽂아주니 바로 해결되었습니다.

Redis 설치 (on Ubuntu)

Redis를 Ubuntu에 설치해 봅시다.

ssh로 Ubuntu에 접속합니다. 그리고 먼저 apt-get을 업데이트 해줍니다.

$ sudo apt-get update
$ sudo apt-get upgrade

apt-get으로 간단하게 redis-server를 설치해 줍니다.

$ sudo apt-get install redis-server
$ sudo vim /etc/redis/redis.conf

우리가 변경해 줘야 하는 설정은 아래 두 가지 입니다.

  • maxmemory: redis가 전체 메모리에서 최대 얼마까지 사용할지를 정의합니다.
  • maxmemory-policy: redis가 최대 사용 메모리를 초과하게 될때 데이터를 어떻게 삭제할지를 정의합니다.

vim에서 파일을 찾을때는 /<찾으려는 단어>로 사용하면 됩니다. /maxmemory 를 쓰고 엔터를 칩니다. 다음 찾은 내용을 보려면 n 키를 누르면 차례대로 보입니다.

maxmemory와 maxmemory-policy를 찾았다면 아래와 같이 수정합니다.

  • maxmemory 1g
  • maxmemory-policy allkeys-lru

allkeys-lru는 가장 최근에 저장된 데이터를 사용하겠다는 것입니다. least recently used 따라서 redis의 메모리가 가득 차면 가장 오래된 데이터를 지워서 메모리를 확보하게 됩니다.

redis.conf 를 수정했다면 redis를 재시작 해줍니다.

$ sudo systemctl restart redis-server.service

서버게 재시작됐을때 redis를 자동으로 시작하게 해줍니다.

$ sudo systemctl enable redis-server.service
Synchronizing state of redis-server.service with SysV init with /lib/systemd/systemd-sysv-install…
Executing /lib/systemd/systemd-sysv-install enable redis-server
이제 redis를 사용할 준비는 되었습니다.

Redis를 Docker Compose 로 띄우기

01. docker image 다운로드

>> docker pull redis:alpine

위와 같이 pull 커맨드를 이용해서 redis:alpine 이미지를 다운로드 받습니다.

alpine 은 태그를 의미하며 redis의 버전 등의 값을 줄수 있습니다. (생략하면 latest 를 받음)

alpine 태그의 특징은 이미지를 경량화 시켜서 용량이 적습니다.

이미지 용량 차이를 확인해보니 아래와 같네요.

>> docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
redis        alpine    c678242f9116   5 weeks ago    31.6MB
redis        6.0.6     1319b1eaa0b7   5 months ago   104MB

 

 

 

02. docker로 실행

>> docker run --name redis_boot -d -p 6379:6379 reids:alpine

위와 같이 run 커맨드를 통해 docker container를 띄우면 됩니다.

  • name : container명을 지정합니다.
  • d, —detach : 백그라운드로 실행합니다.
  • p : host의 port와 container port 설정합니다.

그리고 마지막에 이미지명:태그명 해주면 됩니다.

 

근데 매번 저 명령어를 쳐주기 귀찮을겁니다.

docker-compose 를 사용하면 yml 파일로 컨테이너를 띄울 수 있습니다.

 

 

03. yml 파일 작성

# redis-server.yml
version: '3.7'
services:
    redis:
      image: redis:alpine
      command: redis-server --port 6379
      container_name: redis_boot
      hostname: redis_boot
      labels:
        - "name=redis"
        - "mode=standalone"
      ports:
        - 6379:6379

위와 같이 작성해줍니다.

yml 파일 작성할 때는 띄어쓰기 잘하셔야됩니다.

key: value 이런식으로…

 

 

04. docker-compose up (시작)

>> docker-compose -f ./redis_server.yml up -d

위와 같이 up 커맨드를 이용해서 띄울수 있습니다.

  • -d  옵션을 줘서 백그라운드 실행했구요.
  • -f 는 yml 파일 경로를 지정하여 해당 yml파일을 실행하도록 합니다.(default는 docker-compose.yml 이고, 이 경우 따로 지정할 필요가 없습니다.
>> docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                    NAMES
1b7d82a59165   redis:alpine   "docker-entrypoint.s…"   3 seconds ago   Up 2 seconds   0.0.0.0:6379->6379/tcp   redis_boot

잘 뜨네요.

 

 

05. redis-cli 사용

컨테이너에 접속하여

redis 커맨드 라인 명령어 도구인 redis-cli 를 이용해 봅시다.

>> docker exec -it redis_boot redis-cli
127.0.0.1:6379> PING
PONG
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> SET abc 123
OK
127.0.0.1:6379> GET abc
"123"
127.0.0.1:6379> 

exec 커맨드를 사용해 docker container 내부에 명령어를 실행 해볼수 있습니다.

  • 현재 터미널에서 상호작용하기 위해 -i, -t 옵션을 줬습니다.
  • 컨테이너명인 redis_boot 인자로 주고.
  • 마지막으로 redis-cli 커맨드를 줍니다.
  • redis 명령어 테스트 해보니 잘되네요.

 

 

06. docker-compose down (종료)

>> docker-compose -f ./redis_server.yml down 
Stopping redis_boot ... done
Removing redis_boot ... done
Removing network redis_server_default

종료는 down 커맨드를 사용하면 됩니다.

Docker build 로 Elasticsearch docker image 만들기

특정 이미지를 기반으로 하여 새로운 이미지를 만들 수 있는 Docker build에 대해 공부와 함께 이전에 ubuntu 14.04 위에 서비스로 elasticsearch 를 설치했던 내용들을 정리하기 위해 Dockerfile을 만듬.

해당 elasticsearch는 x-pack을 사용하여, 인증받지 않은 임의의 유저는 특정 클러스터에 read 만 할 수 있도록 함.

아래 Dockerfileelasticsearch.ymlroles.yml를 한 폴더에 놓은 뒤, $ docker build 실행.

FROM mcpayment/ubuntu1404-java8
MAINTAINER mail@jungbin.kim
# repository index 업데이트
RUN apt-get -y -qq update
RUN wget -qO – https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add –
# Installing from the APT repository
RUN apt-get -y -qq install apt-transport-https
RUN echo “deb https://artifacts.elastic.co/packages/5.x/apt stable main” | tee -a /etc/apt/sources.list.d/elastic-5.x.list
RUN apt-get -y -qq update && \
apt-get -y -qq install elasticsearch
# Install x-pack & Set super user(as admin)
WORKDIR /usr/share/elasticsearch
RUN bin/elasticsearch-plugin install x-pack –batch && \
bin/x-pack/users useradd admin_user -p testPassword -r superuser
# config 파일 소스
COPY elasticsearch.yml /etc/elasticsearch/
COPY roles.yml /etc/elasticsearch/x-pack/
# 나중에 내부 테스트를 위함
# curl 설치
RUN apt-get -y -qq install curl
# vi option 추가
RUN echo “set autoindent \nset number \nset bs=2 \nset nocp” >> ~/.exrc
# 도커 컨테이너가 실행되었을 때 요청을 기다리고 있는(Listen) 포트를 지정
EXPOSE 9200
# 도커 컨테이너가 실행되었을 때 실행되는 명령어를 정의
CMD service elasticsearch start && bash
view rawDockerfile hosted with ❤ by GitHub
# Set the bind address to a specific IP (IPv4 or IPv6):
# 192.168.1.10 과 같은 ip에 접근하기 위함
network.host: 0.0.0.0
# create an anoynomous user to allow interaction without auth
xpack.security.authc:
# 임의의 유저(유저 이름 anonymous)에 viewer라는 role을 줌.
# (x-pack/roles.yml에서 viewer는 read만 가능하게 설정)
# https://www.elastic.co/guide/en/elasticsearch/reference/5.6/security-settings.html#anonymous-access-settings
anonymous:
username: anonymous
roles: viewer
# Disable default user ‘elastic’
# https://www.elastic.co/guide/en/elasticsearch/reference/5.6/security-settings.html#password-security-settings
accept_default_password: false
view rawelasticsearch.yml hosted with ❤ by GitHub
# The default roles file is empty as the preferred method of defining roles is
# through the API/UI. File based roles are useful in error scenarios when the
# API based roles may not be available.
viewer:
run_as: [ ‘anonymous’ ] # 적용될 유저 이름 여기서는 인증 받지 않은 임의의 유저
cluster: [ “monitor” ] # 적용될 cluster들
indices:
names: [ ‘*’ ] # 허용 index를 패턴을 포함하여 정의 한다.
privileges: [ ‘read’ ] # 권한은 read만 부여한다.
query: {“match_all”: {}} # 권한으로 열어줄 문서 목록을 쿼리로 정의한다.
view rawroles.yml hosted with ❤ by GitHub

위와 같이 dockerfile을 별도로 만들지 않아도, Docker hub에 5.6 버전까지 docker 이미지가 있으며, 최신 버전(현재 6.3)의 elasticsearch docker image는 공식 제공 페이지에 존재.

사용한 docker file 명령어Permalink

  • RUN: 쉘 명령어를 수행
  • WORKDIR: 현재 가리키고 있는 폴더 위치 변경
  • COPY: 특정 파일이나 폴더 docker image에 복사
  • EXPOSE: docker container 내의 port
  • CMD: docker image를 container로 실행할 때 실행되는 명령어 지정

Error HandlingPermalink

apt-get install apt-transport-https 명령어를 실행할 때, Unable to locate package apt-transport-https 에러 발생Permalink

이 글을 참고하여, /etc/apt/sources.list.d/ 경로에 elastic 관련 .list 파일을 삭제하고, 다시 install 명령어 실행.

Increase virtual memory vm.max_map_count in boot2docker

I want to run Elasticsearch 5.0 with my Docker Toolbox. But it requires us to increase the vm.max_map_count to 262144 (https://www.elastic.co/guide/en/elasticsearch/reference/master/vm-max-map-count.html). I can do it by running these commands.

docker-machine ssh default
sysctl -w vm.max_map_count=262144
# Update the vm.max_map_count setting in /etc/sysctl.conf

setting check!.
cat /proc/sys/vm/max_map_count  

But they are reset after I re-boot my host. How to make boot2docker keeps these settings?

 

You can put it in vi /var/lib/boot2docker/bootlocal.sh

# Update the vm.max_map_count setting
sysctl -w vm.max_map_count=262144
chmod +x /var/lib/boot2docker/bootlocal.sh

Docker Toolbox 설치, 메모리 확장, 디스크 확장, timezone변경

Docker Toolbox 기본 설치 과정에서 Docker VM의

– 기본 설정 메모리 크기 확장

– 디스크 확장, 공유 폴더 추가 병행

– Timezone변경

정도로 진행한다.

 

** update :: 교차점 생성, MACHINE_STORAGE_PATH 설정은 

   Kitematic 사용하지 않을 경우에만 하자.

   docker vm ssh접속으로 동작에는 문제 없지만 (= vmware에 linux설치후 그 위에 동작하는 docker)

   host(windowns)에서 docker-machine 명령등에 직접 연결이 안된다.

   ex) 에러 메시지 종류

   Could not determine IP from docker-machine.

   command exit status 255
Error checking TLS connection: Host is not running

   등…

   windows의 OpenSSH와 docker-toolbox의 인증서 위치나 권한 뭐 그런 것들 때문같은데,

   괜히 시간 낭비하지 말자. 그냥 pc검증 환경일 뿐이니…

 

1. 설치 디렉토리 생성 & 링크 (optonal)

– D드라이브에 Docker 디렉토리 생성 (D:\Docker) <– 본인이 희망하는.

– 혹시 모를 일을 대비해서 /Users/MY_NAME/.docker를 D:\Docker로 교차점 생성

C:\Users\MY_NAME> mklink /J .docker "D:\Docker"
.docker <<===>> D:\Docker에 대한 교차점을 만들었습니다.

2. 환경변수 설정 (& 재시작) (optional)

  – Docker 저장소 위치 변경

 

3. Docker Toolbox 다운로드 & 설치

– 다운로드 : https://download.docker.com/win/stable/DockerToolbox.exe

– 설치 진행 : 진행 과정 중 기본 체크 박스 상태 그대로 진행, 설치 완료 후 재시작 불필요
https://docs.docker.com/toolbox/toolbox_install_windows/

 

– 3개의 바로가기 아이콘 생성됨

1) Oracle VM VirtualBox : “C:\Program Files\Oracle\VirtualBox\VirtualBox.exe” deafult VM이 생성되어 있는 상태

2) Kitematic (Alpha) : “C:\Program Files\Docker Toolbox\kitematic\Kitematic.exe”

3) Docker Quickstart Terminal : “C:\Program Files\Git\bin\bash.exe” –login -i “C:\Program Files\Docker Toolbox\start.sh”

 

4. Docker VM 실행 & 상태 확인

– Docker Quickstart Terminal 바로가기 실행

 

 

– IP 확인 (기본 설정대로 라면 NAT구성으로 192.168.99.100) : 위 그림 IP정보 참고

 

5. Oracle VM VirtualBox : Docker VM이미지 메모리 확장, 공유 폴더 추가

 5-0. VM중지 = ‘Docker Quickstart Terminal’에서 아래 명령 실행

$ docker-machine stop

 5-1. Oracle VM VirtualBox실행 & default 우측 클릭 > 닫기 전원 끄기

 5-2. default > 설정 : 기본메모리를 1024MB에서 4096MB로 변경 (컨테이너의 Out-Of-Memory를 덜 보려면…)

 

 

5-3. 공유폴더 추가

– D:\Docker\data 디렉토리 생성

– 이 폴더를 공유 폴더로 추가 & 자동마운트 설정

 

 

 5-4. 디스크 추가

– 저장소 > 새 디스크 만들기 > VMDK 선택 > 동적 할당 > data_disk이름 & 100GB 설정 > 만들기
(경로 : D:\Docker\machines\default\default\data_disk.vmdk)

 

 

– ‘Docker Quickstart Terminal’ 에서 docker-machine start

– Docker쉘 접속 후

1) fdisk /dev/sdb : 파티셔닝

2) mkfs.ext4 /dev/sdb1 : ext4 포맷

3) mount 해보기

docker@default:~$ sudo -i
root@default:~# fdisk -l <----------- 
  ....
  Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors <-----------
  Units: sectors of 1 * 512 = 512 bytes
  Sector size (logical/physical): 512 bytes / 512 bytes
  I/O size (minimum/optimal): 512 bytes / 512 bytes


root@default:~# fdisk /dev/sdb <---------
  ...
  Command (m for help): m <--------
  Command (m for help): g <-------- Linux FileSystem
  Command (m for help): n <-------- 파티션 생성
  Partition type
     p   primary (0 primary, 0 extended, 4 free)
     e   extended (container for logical partitions)
  Select (default p): p <-----------
  Partition number (1-4, default 1): 
  First sector (2048-209715199, default 2048): 
  Last sector, +sectors or +size{K,M,G,T,P} (2048-209715199, default 209715199): 

  Created a new partition 1 of type 'Linux filesystem' and of size 100 GiB.

  Command (m for help): p
  Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
  Units: sectors of 1 * 512 = 512 bytes
  Sector size (logical/physical): 512 bytes / 512 bytes
  I/O size (minimum/optimal): 512 bytes / 512 bytes
  Disklabel type: gpt
  Disk identifier: 54EDF7CB-5770-47D4-9DF6-0F4CE1F48054

  Device     Start       End   Sectors  Size Type
  /dev/sdb1   2048 209715166 209713119  100G Linux filesystem

  Command (m for help): w <--------------
  The partition table has been altered.
  Calling ioctl() to re-read partition table.
  Syncing disks.

root@default:~# fdisk -l <--------------
  ...
  Device     Start       End   Sectors  Size Type
  /dev/sdb1   2048 209715166 209713119  100G Linux filesystem  <--------------

root@default:~# mkfs.ext4 /dev/sdb1 <--------------
  ...
  Writing superblocks and filesystem accounting information: done   

root@default:~# mkdir -p /mnt/sdb1
root@default:~# mount /dev/sdb1 /mnt/sdb1 <----------- 
root@default:~# df -h
  Filesystem                Size      Used Available Use% Mounted on
  tmpfs                     3.5G    229.6M      3.2G   6% /
  tmpfs                     1.9G         0      1.9G   0% /dev/shm
  /dev/sda1                17.8G     46.5M     16.9G   0% /mnt/sda1
  cgroup                    1.9G         0      1.9G   0% /sys/fs/cgroup
  /c/Users                476.2G    189.5G    286.7G  40% /c/Users
  /data                     3.6T      1.4T      2.2T  39% /data
  /dev/sda1                17.8G     46.5M     16.9G   0% /mnt/sda1/var/lib/docker
  /dev/sdb1                97.9G     59.6M     92.9G   0% /mnt/sdb1 <----------

 

– 자동 마운트 설정 : 아래 경로에 bootlocal.sh 파일 생성(실행 권한부여) 후 mount명령 추가

(이 방법외에 다른 방법 찾기 귀찮아서, 혹시 아는 분은 댓글로…)

root@default:~# cd /var/lib/boot2docker
root@default:/var/lib/boot2docker# vi bootlocal.sh 
  #!/bin/sh
  mount /dev/sdb1 /mnt/sdb1
  :wq (저장)
root@default:/var/lib/boot2docker# chmod u+x bootlocal.sh

– ‘Docker Quickstart Terminal’ 에서 docker-machine restart

– docker vm에 쉘 접속 후 확인 : 메모리 크기 등

 

 

6. Timezone변경

– 현재 시간 확인 : PC의 현재 시간과 동일하면 끝, 아래와 같이 아니라면

docker@default:~$ date
Mon Jun 17 21:50:01 UTC 2019  <— 엉뚱한 시간이 나온다. (9시간 전?)

– 다음과 같이 진행 후 docker-machine restart

docker@default:~$ sudo -i
root@default:~# cd /var/lib/boot2docker

root@default:/var/lib/boot2docker# tce-fetch.sh tzdata.tcz
root@default:/var/lib/boot2docker# mkdir ext
root@default:/var/lib/boot2docker# mount tzdata.tcz ext -t squashfs -o loop,ro,bs=4096
root@default:/var/lib/boot2docker# cp ext/usr/local/share/zoneinfo/Asia/Seoul ./Asia-Seoul.tz

root@default:/var/lib/boot2docker# umount ext
root@default:/var/lib/boot2docker# rm -rf ext tzdata.tcz

root@default:/var/lib/boot2docker# vi bootlocal.sh
    #!/bin/sh
    mount /dev/sdb1 /mnt/sdb1
    cp /var/lib/boot2docker/Asia-Seoul.tz /etc/localtime
    :wq (저장)
root@default:/var/lib/boot2docker# chmod u+x bootlocal.sh

((((( 재시작 후 접속 )))))

docker@default:~$ date
Tue Jun 18 07:04:21 KST 2019 <-- PC시간과 동일

(참고 : https://github.com/boot2docker/boot2docker/issues/476)

 

 

[기타]

– container 이미지 저장 위치 :

$ docker info
  Containers: 3
  ...
  Docker Root Dir: /mnt/sda1/var/lib/docker <------------
  ...
  Product License: Community Engine

$ sudo i
# cd /mnt/sda1/var/lib/docker
# find . -name mysql | cut -f 1,2,3 -d "/" | uniq | xargs du -h -d 0
  40.0K   ./overlay2/331e15e384ea042923fbc7d933359fa89718cc38215d0056ab47bfbba2e445f2
  431.8M  ./overlay2/b7f24200745390db507cca92e2d6b32778d77a71f58d8d776dd04be46912b405
  313.6M  ./overlay2/00a4a9d710111c024838b47c3d1a1ce1457f2cd345e33748e21bac3c92364792

대충 /mnt/sd1/var/lib/docker/overlay쯤인가보네

참고 : https://stackoverflow.com/questions/19234831/where-are-docker-images-stored-on-the-host-machine