이전에 포스팅한 Markdown 문법 개념 및 특징에 이어 이번에는 markdown의 기초 문법이다.

 

 

Markdown 문법 개념 및 특징

1. Markdown이란?Markdown은 텍스트 기반의 경량 마크업 언어로 간단한 문법을 사용하여 문서를 쉽게 작성할 수 있도록 설계되었다. 복잡한 태그 없이도 문서를 정리할 수 있으며, 개발자 문서, 블로

mercifulcloud.tistory.com

 

1. 제목 (Heading)

- Markdown에서는 # 기호를 사용하여 제목을 작성한다.

# 제목 1
## 제목 2
### 제목 3
#### 제목 4
##### 제목 5
###### 제목 6


2. 문단 (Paragraph) 및 줄바꿈

- 일반적으로 문장을 입력하면 자동으로 문단이 구분된다.

이것은 첫 번째 문단입니다.

이것은 두 번째 문단입니다.

- 줄바꿈을 원할 경우 줄 끝에 두 칸 이상의 공백을 추가한 후 Enter를 누르면 된다.

이 문장은 줄바꿈 없이  
다음 줄에서 이어집니다.

 

3. 텍스트 강조

- Markdown에서는 텍스트의 가독성을 높이기 위해 굵게(Bold), 기울임(Italic), 취소선(Strikethrough) 등의 강조 기능을 제공한다.

1) 굵은 글씨 :

- 두 개의 별표(**텍스트**) 또는 두 개의 밑줄(__텍스트__)을 사용한다.
- 별표(**)와 밑줄(__)을 모두 사용할 수 있지만, 일반적으로 별표(**)를 더 많이 사용한다.
- 대부분의 Markdown 지원 환경에서 **굵게** 표기법을 기본적으로 인식한다.

일반 글씨

**굵은 글씨**

__굵은 글씨__

 

2) 기울임

- 별표 하나(*텍스트*) 또는 밑줄 하나(_텍스트_)를 사용한다.
- *기울임*과 _기울임_ 두 가지 방법이 가능하지만 별표(*)를 더 많이 사용한다.
- 밑줄(_)은 특정 환경(특히 문서 편집기)에서 단어 사이의 공백을 포함할 경우 인식되지 않을 수 있음에 유의해야 한다.
- 기울임체를 사용할 때 _를 사용할 경우 앞뒤 단어가 모두 밑줄 안에 있어야 정상적으로 동작한다.

*이 문장은 기울임체로 표시됩니다.*  
_이 문장도 기울임체로 표시됩니다._


_이것은 기울임체 입니다_ (O)  
_이것은 기울임체_ 입니다 (X)  → Markdown에서 공백은 인식되지 않음

 

3) 굵은 글씨 + 기울임

- 동시에 적용하려면 별표(*)나 밑줄(_)을 세 개(***텍스트*** 또는 ___텍스트___) 사용한다.
- 세 개의 *** 또는 ___를 사용하면 Bold + Italic 효과를 적용할 수 있다.

***이 문장은 굵고 기울임체로 표시됩니다.***  
___이 문장도 굵고 기울임체로 표시됩니다.___

 

4) 취소선 (가로줄)

- 물결표(틸드, ~) 두 개를 사용한다.
- ~~텍스트~~ 형식으로 감싸면 해당 부분에 취소선 효과가 적용된다.
- 일부 Markdown 렌더러에서는 지원되지 않을 수도 있다.

이 문장은 ~~취소선이 적용~~됩니다.

 

4. 목록

1) 순서 없는 목록

- 순서가 필요하지 않은 목록을 만들 때 사용하며, -, *, + 기호를 사용할 수 있다.
- -, *, + 기호 중 어떤 것을 사용해도 동일한 효과를 얻을 수 있다.
- 일반적으로 - 기호를 가장 많이 사용한다.
- 하위 목록(들여쓰기)을 만들려면 두 칸 이상의 공백을 추가한 후 -, *, +를 입력하면 된다.

- 첫 번째 항목
- 두 번째 항목
  - 하위 항목 1
  - 하위 항목 2
* 세 번째 항목
+ 네 번째 항목

 

2) 순서 있는 목록

- 숫자 뒤에 점(.)을 붙이면 된다.
- Markdown에서는 숫자를 순서대로 입력하지 않아도 자동으로 정렬된다.
- 순서를 자동 정렬해주기 때문에 모든 항목을 1.으로 입력해도 정상적으로 번호가 매겨지지만 가독성을 위해 실제 번호를 맞추는 것이 좋다.

1. 첫 번째 항목
2. 두 번째 항목
3. 세 번째 항목

1. 첫 번째 항목
1. 두 번째 항목
1. 세 번째 항목

 

3) 목록 중첩

- 순서 있는 목록과 순서 없는 목록을 중첩해서 사용할 수 있다.
- 하위 목록을 만들려면 들여쓰기(공백 2칸 또는 4칸)를 추가하면 된다.
- 공백 2칸 이상 들여쓰기 후 -, *, + 또는 숫자를 입력하면 하위 목록이 생성된다.

1. 첫 번째 항목
   - 하위 항목 1
   - 하위 항목 2
2. 두 번째 항목
   1. 하위 항목 1
   2. 하위 항목 2

 

4) 체크리스트

- GitHub Flavored Markdown(GFM)에서는 체크리스트(Task List)를 지원한다.
- 체크리스트는 [ ] 또는 [x] 형식으로 작성하면 된다.
- GitHub 웹에서는 체크리스트가 정상 작동하지만 로컬에서는 대부분의 Markdown 뷰어가 지원하지 않는다.
- 만일 로컬에서 .md파일을 열었을 때 체크리스트가 정상적으로 보이려면 GFM을 지원하는 Markdown 뷰어를 사용해야 된다. VS Code의 경우 Markdown Preview Enhanced 확장을 설치하면 볼 수 있다.

- [ ] 해야 할 일 1
- [x] 완료한 일 2

 

5. 코드 블록

- 코드는 **인라인 코드(Inline Code)**와 블록 코드(Block Code) 두 가지 방식으로 작성할 수 있다.

1) 인라인 코드

- 인라인 코드란 문장 중간에 코드가 포함되는 경우를 의미한다.
- 코드를 감싸기 위해 백틱(Backtick, ` ) 기호를 사용한다.
- 백틱(`) 한 개로 감싸면 인라인 코드가 된다.
- 줄 바꿈 없이 문장 내에서 사용할 수 있다.

인라인 코드 예시 `print("Hello, World!")`처럼 백틱(`)을 사용한다.

 

2) 블록 코드

- 여러 줄의 코드를 입력하려면 백틱 3개(```)를 사용하여 코드 블록을 만든다.
- 코드 블록을 만들 때 언어를 명시하면 문법 강조(Syntax Highlighting)가 적용된다.

  
블록 코드 예시 

```python
def hello():
    print("Hello, World!")
```
끝

 

3) 코드 블록에서 특수 문자 이스케이프

- 코드 블록 내부에서 Markdown 문법을 그대로 표시하려면 이스케이프(Escape) 처리를 해야 한다.
- Markdown 문법을 코드로 설명하고 싶을 때는 백틱(```)을 네 개 사용해야 한다.

````markdown
```python
print("Hello, World!")
```
````

 

6. 인용문

1) 기본 인용문

- > 기호를 사용하면 해당 줄이 인용문으로 표시된다.
- 인용문 내부에서는 일반 텍스트, 링크, 강조 문법 등을 사용할 수 있다.

인용문 예시
> 이것은 인용문입니다.

내부에서 다른 문법 사용 예시
> **강조된 인용문**입니다.  
> *기울임체*도 사용할 수 있습니다.  
> [Google](https://www.google.com) 링크를 추가할 수도 있습니다.

끝

 

2) 여러 줄 인용문

- 여러 줄에 걸쳐 사용할 수도 있다.
- 줄바꿈 없이 계속 이어지는 인용문을 만들려면 > 기호를 각 줄 앞에 붙여야 한다.
- 첫 번째 줄에만 >를 사용해도 이후 줄이 자동으로 인용문에 포함될 수 있다. 다만 뷰어마다 동작 방식이 다를 수 있으므로 가급적 >를 모든 줄에 명시하는 것이 좋다.
- 빈 줄을 추가하면 인용문이 분리

1. 각 줄에 >를 명시한 여러줄 인용문
> 첫 번째 줄입니다.
> 두 번째 줄입니다.
> 세 번째 줄입니다.

2. 여러 줄 인용문
> 첫 번째 줄입니다.
두 번째 줄입니다.
세 번째 줄입니다.

3. 빈 줄을 추가하면 인용문이 끊길 수 있음
> 첫 번째 줄입니다.
두 번째 줄입니다.

세 번째 줄입니다.

 

3) 중첩 인용문

- > 기호를 여러 개 사용하여 인용문의 단계(depth)를 조절한다.
- >를 여러 번 사용할수록 들여쓰기 단계가 깊어진다.

> 첫 번째 인용문입니다.
>> 두 번째 인용문입니다.
>>> 세 번째 인용문입니다.

 

4) 인용문 내부에 다른 요소 추가

- 인용문 내부에는 목록, 코드 블록, 표 등을 추가할 수 있다.
- 줄바꿈이 필요할 경우 > 뒤에 빈 줄을 추가한다.

> 목록을 포함한 인용문
> - 첫 번째 항목
> - 두 번째 항목
>   - 하위 항목

> 코드 블록을 포함한 인용문
> 
> ```python
> def hello():
>     print("Hello, World!")
> ```

> 표를 포함을 포함한 인용문
> 
> | 이름  | 나이 | 직업   |
> |------|----|------|
> | 홍길동 | 25 | 개발자 |
> | 이몽룡 | 30 | 기획자 |

 

7. 링크

1) 기본 링크

- 가장 일반적인 Markdown 링크 문법은 [텍스트](URL) 형식이다.

[구글 링크 클릭](https://www.google.com)

 

2) 자동 링크 (Auto Link)

- < > 기호를 사용하면 URL이 자동으로 링크로 변환된다.
- 이메일 주소도 자동 링크가 가능하다.

<https://www.google.com>

 

3) 링크에 제목(툴팁) 추가

- 링크에 제목(툴팁)을 추가하면 마우스를 올렸을 때 설명이 표시된다.

[Google](https://www.google.com "구글로 이동")

 

4) 이미지 링크

- [![이미지 설명](이미지 URL)](링크 URL) 형식으로 작성한다.

[![검은고양이](https://cdn.pixabay.com/photo/2017/11/13/07/14/cats-eyes-2944820_1280.jpg)](https://www.google.com)

 

5) 문서 내부 링크 (같은 파일 내 이동)

- 문서 내부에서 특정 제목으로 이동하려면 [링크 텍스트](#제목) 형식을 사용한다.
- 대소문자는 구분되지 않는다.
- 공백은 -로 변환되므로 링크를 작성할 때 반영해야 한다.( 제목이 여러 단어로 구성된 경우의 공백 처리)
- 특수문자가 포함된 경우 일부 문자는 제거되거나 변환될 수 있으므로 실제 테스트 후 동작 여부를 확인하는 것이 좋다.

# 목차
- [개요](#개요)
- [프로젝트 소개로 이동](#project-intro)
- [설치 방법](#설치-방법)
- [사용법!](#사용법)

### 개요
이 문서는 Markdown 내부 링크 사용법을 설명합니다.

### 프로젝트 소개 {#project-intro}
프로젝트를 소개합니다.

### 설치 방법
Markdown 문서를 작성하는 방법을 설명합니다.

### 사용법!
내부 링크를 활용하는 다양한 방법을 다룹니다.

 

6) 참조 스타일 링크

- 참조 스타일(Reference Style) 링크를 사용하여 가독성을 높일 수 있다.
- 본문에서는 [텍스트][참조 ID] 형식을 사용한다.
- 실제 URL은 문서의 다른 곳에 [참조 ID]: URL 형식으로 작성한다.
- 여러 개의 같은 링크를 사용할 때 유용하다.
- 제목 링크는 공백이 -로 변환되므로 정확한 ID를 사용해야 한다.
- 일부 Markdown 렌더러에서 지원되지 않을 수도 있다.

[Google][google-link]

[google-link]: https://www.google.com

 

8. 이미지 삽입

1) 이미지 삽입 기본 문법

- 기본 문법은 ![이미지 설명](이미지_URL) 형태로 한다.
- 마우스를 올릴 때 툴팁을 표시하려면 " " 안에 텍스트를 입력하면 된다.
- ![이미지 설명](이미지_URL)을 [ ]로 감싸고 (링크_URL)을 추가하면 이미지 클릭 시 특정 웹페이지로 이동한다.

# 기본 이미지 삽입
![검은고양이](https://cdn.pixabay.com/photo/2017/11/13/07/14/cats-eyes-2944820_1280.jpg)

# 이미지에 제목(툴팁) 추가
![검은고양이](https://cdn.pixabay.com/photo/2017/11/13/07/14/cats-eyes-2944820_1280.jpg "마우스를 올려보세요")

# 클릭 가능한 이미지 (이미지 링크)
[![검은고양이](https://cdn.pixabay.com/photo/2017/11/13/07/14/cats-eyes-2944820_1280.jpg)](https://www.google.com)

 

2) 로컬 이미지 삽입

- Markdown 문서(ex 리드미파일)와 같은 폴더에 있는 이미지를 삽입 가능하다.
- 아래 폴더구조를 참고해서 보면 현재 Markdown 파일(README.md)이 있는 위치를 기준으로 images 폴더 내 sample.png 와 logo.jpg를 불러온다.
- Markdown 문서와 이미지가 같은 프로젝트 내에 있을 때 유용하다.
- 만일 GitHub에서 로컬 이미지가 표시되지 않는 경우 GitHub에 이미지를 올리고 GitHub 저장소의 이미지 URL을 사용한다.

![샘플 이미지](./images/sample.png)
![로고](./images/logo.jpg)
📂 프로젝트 폴더
│── 📄 README.md
│── 📂 images
│   ├── 📄 sample.png
│   ├── 📄 logo.jpg


3) 이미지 크기 조절

- Markdown 기본 문법으로는 이미지 크기 조절이 어려워 HTML을 사용해야 한다.

### 기본 이미지
![검은고양이](https://cdn.pixabay.com/photo/2017/11/13/07/14/cats-eyes-2944820_1280.jpg)

### 크기 조절
<img src="https://cdn.pixabay.com/photo/2017/11/13/07/14/cats-eyes-2944820_1280.jpg" width="200" height="100">

 

4) 이미지 정렬

- Markdown에서는 기본적으로 이미지를 가운데 정렬할 방법이 없으므로 HTML을 사용해야 한다.
- <p align="center"> 태그를 사용하면 이미지를 가운데 정렬할 수 있다.

### 정렬 전
<img src="https://cdn.pixabay.com/photo/2017/11/13/07/14/cats-eyes-2944820_1280.jpg" width="200" height="100">

### 정렬 후
<p align="center">
  <img src="https://cdn.pixabay.com/photo/2017/11/13/07/14/cats-eyes-2944820_1280.jpg" width="200" height="100">
</p>

 

9. 수평선

- 세 개 이상의 -, *, _을 입력하면 수평선이 생성된다.

---
***
___

- 일부 Markdown 렌더러에서는 ---가 제목 아래 위치할 경우 제목 스타일(#)로 해석될 수도 있으므로 수평선 위에 빈 줄을 추가하는 것이 좋다.
- 아래에서 ===는 Markdown에서 제목(h1, h2)으로 해석되는 문법이다.

제목 1
---
제목 2
===


제목 1

---
제목 2
===


10. 테이블

1) 기본 테이블 문법

- 파이프(| ) 기호를 사용하여 열(Column)을 구분한다.
- 하이픈 기호(-)를 사용하여 테이블 헤더와 내용을 구분한다.
- 각 열의 구분선(|---|---|---|)을 맞추지 않아도 동작하지만 정렬을 맞추는 것이 가독성에 좋다.

 

| 이름  | 나이 | 직업   |
|------|----|------|
| 홍길동 | 25 | 개발자 |
| 이몽룡 | 30 | 기획자 |

 

2) 테이블 정렬

- 기본적으로 테이블의 텍스트는 왼쪽 정렬된다.
- 하지만 콜론(:)을 사용하면 정렬을 변경할 수 있다.

  • :------ → 왼쪽 정렬
  • ------: → 오른쪽 정렬
  • :----: → 가운데 정렬

 

| 이름  | 나이 | 직업   |
|:------|----:|:----:|
| 홍길동 | 25 | 개발자 |
| 이몽룡 | 30 | 기획자 |

 

11. 기타

1) 특수문자 출력

- Markdown에서는 *, _, #, | 등 일부 문자가 문법 요소로 해석된다.
- 백슬래시(\)를 사용하여 문법을 무시하고 일반 문자로 출력할 수 있다.

\*이것은 강조가 아닙니다.\*
\_이것은 기울임이 아닙니다.\_
\# 이것은 제목이 아닙니다.
\| 테이블 구분자가 아닙니다. |

 

2) 주석

- HTML의 <!-- -->을 사용하여 주석을 작성할 수 있다.

# 주석1
<!-- 이 부분은 화면에 표시되지 않습니다. -->
주석2

 

3) HTML 태그 활용

- Markdown에서는 HTML 태그를 함께 사용할 수 있다.
- 일부 Markdown 환경에서는 HTML을 지원하지 않지만 대부분의 플랫폼에서는 정상적으로 동작한다.

<b>굵은 텍스트</b>
<br>
<i>기울임 텍스트</i>
<u>밑줄 텍스트</u>

 

 

 

1. Markdown이란?

Markdown은 텍스트 기반의 경량 마크업 언어로 간단한 문법을 사용하여 문서를 쉽게 작성할 수 있도록 설계되었다. 복잡한 태그 없이도 문서를 정리할 수 있으며, 개발자 문서, 블로그, README 파일, 기술 보고서 등에서 널리 사용된다.

Markdown은 2004년 존 그루버(John Gruber)와 애런 스워츠(Aaron Swartz)가 공동 개발했다. 두 사람은 복잡한 HTML을 직접 작성하는 대신, 더 직관적이고 사람이 읽기 쉬운 문법을 만들고자 Markdown을 고안했다.

 

2. Markdown의 특징

1) 간결한 문법

- Markdown은 단순한 기호만으로 문서를 작성 가능하므로 초보자도 쉽게 배울 수 있다.

2) 가독성이 뛰어남

- HTML 코드처럼 태그가 많지 않기 때문에 원본 텍스트만으로도 가독성이 뛰어나다.

3) 다양한 포맷으로 변환 가능

- Markdown은 기본적으로 HTML로 변환되도록 설계되었지만 다양한 형식으로 변환이 가능하다.

4) Git과 함께 사용하기 최적화됨

- 코드와 함께 문서를 관리할 수 있어 유지보수가 쉬움

5) 다양한 플랫폼에서 지원

 

  • GitHub, GitLab, Bitbucket → README, 이슈, PR에서 사용
  • Jupyter Notebook → 데이터 분석, AI 연구용 문서화
  • Obsidian, Notion, Typora → 노트 및 문서 정리
  • MkDocs, Sphinx → 기술 문서 자동화
  • Hugo, Jekyll, Hexo → 블로그 포스트 작성

 

 

3. Markdown과 HTML의 차이점

 
항목 Markdown HTML
사용 용도 간단한 문서 작성 정교한 웹 페이지 제작
가독성 사람에게 읽기 쉬움 태그가 많아 가독성이 낮음
변환 가능성 HTML, PDF 등 다양한 포맷으로 변환 가능 Markdown으로 변환하려면 추가 작업 필요
스타일 적용 제한적( CSS를 적용하려면 HTML과 함께 사용해야 함 ) CSS, JavaScript와 결합 가능

 

4. Markdown의 한계점

 

- 스타일(Custom CSS 적용)이 제한적

- 수식 및 다이어그램 기능 기본 미지원

 

  • 기본 Markdown에는 LaTeX 수식, Mermaid 다이어그램 같은 기능이 없음
  • Jupyter Notebook, MkDocs, GitHub 등 특정 플랫폼에서는 확장 기능 지원

 

- 인터랙티브한 기능 부족

 

  • Markdown 자체로는 JavaScript와 같은 동적 기능을 포함할 수 없음
  • 일부 확장 문법(GFM, Markdown Extra)에서는 HTML을 삽입 가능하지만 일반적인 Markdown에서는 지원되지 않음

 

 

5. Markdown 표준 및 확장

Markdown은 처음에는 단순한 문서 작성 도구였지만 여러 플랫폼에서 확장되면서 다양하게 문법이 확장되었다.

1) CommonMark – 공식 표준 Markdown

Markdown은 원래 명확한 표준 없이 여러 버전이 혼재되었으나, 이를 표준화하려는 움직임이 생겼다.
2014년, CommonMark 프로젝트가 시작되면서 Markdown의 명확한 문법과 동작 방식을 정의했다.

* CommonMark의 특징
- Markdown을 일관되게 사용할 수 있도록 표준화
- GitHub, Stack Overflow, Reddit 등의 주요 플랫폼에서 지원
- 기존 Markdown과 호환성을 유지하면서 명확한 사양을 제공

CommonMark는 현재 가장 많이 사용되는 Markdown 표준 사양이다.

 

2) GitHub Flavored Markdown (GFM)

GitHub에서 Markdown을 확장하여 개발자 친화적인 기능을 추가한 버전이다.

* GitHub Flavored Markdown(GFM)의 특징
- Task List (체크리스트) 
- 표 지원
- 코드 블록 강조
- 이슈 및 PR 참조

GFM은 GitHub뿐만 아니라 GitLab, Bitbucket 등에서도 널리 사용된다.

 

3) MultiMarkdown (MMD)

MultiMarkdown은 기본 Markdown 문법을 확장하여 각주, 표, 메타데이터, 인용문 등을 추가한 버전이다.

* MultiMarkdown의 주요 기능
- 각주(Footnotes)
- 메타데이터 지원 → 문서 정보 포함 가능
- LaTeX 변환 가능 → 논문 작성에도 활용 가능

Markdown을 논문 작성이나 연구 문서에 활용하고 싶다면 MultiMarkdown이 유용하다.

 

4) Markdown Extra

Markdown Extra는 PHP 기반의 Markdown 확장 버전으로, 추가적인 문법을 지원한다.

* Markdown Extra의 주요 기능
- 표 (Table)
- 각주
- 제목 ID 자동 생성

이 버전은 특히 WordPress, CMS 문서 작성 등에 활용된다.

 

5) Pandoc Markdown

Pandoc은 다양한 문서 포맷을 변환할 수 있는 도구로, Markdown을 기반으로 확장된 기능을 제공한다.

* Pandoc Markdown의 특징
- Markdown을 HTML, LaTeX, PDF, EPUB 등 다양한 포맷으로 변환 가능
- YAML 메타데이터 지원
- Markdown을 논문 및 학술 문서에 활용 가능

LaTeX와 함께 사용하여 Markdown을 논문 형식으로 변환하는 경우에 Pandoc이 많이 활용된다.

 

6. Markdown 표준 및 사용처

Markdown 버전 사용 플랫폼 주요 특징
CommonMark GitHub, Stack Overflow, Reddit Markdown 표준화 프로젝트
GFM (GitHub Flavored Markdown) GitHub, GitLab, Bitbucket 체크리스트, 표, 코드 블록 강조
MultiMarkdown 개인 문서, 논문, 연구 문서 각주, 메타데이터, LaTeX 변환 가능
Markdown Extra WordPress, CMS 문서 표, 각주, 제목 ID 자동 생성
Pandoc Markdown LaTeX 논문, 학술 문서 PDF, LaTeX, EPUB 변환 가능

 

7. Markdown vs LaTeX 

항목 Markdown LaTeX
사용 용도 간단한 문서, 블로그, README 논문, 학술지, 수식 포함 문서
배우기 쉬움 쉬움 (직관적인 문법) 어려움 (복잡한 문법)
스타일링 CSS 필요 고급 스타일링 가능
공식 표준 없음 (CommonMark이 표준화 역할) 있음 (TeX, LaTeX 표준)
변환 가능성 HTML, PDF, EPUB 등 변환 가능 PDF 변환 기본 지원
결론 블로그, 기술 문서, README 파일 등에 적합 학술 논문, 수식이 포함된 문서 작성에 적합

 

 

 

 

블로그와 stackoverflow를 샅샅이 뒤진 결과 도커 데스트답 설치하는 과정에서 생긴 오류들을 해결한 과정을 정리해뒀다.

순서는 좀 틀릴 수 있는데, 다 해본 과정이고 해결은 됐다.

명령어는 모두 파워셸 관리자모드에서 실행해야 한다.

 

 

1. 에러 발생(WslRegisterDistribution failed with error: 0x80370102)

- WSL2 (Windows Subsystem for Linux 2) 가 현재 컴퓨터 설정에서 지원되지 않음을 의미한다.

- 이 에러는 WSL2와 가상화 기능의 설정이 잘못됐거나 비활성화된 경우에 발생한다.

 

 

2. 현재 컴퓨터 상태 확인

1. CPU 가상화 지원 확인

- 작업 관리자 ( Ctrl + Shift + Esc ) > 성능 탭 > CPU 항목

- 가상화 : 사용으로 돼있는지 확인

 

2. BIOS 설정에서 가상화 기능 활성화돼있는지 확인

- 내 컴퓨터는 사용자가 할 수 없는 컴퓨터라 AS센터에 가서 직접 활성화시키고 왔
다. 갔다와서도 안되길래 다른 센터에 가서 한 번 더 하고 와서 확실히 활성화시켰다. 하지만 그럼에도 같은 에러가 났다. 

- BIOS 모드 진입 방법 :  컴퓨터 다시 시작하면서 F2, F10, Del 중에 하나를 연타하면 BIOS 설정 화면에 진입할 수 있다. (LG그램 기준으로 F2였다.)

- 가상화 관련 옵션 이름 :

  • Intel CPU : Intel VT-x, Intel Virtualization Technology 
  • AMD CPU : AMD-V, SVM Mode

- 설정했다면 저장하고 재부팅한다.

 

3. 윈도우 버전 확인 - wsl2 지원여부 확인

- 내 컴퓨터는 윈도우 10Home이었고 아슬아슬하게 지원이 가능한 버전이었다. 

- Windows 10 Home에서도 WSL 2를 지원하려면 Windows 10 버전 1903 이상 (빌드 18362 이상)이어야 한다.

- 버전이 낮다면 최신 버전으로 업데이트가 필요하다.

- 파워셸에서 아래 명령어로 윈도우 버전 확인 가능하다.

winver

- 명령어 실행 시 윈도우 정보 창이 뜬다.

 

4. 윈도우 기능 설정

- 제어판 > 프로그램 > Windows 기능 켜기/끄기

- Hyper-V, Linux용 Windows 하위 시스템, 가상 머신 플랫폼을 체크해준다.

 

 

3. WSL/ Virtual Machine Platform 활성화

- Windows 기능 중 Linux용 Windows 하위 시스템(WSL)과 가상 머신 플랫폼(Virtual Machine Platform)을 활성화한다.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux, VirtualMachinePlatform

 

4. WSL 설치는하되, 기본 Linux 배포판(Ubuntu 등)을 설치하지 않는 옵션

- Virtual Machine Platform, WSL2 커널 등 WSL 실행에 필요한 모든 시스템 구성 요소 설치

- 기본 배포판(Ubuntu)을 설치하지 않고 WSL 환경만 준비

- 이 명령어를 실행한 후 WSL 환경이 설정되면, 원하는 배포판을 수동으로 설치해야한다.

wsl.exe --install --no-distribution

 

 

5. Hypervisor 관련 명령어 실행 : 순서대로 실행

1.  Hyper-V 활성화

- Windows의 Hyper-V 기능을 활성화하는 명령어

- Hyper-V 기능이 비활성화되어 있는 경우 WSL2 설치를 진행하기 위해 실행

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

 

2. Hypervisor Launch Type 확인

- 현재 Hypervisor Launch Type 설정 상태를 확인하는 명령어

- 결과 예시 : 

  • hypervisorlaunchtype Auto : Hyper-V가 정상적으로 동작할 준비가 됨.
  • hypervisorlaunchtype Off : Hyper-V가 비활성화 상태

 

bcdedit /enum | findstr /i hypervisorlaunchtype

 

3. Hypervisor Launch Type 활성화

- Hyper-V가 Off 상태일 때 이를 Auto로 변경하여 활성화

bcdedit /set hypervisorlaunchtype Auto

 

4. Hypervisor 설정 상태 재확인

- 앞서 설정한 Hypervisor Launch Type이 제대로 적용되었는지 확인

bcdedit /enum | findstr /i hypervisorlaunchtype

 

 

6. WSL 설치 상태 확인

- WSL의 설치된 배포판 목록과 버전(WSL 1 또는 WSL 2) 확인

- 내 경우 UBUNTU가 뜨지 않았다.

wsl -l -v

 

 

7. wsl2를 기본 버전으로 설정

- 새로 설치되는 모든 WSL 배포판이 기본적으로 WSL2를 사용하도록 설정

wsl --set-default-version 2

- 여기까지 했을 때 드디어 새로운 오류가 떴다. 오류가 났음에도 매우 기쁨.

 

 

8. 도커 완전 삭제

- Docker Desktop 프로그램 삭제  : 설정 > 앱 > 앱 및 기능 > Docker Desktop 제거

- Docker 관련 파일 및 데이터 삭제

C:\ProgramData\Docker
C:\Users\<사용자명>\AppData\Local\Docker
C:\Users\<사용자명>\AppData\Roaming\Docker
C:\Users\<사용자명>\.docker (숨김 파일)

- WSL2에 저장된 Docker 데이터 제거

wsl --list --verbose
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data

- Docker 관련 레지스트리 키 삭제 :  Windows + R을 눌러 regedit 실행.

아래 경로로 이동해 Docker 관련 항목 삭제한다.  없을 수도 있다. 내 경우엔 없었다.

HKEY_LOCAL_MACHINE\SOFTWARE\Docker Inc.
HKEY_CURRENT_USER\Software\Docker Inc.

- 환경 변수 삭제 : 내 PC > 속성 > 고급 시스템 설정 > 환경변수 클릭 > PATH 변수에서 Docker 관련 경로 삭제

- 삭제 완료되었다면 반드시 시스템 재부팅

 

9. WSL 커널 업데이트

- WSL 커널이 손상되었거나 최신 버전이 아닌 경우에도 에러가 발생할 수 있다.

- 아래 사이트에서 최신 패키지를 다운로드 후 설치해준다.

https://aka.ms/wsl2kernel/  

 

이전 버전 WSL의 수동 설치 단계

wsl install 명령을 사용하지 않고 이전 버전의 Windows에 WSL을 수동으로 설치하는 방법에 대한 단계별 지침입니다.

learn.microsoft.com

 

- 설치 후 wsl을 다시 시작한다.

wsl --shutdown
wsl

 

 

10. WSL 업데이트

- 현재 WSL 버전 및 상태 확인

wsl --update

- WSL 최신 버전으로 업데이트

wsl --version

- 업데이트 적용 후 WSL 다시 시작

wsl --shutdown

 

 

11. 새로운 Ubuntu 배포판 및 도커 데스트톱 재설치

- Ubuntu 배포판을 다시 설치

- 파워셸에서 기본 배포판으로 설정

wsl --set-default-version 2
wsl --set-default Ubuntu

- Docker Desktop 재설치

- WSL 설정 확인

wsl --list --verbose

- 여기까지 했을 때 비록 정지 상태지만 드디어 우분투와 도커 데스크톱이 모두 보였다. 

 

 

12. WSL 배포판 시작하기

- Stopped 상태의 WSL 배포판 활성화

- docker-desktop 시작 :

wsl --distribution docker-desktop

- Ubuntu 시작 :

wsl --distribution Ubuntu

- 필수 기능 활성화 안돼있다면 활성화 : 이후 컴퓨터 재부팅 필요

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All
Enable-WindowsOptionalFeature -Online -FeatureName WindowsSubsystemForLinux -All

- Docker Desktop 실행 : Settings > WSL Integration > Enable integration with my default WSL distro 활성화

 

13. Windows 복구 및 무결성 검사

- 위에서도 에러가 났었는데, 결론적으로 여기부터 실행한 것이 결정적인 해결책이었다.

- 참고로 아래 명령어 두 개는 실행 시 시간이 오래 걸린다.

- Windows 이미지 복구 : 손상된 시스템 파일이나 누락된 구성 요소를 Windows Update를 통해 복구

dism /online /cleanup-image /restorehealth

- 시스템 파일의 무결성 검사 : 손상된 파일이 발견되면 자동으로 복구

sfc /scannow

- 여기까지 실행했을 때 분명 최신 버전으로 윈도우 업데이트 했었음에도 또다시 Windows 업데이트 알림이 떴다.

- dism /restorehealth 명령이 Windows Update를 사용하여 손상된 파일을 복구했기 때문에, 관련 업데이트를 설치하라는 알림이 뜨는 경우가 있다고 한다.

- 업데이트 후 시스템을 재부팅해준다.

 

 

14. WSL 설치

1. WSL 설치 상태 확인

wsl --list --verbose

2. 필수 기능 활성화 여부 확인

- 아래 항목들이 Enabled로 표시되어야 한다.

  • Microsoft-Windows-Subsystem-Linux
  • VirtualMachinePlatform
  • Microsoft-Hyper-V-All

 

dism /online /get-features /format:table

- 위 명령어는 뭔가 너무 많이 나와서 확인하기 어렵다면 아래 명령어로 확인

Get-WindowsOptionalFeature -Online | Where-Object {$_.FeatureName -match "Subsystem|Hyper-V|VirtualMachine"}

- 위에서 Disabled로 표시되는 기능이 있다면 다음 명령으로 활성화

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -All
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All -All

3. WSL 버전 확인

- 에러가 없다면 기본 WSL 버전이 2로 설정된다.

wsl --set-default-version 2

 

 

15. 레거시 콘솔 설정 문제

- PowerShell > 상단의 창 제목 표시줄 우클릭 > 속성 > 옵션 >  레거시 콘솔 사용 옵션 비활성화(체크 해제)

 

 

16. 배포판 설치 및 Docker 설정

- wsl 설치

wsl --install

- Docker Desktop에서 Settings > WSL Integration 설정이 활성화되었는지 확인

- 아래 명령어로 Docker가 정상적으로 작동하는지 확인

- 파워셸 창을 껐다가 다시 실행해야 된다.

docker --version
docker run hello-world
docker images
docker ps

 

 

 

17.  정상인 상태

wsl --list --verbose

 

 

 

 

배포를 하기엔 클라우드 비용이 부담스러워서 내 컴퓨터 외에서도 잘 실행되는지 궁금할 때가 있다. 또는 잠깐의 시간동안 공유를 하는 경우 배포보다 유용한 도구가 있어 사용해봤다.

ngrok은 로컬 서버를 인터넷을 통해 외부에서 접근 가능하도록 만들어주는 도구이다. 개발 및 테스트 환경에서 사용된다.

클라우드 서버 없이도 인터넷만 가능한 환경이라면 로컬 서버에 접속을 가능하게 해준다.

 

1. 회원가입

- 먼저 ngrok 공식 웹사이트에서 회원가입을 해야 한다.

https://dashboard.ngrok.com/signup

 

2. 다운로드

- 다운로드는 각자 운영체제에 맞는 것으로 다운 받으면 된다.

- 윈도우 기준으로 압축파일을 다운 받아 압축을 풀어주면 ngrok.exe 파일 하나가 들어 있고 용량은 45.9MB라 크게 부담이 없다.

https://download.ngrok.com/windows?tab=download

 

Download ngrok

Download ngrok

download.ngrok.com

 

3. ngrok.exe 실행

- ngrok.exe 파일만 더불 클릭하면 설치하는 것도 없이 바로 이렇게 ngrok 터미널이 실행된다.

 

4. 인증 토큰 등록하기

- 실행 후 ngrok 인증 토큰 등록이 필요하다. 인증토큰 후 회원가입 후 ngrok 사이트 대시보드에서 확인 가능하다.

- 토큰은 한번 등록하면 일반적으론 같은 컴퓨터에선 다시 등록하지 않아도 된다.

- 컴퓨터를 새로 변경하거나 ngrok를 새로 설치했거나 인증토큰이 만료 또는 변경된 경우에는 재등록이 필요하다.

- 아래 명령어가 인증토큰과 함께 대시보드에 나와있어서 바로 붙여넣기 하면 등록이 완료된다.

ngrok config add-authtoken 인증토큰

- 인증 토큰 등록이 완료되면, 이렇게 아래 경로로 ngrok.yml 파일이 생성이 되는데 경로는 사용자마다 다를 수 있다.

- 이 ngrok.yml 파일에 인증토큰이 저장되므로 이후 ngrok 실행 시 자동으로 인증된다.

 

5. 로컬에서 웹 서버 실행

- flask로 간단한 웹을 만들고 있었어서 flask를 vscode에서 실행했다.

- ngrok를 사용하려면 반드시 로컬에서 웹 서버가 실행 중이어야 한다.

 

6. ngrok를 통해 로컬에서 실행중인 특정 포트를 외부에서 접근 가능하게 터널링

- 위에서 flask를 사용했고 따로 포트 설정을 안 했다면 flask는 기본적으로 5000번 포트를 사용하기 때문에 5000을 넣어줬다.

- ngrok 명령어를 통해 이 포트를 외부에 노출하면, 로컬 Flask 애플리케이션을 외부에서 테스트하거나 공유할 수 있다.

- Forwarding 옆에 있는 부분이 외부에서 접근 가능한 url이다.

ngrok http 5000

 

7. 실행

- 화살표 앞에 .app까지가 실행 주소이다.

- url을 붙여넣으면 visit site라는 버튼이 표시되고 클릭하면 내가 개발하던 화면이 나타난다.

- 무료 플랜이었기 때문에 연결 시간이 길지는 않으며, 한번 종료하면 다시 실행할 때마다 url이 바뀐다.

- 유료 플랜의 경우 고정된 서브도메인 사용도 가능하며 연결 시간이 더 긴 혜택 등이 있다.

 

8. ngrok 종료

- 터미널에서 ctrl + c로 종료

 

 

 

* 여러 도메인 할당

- 무료 플랜에서는 제한은 있기는 하나 ngrok에 여러 도메인 할당도 가능하다.

- 실행해야 하는 로컬 서버가 두 개 이상인 경우 다중 터널 생성이 가능하다.

- 이런 식으로 두 개의 터널을 각각 생성하면 두 개의 외부 도메인이 생성되고, 서로 다른 두 개의 url이 각각 생성된다.

ngrok http 5000
ngrok http 8000

- 여러 터널을 한 번에 실행하려면 ngrok.yml 설정 파일을 수정하면 된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dev 브랜치에서 pull받을 게 있어서 가져오려고 개인 브랜치에서 git checkout dev를 시도했는데 error 메시지가 났다.현재 브랜치에서 작업하고 있던 내용이 두 파일에 변경 사항으로 남아 있어서 dev브랜치로의 전환이 불가능한 상황이다.

 

이럴 때 자주 사용하는 방법이 바로 git stash이다.

 

1. 변경 내용을 임시 저장하기

- 작업하던 브랜치에서 작업 내용을 커밋하지 않고도 변경 내용이 임시로 저장된다.

git stash

 

이런 경고 메시지가 나타났지만 크게 문제는 없어 보인다.

파일 줄바꿈 방식이 변경될 가능성을 경고하는 건데 일반적인 window환경에서 나타난다.

" Saved working directory and index state WIP on songi "라는 메시지를 보니 git stash가 정상적으로 실행되었다.

 

2. 다른 브랜치로 전환

- 이제 dev 브랜치로 안전하게 이동이 가능하다.

git checkout dev

 

3. 전환한 브랜치에서 최신 상태로 업데이트

- dev브랜치에서 원래 하려던 pull을 무사히 실행했다.

git pull origin dev

 

4. 작업하던 브랜치로 복귀

- dev에서 pull을 받았으니 원래 브랜치로 복귀했다.

git checkout songi

 

5. 임시 저장한 변경 내용 다시 가져오기

-  커밋을 따로 하지 않고 git stash로 임시 저장을 했었기에 그 내용을 다시 가져와야 한다.

- 여기까지 했으면 dev에서 pull받고 내 브랜치는 원래 상태로 되돌려졌다.

git stash apply

 

 


 

위 내용은 dev 내용에 있는 파일 확인을 하지 못해서 pull만 받았을 때의 내용이다.

하지만 dev에 있던 파일 굳이 확인이 필요 없이 merge만 하려 했는데 현재 브랜치의 로컬 변경 사항 때문에 병합이 중단되었다면 아래와 같이 하면 된다.

이 때는 브랜치 전환이 굳이 필요 없다.

1. 현재 변경 사항을 stash에 저장하기

git stash

 

2. 병합하기

- dev브랜치에 pull받은 내용을 songi 브랜치로 병합

git merge dev

 

3. 변경사항 다시 가져오기

git stash apply

 

 


 

만약 현재 작업 내용을 커밋할 계획이었다면 먼저 커밋을 하고 하면 되고, 작업 내용이 필요 없는 상황이라면 아래와 같이 로컬 변경 사항을 폐기후 진행하면 된다.

git restore 작업한파일명

 

 

 

 

1. 리눅스에 파이썬 설치돼있는지 확인

# Python3가 설치되어 있는지 확인
python3 --version

# 설치되어 있다면 버전 정보가 출력
Python 3.8.10

# 설치되어 있지 않다면
sudo apt update
sudo apt install python3 python3-pip

 

2.  venv 모듈 설치 확인

# venv 모듈 설치 확인
# 아무 메시지도 출력되지 않으면 venv가 설치되어 있는 것
python3 -m venv --help

# venv가 없을 경우 설치
sudo apt install python3.8-venv

 

3. 가상환경 생성 및 활성화

# 가상환경 생성
python3 -m venv scrapyTest

# 가상환경 활성화
source scrapyTest/bin/activate

# 활성화 후 앞에 (scrapyTest)가 뜨는지 확인

 

4. scrapy 설치

# pip 업그레이드
pip install --upgrade pip

# Scrapy 설치
pip install scrapy

# Scrapy 설치 확인
scrapy version

 

5. scrapy 사용해보기

여기부턴 윈도우 환경에서 사용할 때와 같다

# 책 제목 가져오기
scrapy shell https://www.hanbit.co.kr/store/books/full_book_list.html

shell에서 response.body

response.css('#container tbody a::text').extract()

 

- 아나콘다는 아래 링크에서 각 OS별로 다운이 가능하다

https://www.anaconda.com/download/success

 

Download Now | Anaconda

Anaconda is the birthplace of Python data science. We are a movement of data scientists, data-driven enterprises, and open source communities.

www.anaconda.com

 

- 리눅스에서 아나콘다 설치할 때 참고 문서

https://docs.anaconda.com/anaconda/install/

 

Installing Anaconda Distribution — Anaconda documentation

Tip More of a visual learner? Sign in to Anaconda Cloud and watch the Installing Anaconda (Mac) video in our Get Started with Anaconda course. This video guides you through using the graphical installer in a quick two minutes. Caution The graphical install

docs.anaconda.com

 

1. 설치 파일 다운로드

- curl -O는 파일을 원본 이름 그대로 현재 디렉토리에 다운로드됩니다.

- curl -O 나 wget 둘 다 파일을 다운로드하는 명령어라 어느 걸 써도 무방하나 Anaconda 공식 문서에선 curl을 사용한 방법을 안내하고 있습니다.

- wget이 기본적으로 설치되지 않은 시스템도 있어 curl을 선호하는 편입니다.

- ubuntu는 debian 계열이고, centos 는 redhat 계열임을 참고해서 설치합니다.

curl -O https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh

또는 

wget -O https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh

 

2. 다운로드된 설치 스크립트 실행

1) 라이선스 동의

- 명령어를 실행하면 끊이지 않는 Enter의 향연이 펼쳐집니다.

bash Anaconda3-2024.10-1-Linux-x86_64.sh

- 라이선스 관련내용이므로 읽고 싶으면 읽고 아니라면 계속 enter를 누르고 있으면, 마지막에  yes/No을 입력하는 칸이 나옵니다.

- enter만 치고 넘어가면 계속 나오니 라이선스에서 enter를 누르고 있다가 놓칠까봐 걱정할 염려는 없습니다.

 

2) 설치 경로 설정

- 기본 경로로 [home/사용자명/anaconda3]를 사용하려면 enter, 아니라면 원하는 경로를 입력하고 enter를 입력합니다.

 

* 경로 입력 시 주의할 점

- " Cannot install into directories with spaces" 라는 오류메시지는 설치 경로에 공백이 포함된 경우입니다.

- 아나콘다는 공백이 있는 디렉토리에는 설치되지 않기 때문에 이 경우에 삭제 후 다시 설치를 진행해야 합니다.

- 즉, 라이선스 엔터 지옥을 두 번이나 맛봐야 한다는 말이니 주의해야 합니다.

i) 기존 설치 파일 삭제

rm -rf ~/anaconda3

ii)  설치 스크립트 실행

- 반드시 공백 없는 경로 또는 기본값 사용

bash Anaconda3-2024.10-1-Linux-x86_64.sh

 

- 설치가 끝나면서 "Do you wish to update your shell profile to automatically initialize conda?"라는 질문이 나옵니다.

- conda를 초기화해서 shell프로필에 자동으로 추가할지 여부를 묻는 질문입니다.

- yes를 선택하면 conda가 기본 쉘 프로필(예: ~/.bashrc)에 설정되어, 터미널을 열 때마다 conda base 환경이 자동으로 활성화됩니다.

- No를 선택하면 Conda는 초기화되지 않고 기본 설정에 추가되지 않습니다. 즉, 필요할 때마다 conda 명령어를 사용할 수 있지만 base 환경은 자동으로 활성화되지 않습니다.

 

- Anaconda 자동 활성화 비활성화 방법 : 위에 yes를 한 경우 다시 비활성화하고 싶을 때

conda config --set auto_activate_base false

 

3. 환경 설정 적용

- 설치 완료 후 다음 명령어를 입력하여 bashrc에 추가된 설정을 적용합니다.

source ~/.bashrc

 

4. 설치 확인

conda --version

 

 

** Ubuntu 20.04.6 기준으로 작성되었습니다.

 

1. 우분투 시스템 패키지 업데이트 

- 패키지를 최신 상태로 업데이트합니다.

 

sudo apt-get update

 

2. 필수 패키지 설치

sudo apt-get install ca-certificates curl gnupg lsb-release

 

3. Docker 공식 GPG 키 추가

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

 

4. Docker 저장소 추가

- Docker의 공식 저장소를 우분투의 APT 소스 목록에 추가하여 저장소에서 최신 Docker 패키지를 검색할 수 있게 됩니다.

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

 

- 저장소가 잘 추가되었는지 확인

cat /etc/apt/sources.list.d/docker.list

 

5. 패키지 목록 업데이트

- 도커 저장소가 추가되었으므로 패키지 목록을 업데이트합니다.

sudo apt-get update

 

6. Docker 설치

- Docker와 관련된 필수 컴포넌트를 설치

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

 

7. 설치 확인

- 정상적으로 버전 정보가 출력되면 설치가 성공

sudo docker --version

 

8. Docker 서비스 시작

1) 서비스 상태 확인

sudo systemctl status docker

2) 실행중이 아닌 경우 서비스 시작

sudo systemctl start docker

3) (선택) 부팅 시 자동 시작 설정

sudo systemctl enable docker

 

9. 테스트 실행

- Docker가 정상적으로 작동하는지 테스트

sudo docker run hello-world

 

* (선택) Docker를 비루트 사용자로 실행

- Docker 명령어를 sudo 없이 사용하기

1) 매번 sudo를 입력하지 않도록 현재 사용자를 Docker 그룹에 추가

sudo usermod -aG docker $USER

2) 변경사항 적용

newgrp docker

 

10. Docker 기본 명령어

1) 이미지 목록 확인

docker images

2) 실행중인 컨테이너 확인

docker ps

3) 모든 컨테이너 확인

docker ps -a

 

11. 테스트한 Docker 컨테이너 및 이미지 삭제

1) 컨테이너 삭제

- 컨테이너 ID(고유 식별자)/이름는 컨테이너 생성 시 자동 부여

- docker ps로 확인

docker rm 컨테이너ID

또는 

docker rm 컨테이너이름

2) 이미지 삭제

docker rmi hello-world

3) 삭제 완료되었는지 이미지 확인

docker images

 

 

++ 도커 상태 확인 방법 ++

- 도커 서비스가 실행 중인지 여부 : active (running)이면 실행 중

- 마지막으로 실행된 시간, 문제가 있는 경우 에러 로그도 확인 가능하다.

service docker status

 

++ 도커 서비스 시작/ 중지 ++

1. 도커 서비스 시작

service docker start

2. 도커 서비스 중지

service docker stop

3. 도커 서비스 재시작

service docker restart

4. 전체 시스템에서 동작 중인 서비스 확인

service --status-all

 

+++ 도커 컴포즈 설치 방법 +++

1.  최신 Docker Compose 다운로드( v2.32.1 )

도커 최신버전 확인 : https://github.com/docker/compose/releases

 

Releases · docker/compose

Define and run multi-container applications with Docker - docker/compose

github.com

sudo curl -L "https://github.com/docker/compose/releases/download/v2.32.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 

2. 다운로드한 Docker Compose에 실행 권한 부여

sudo chmod +x /usr/local/bin/docker-compose

 

3. 버전 확인

docker-compose --version

 

 

 

 

코딩을 배우기 시작한 지 얼마 안 됐다면 오류가 발생할 때마다 당황하게 된다.

분명 이전에 했을 땐 됐는데 똑같이 했는데 왜 안되지 하면서.

이번에 발생했던 오류는 코드 문제는 아닌 것 같은데 실행이 안되는 오류였다.

아니, 정확하게는 실행이 되긴 되는데 자꾸 이전에 실행했던 코드가 실행되는 것이다.

먼저 실행창의 terminated라고 돼있는 빨간색 네모 버튼을 눌러도 안된다면 아래와 같이 해보자!

상단의 window - preferences로 들어가서,

 

 

Run/Debug - Launching으로 들어가 아래와 같이 똑같이 체크해주고 적용을 누르고 실행해보니 해결이 된다.

특히 Launch Operation에서

Launch the selected resource or active editor. If not launchable : Launch the associated project

가 체크돼있는지 확인하고 Apply 클릭!

이전에는 Launch the previously launched application에 체크돼있었다.

이러니까 자꾸 이전에 실행됐던 게 실행되었던 것이다.

 

 

+ Recent posts