DeepLearning 공부 내용을 GitHub로 관리하려다 보면 매번 수식 입력 부분 때문에 고생을 했었다.

GitHub의 MarkDown에서 기본적으로 수식 입력을 지원하지 않았기 때문이다.

 

그래서 보통은 Online Latex Equation Editor 사이트 등을 통해 수식 작성 후

이미지 파일로 다운로드 받아서 MarkDown에 입력하는 방법을 사용하곤 했다.

 

  - http://www.sciweavers.org/free-online-latex-equation-editor

 

 

수식을 깔끔하게 표현을 할 수는 있지만, 너무나 불편한 방식이다.

수식을 수정하려고 하면 다시 사이트에 가서 작성한 다음에 이미지로 만들고 업로드 하고...

 

그러던 중 반가운 소식이 들려왔다.

 

  - https://github.blog/2022-05-19-math-support-in-markdown/

 

 

우와~ MarkDown에서 수식 입력을 지원하다니 !!!

 

지원해주는 형식은 code block 방식과 inline 방식의 2가지 이다.

 

  - code block: 가운데 정렬로 수식만 단독으로 출력

  - inline: 텍스트 중간에 수식을 표현

 

수식 입력을 위해 사용되는 문법은 기본적으로는 Tex이다.

Tex를 사용하기 편하게 만든 매크로가 LaTex이기에 기본적으로 Tex 문법을 사용한다.

 

  - https://ko.wikipedia.org/wiki/위키백과:TeX_문법 

 

 

실제로 잘 되는지 살펴보자.

 

inline 방식으로 사용하려면 `$` 사이에 수식을 정의하면 되고,

code block 방식으로 사용하려면 `$$` 사이에 수식을 정의하면 된다.

 

 

이렇게 적어주면 아래와 같이 깔끔하게 잘 나오게 된다.

 

 

GitHub MarkDown에서 LaTex를 랜더링하기 위해 JavaScript 기반의 MathJax라는 오픈소스 프로젝트를 활용하고 있다.

그래서 아래와 같은 마우스 오른쪽 버튼 메뉴를 활용할 수도 있다.

 

 

 

보다 깔끔하고 편리하게 수식을 입력하고 활용할 수 있게 된 GitHub를 더 많이 사랑해줘야겠다.

 

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Meta의 Git 지원 버전관리 도구 Sapling 공개  (0) 2022.11.25
git 실수해도 괜찮아요  (0) 2022.07.02
Universe 2021 & GitHub Actions  (0) 2022.01.18
github.dev (Web-IDE)  (1) 2021.11.03
git switch/restore (git 새로운 명령어)  (1) 2021.10.17

 

cover

 

AWS에서 제공해주는 AI 서비스들을 어떻게 사용하는지

실제 시스템들을 구현해나가며 다양한 그림들과 코드들을 통해 친절히 설명해주는 책이다.

 

publish

 

이 책은 22년 4월에 출간한 따끈따끈한 책이지만, 원서를 찾아보니 2020년에 출시 된 책을 번역한 것이었다.

  - https://www.manning.com/books/ai-as-a-service

 

번역하면서 그동안 변경된 인터페이스들은 다시 스크린샷 뜨고 예제 코드도 손봤다고 하니

원서 출간일이 좀 되었다고 해서 걱정할 필요는 없을 것 같다.

 

reader

 

보면 알겠지만, 초보자를 위한 책은 아니다.

그리고 프론트엔드 개발자가 아닌 백엔드에 치우친 내용을 다루고 있는 책이다.

 

roadmap-1

 

roadmap-2

 

크게 3부분으로 나뉘어져 있으며

1부는 그냥 알면 좋을 내용들을 살짝 터치하면서 지나가는 내용이고

2부가 본격적인 내용들이고

3부는 앞에서 공부한 것들을 정리하는 느낌의 내용이다.

 

결론은 2부가 핵심!

 

Why

 

근본적인 질문인데,

왜 AWS AI 서비스를 가지고 이 책을 만들었는지에 대한 대답인데,

결론은 3대 Cloud 다 하면 좋았겠지만, 힘들까봐 가장 많은 사용자를 갖고 있는 AWS를 선택했다는.

 

AWS AI as a Service

 

AWS에서 제공해주는 AIaaS 플랫폼들을 보여주고 있는데,

사실 AI 관련된 것 뿐만 아니라

AI 서비스를 위한 시스템을 구축하기 위해서 필요로 하는 것들을 모두 보여주고 있는 것이 맞다.

 

AWS AI as a Service - color

 

이 책에서 아쉬운 점인데 (개인적인 취향이 많이 섞인)

manning에서 제공해주는 ebook을 보면 위 이미지와 같이 color로 나오는데, 보기에 훨씬 좋다.

이 책은 흑백이라서 좀 아쉽다.

 

grey

 

color

 

책에서 중요한 내용은 아니지만,

이런 사진들을 볼 때 흑백과 컬러의 차이는 극명하지 않나 싶다.

 

system

 

책에서 풀어가는 방식은 위와 같이

앞 부분에서 어떤 시스템을 만들고자 한다는 것을 설명해주고 시작한다.

 

arch

 

그리고 시스템 아키텍처를 보기 좋게 그림으로 표현해주어서

어떻게 구성이 되고 지금 어떤 것을 공부할 것인지 알 수 있는 점은 정말 좋은 것 같다.

 

 

총평을 하자면,

클라우드에서 제공해주는 다양한 서비스들, 특히 서버리스 서비스들을 활용해서

AI 서비스들을 어떻게 구성할 것인지 공부하고자 하는 분들에게는 정말 많은 도움이 될 것 같다.

어떤 신규 프로젝트를 진행할 때 프로토타입 또는 MVP를 만들어야 할 때에도 정말 좋을 것으로 생각된다.

 

주석이 충분하지는 않지만 제공되는 예제 파일도 있다.

  - https://github.com/hanbit/ai-as-a-service

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

반응형

 

제목 그대로

사용자 친화적인 케라스(Keras)로 딥러닝(Deep Learning)을 공부할 수 있는 책이다.

 

책표지

 

4월에 출간된 따끈따끈한 책이다.

 

발행일

 

책을 볼 때에는 새하얀 종이에 컬러풀한 인쇄로 보기에 아주 좋은데,

조명 아래에서 책 사진을 찍었더니 아래처럼 빛 반사가 좀 있다(사실 책 볼 때에도 조명 반사가 좀...).

 

구성 1

 

정말 친절하게도 책의 구성에 대해서 서술형으로 설명을 해주고 있다.

 

책의 목차만 가지고 전체적인 흐름을 파악하거나 각 챕터에 대해서 이해를 하기에는 어려울 때가 있는데

이렇게 친절하게 책의 구성에 대해서 이야기 해주는 것처럼 설명이 있어서 정말 좋았다. 

 

구성 2

 

책이 쉬운 것 같으면서도 어려운데,

신경망(Neural Network)의 전체적인 내용을 책 한 권에 모두 담고 있다보니 뒷부분은 사실 좀 어려웠다.

 

(사실 내가 딥러닝에 대해 깊이 알지 못하고 앞부분만 알고 있다보니 뒷부분이 마냥 어렵게 느껴졌을 것이다!)

 

신경망

 

처음에 책을 접했을 때 좀 당황했던 것이 "ANN"이라는 용어였다.

 

ANN (Artificial Neural Network, 인공신경망) 이라는 명칭은 보통

생물학적인 신경망, 즉 Neuron(뉴런)에서 영감을 얻어 발발된 통계학적인 학습 알고리즘을 지칭하는

일반적인 용어로 알고 있었다.

 

그런데, 이 책에서는 SNN(Shallow Neural Network, 얕은 신경망), 2-layer Neural Network,

또는 그냥 NN(Neural Network)이라고 부르는 제일 단순한 NN을 지칭하는 용어로 ANN을 사용하고 있다.

 

물론, 이런 내용은 책에서 잘 설명해주고 있다.

 

그리고 이론적인 내용도 너무나 잘 설명해주고 있다.

 

ANN

 

책에서 기대하는 대상 독자는 광범위 하다.

Deep Learning을 공부하는 모두가 대상 독자이다.

 

대상 독자

 

예제 소스 코드도 너무나 잘 제공해주고 있다.

 

   - https://github.com/jskDr/keraspp_2022

 

GitHub

 

책을 살펴본 개인적인 의견으로 말하자면,

이 책은 Deep Learning을 공부하면서 직접 코드로 구현을 어떻게 하는지 살펴보고 싶은 초급자에게 적합할 것 같다.

 

책도 그렇고, 제공해주는 예제 소스도 보면

옆에서 강사님이 친절하게 설명해주는 느낌처럼 쓰여져 있다.

 

이 부분이 어떤 용도인지 왜 그렇게 되는 것인지 설명해주듯이 쓰여져 있어서

혼자서 공부하기에 적합한 것 같다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

반응형

내 M1 맥북을 개발용 장비로 자리잡도록 하기 위해 GPU 사용하는 Tensorflow 실행환경을 맞추고 싶어서 해봤다.

 

 

1. Xcode Command Line Tools 설치

  - 이미 Xcode를 설치했더니 에러 메시지가 나온다.

  - 기존에 Xcode를 설치하지 않은 분들은 "명령어 라인 개발자 도구"를 설치할 것이냐고 묻는 창이 나온다.

$ xcode-select --install

xcode-select: error: command line tools are already installed, use "Software Update" to install updates


$ xcode-select --version

xcode-select version 2395.

 

 

2. Miniforge3 설치

  - M1 맥북에서는 Anaconda 설치가 안되기에 Miniforge3를 설치하고자 한다.

  - https://github.com/conda-forge/miniforge

$ cd ~/Downloads

$ wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh

# wget 명령어가 안되면 `brew install wget` 실행
# 또는 그냥 Chrome에서 다운로드 받아도 됨

$ sh Miniforge3-MacOSX-arm64.sh

# 중간에 계속 `yes` 해주면 됨

$ conda info

 

  - 터미널(또는 iTerm2)를 재시작하면 커서 앞 부분에 `(base)`를 볼 수 있을 것이다.

 

[참고 #1] 쉘 실행할 때 자동으로 conda가 활성화 되는 것이 싫을 때에는 다음과 같이 설정하면 된다고 한다.

$ conda config --set auto_activate_base false

 

[참고 #2] 현재 conda env 목록을 확인하거나 실행중인 env를 끄고 싶을 때에는 다음과 같이 하면 된다.

$ conda env list

$ conda deactivate {envname}

 

 

3. 가상환경 만들기

  - 각자 원하는 경로를 준비한 뒤, 가상환경을 생성하면 된다.

$ cd ~/workspace
$ mkdir tensorflow
$ cd tensorflow

$ conda create -n tensorflow python=3.9

$ conda activate tensorflow

 

 

 

4. TensorFlow dependencies 설치

$ conda install -c apple tensorflow-deps

 

 

5. TensorFlow 설치

$ python -m pip install tensorflow-macos

 

 

6. TensorFlow-Metal (GPU framework) 설치

$ python -m pip install tensorflow-metal

 

 

7. TensorFlow 버전 확인

$ python

>>> import tensorflow
>>> tensorflow.__version__
'2.8.0'

 

 

8. Test

$ nano ./test.py
import tensorflow as tf

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)

model.evaluate(x_test,  y_test, verbose=2)
❯ python test.py

Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
11493376/11490434 [==============================] - 3s 0us/step
11501568/11490434 [==============================] - 3s 0us/step
Metal device set to: Apple M1

systemMemory: 8.00 GB
maxCacheSize: 2.67 GB

2022-04-05 00:17:23.938189: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:305] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support.
2022-04-05 00:17:23.938287: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:271] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 0 MB memory) -> physical PluggableDevice (device: 0, name: METAL, pci bus id: <undefined>)
2022-04-05 00:17:24.494088: W tensorflow/core/platform/profile_utils/cpu_utils.cc:128] Failed to get CPU frequency: 0 Hz
Epoch 1/5
2022-04-05 00:17:24.640534: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:113] Plugin optimizer for device_type GPU is enabled.
1875/1875 [==============================] - 10s 4ms/step - loss: 0.2934 - accuracy: 0.9150
Epoch 2/5
1875/1875 [==============================] - 8s 4ms/step - loss: 0.1379 - accuracy: 0.9586
Epoch 3/5
1875/1875 [==============================] - 8s 4ms/step - loss: 0.1019 - accuracy: 0.9693
Epoch 4/5
1875/1875 [==============================] - 8s 4ms/step - loss: 0.0832 - accuracy: 0.9739
Epoch 5/5
1875/1875 [==============================] - 8s 4ms/step - loss: 0.0715 - accuracy: 0.9780
2022-04-05 00:18:05.571816: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:113] Plugin optimizer for device_type GPU is enabled.
313/313 - 1s - loss: 0.0806 - accuracy: 0.9743 - 985ms/epoch - 3ms/step

 

  - 뭔가 에러 메시지가 나와서 예쁘지는 않는데...  GPU는 사용하고 있다.

GPU

반응형

 

사이킷런 핵심 개발자가 쓴 머신러닝과 데이터 과학 실무서

Introduction to Machine Learning with Python

파이썬 라이브러리를 활용한 머신러닝 (번역개정2판)

 

표지

 

C / C++ / Java 등의 프로그래밍 언어를 공부하고

Linux, Server, Network 등에 대해서 경험을 쌓아오며 지금까지 밥벌이를 해온 나에게

머신러닝 / 딥러닝 이라는 신문물이 등장하면서 상당한 당혹감을 느낄 수 밖에 없었다.

 

그래서 먹고 살기 위해 머신러닝에 대해 공부를 시작할 수 밖에 없었는데,

벡터, 행렬, 접선, 미분 ... 나를 괴롭히는 수학 !

이과생이지만 사실 수포자인 나에게 정말 가혹한 현실이 아닐 수 없다.

 

지금까지 Software Engineer로 먹고살아온 나로써는

이러한 수학적인 접근 보다는

라이브러리를 이용한 활용 중심으로도 접근해보고 싶다는 생각이 있었다.

 

이에 걸맞는 책이 바로 이 책이 아닐가 싶다.

 

번역개정2판 1쇄

 

나와 같은 Needs가 있는 사람이 적지 않았던 것 같다.

2017년 초판에 이어 개정판을 한 번도 아니고 두 번째나 발행 한 것을 보면 말이다.

 

번역개정2판 특징

 

그런데, 개정을 해주는 것만으로도 감지덕지인데, 그냥 그저 그런 수정판이 아니다.

scikit-learn 1.x 버전에 맞춰 업데이트 된 것 뿐만 아니라 내용도 더 추가가 되었다.

 

구성

 

오래된 이미 검증된 책이라 그런지

책의 전체적인 구성도 너무나 잘 요약해서 설명해주고 있다.

 

저자 인터뷰

 

한국어판을 위한 저자 인터뷰도 실려있다.

형식적인 인터뷰가 아니라 독자들의 질문에 대한 답까지 포함된

저자의 솔직한 심경도 그대로 담겨진 그런 인터뷰다.

 

한국어판 부록

 

목차를 보면 한국어판에서 추가된 항목을 볼 수 있다.

Chapter 한 개당 하나 정도씩 추가 되어 있고, 그 내용도 정말 충실하다.

 

술술

 

개조식 서술 방식이 아니라 이야기 하는 방식으로 풀어나가는 책 내용도 정말 마음에 든다.

말 그대로 술술 읽어나가며 공부할 수 있기에 책에 대한 부담감이 훨씬 적게 느껴지기 때문이다.

 

 

그리고 이 책의 가장 큰 장점 중 하나라고 꼽고 싶은 예제 파일 !!!

  - https://github.com/rickiepark/intro_ml_with_python_2nd_revised

 

옮긴이 박해선님이 훨씬 더 좋게 업그레이드 해준 내용을 담고 있다.

 

 

최근 딥러닝의 인기에 조금 버림받은 것 같은 느낌이 들긴하지만

사실 대부분의 문제는

scikit-learn으로 구현되는 머신러닝으로 해결하는 것이 훨씬 더 효율적이지 않을까 한다.

 

머신러닝 또한 수학적인 배경을 갖고 깊이 공부하는 것이 중요하긴 하지만

활용을 중심으로 scikit-learn 라이브러리 활용에 대해 공부하는 것도 괜찮은 접근일 것이다.

 

 

요즘 공부할 것이 너무 많아 걱정이긴 하지만

꼭 공부해야할 책 목록에 이 책을 꼭 포함시킬 것이다 !!!

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

반응형

 

보통 개발 단계에서는

Superuser 권한을 갖고 있는 계정으로 database를 사용하곤 한다. (나만 그런가?)

 

당연히 그 누구도 추천하지 않는, 바람직하지 않은 계정 사용법이다.

 

그러면 적절한 권한을 갖고 있는 개발용 계정을 생성해서 사용해야하고

그래서 지금은 계정 생성 및 삭제, 권한 부여 방법 등에 대해서 살펴볼 시간이다.

 

 

0. Environment

  - [PostgreSQL을 Docker로 설치하자](https://www.whatwant.com/entry/PostgreSQL-Docker)

 

 

1. psql

  - docker 환경에 특화된 내역이긴 하지만, 기록 차원에서 남긴다.

 

❯ docker exec -it postgres /bin/bash

root@d0b1fa1bb2b1:/# psql -U postgres

psql (14.2 (Debian 14.2-1.pgdg110+1))
Type "help" for help.

postgres=# 

 

 

2. 계정 및 권한 확인

  - `\du`

 

postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

 

 

3. 계정 생성

  - `CREATE USER [username] WITH LOGIN PASSWORD '[password]';`

 

postgres=# CREATE USER whatwant WITH LOGIN PASSWORD 'xxxxxxxx';

CREATE ROLE


postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 whatwant  |                                                            | {}

 

 

  ▶ Attributes of ROLE

     - 기본값은 `NO-` 속성들이다.

 

SUPERUSER or NOSUPERUSER SUPERUSER 여부
CREATEDB or NOCREATEDB DATABASE를 만들 수 있는 권한
CREATEROLE or NOCREATEROLE ROLE을 만들 수 있는 권한
LOGIN or NOLOGIN LOGIN 허용 여부
INHERIT or NOINHERIT 상속 가능 여부
REPLICATION or NOREPLICATION 복제 권한
BYPASSRLS or NOBYPASSRLS RLS(Row-Level Security) 무시 여부
PASSWORD [password] 패스워드
 VALID UNTIL [timestamp] 패스워드의 유효기간
IN ROLE [role_name] or IN GROUP [role_name] 지정한 ROLE의 구성원으로 포함
ROLE [role_name] or GROUP [role_name] 지정한 ROLE 부여
ADMIN [role_name] 윗 줄의 ROLE 속성 + WITH ADMIN

 

 

4. 권한 부여

  - DATABASE를 하나 생성하고 그에 따른 권한을 부여해보자

 

postgres=# CREATE DATABASE my_db WITH OWNER whatwant ENCODING 'UTF8';

CREATE DATABASE



postgres=# GRANT ALL PRIVILEGES ON DATABASE my_db TO whatwant;
GRANT

 

  ▶ Permission

     - 잘 모르는 내용도 있지만, 일단 리스트업 해본다.

 

SELECT 데이터 조회. UPDATE/DELETE 하려면 포함 필요
INSERT 데이터 추가
UPDATE 데이터 수정
DELETE 데이터 삭제
TRUNCATE 데이터 모두 삭제
REFERENCES 외래키 제약 조건 생성
TRIGGER 트리거
CREATE 스키마 생성
CONNECT 데이터베이스 연결
TEMPORARY 임시 테이블 생성
EXECUTE 함수/프로시저 연산자 허용
USAGE 스키마 객체 접근 허용
ALL PRIVILEGES 모든 권한

 

 

 

pgAdmin4로 확인해보자.

 

 

여기까지...

 

반응형

 

PostgreSQL을 시스템에 직접 붙어서 `psql`을 이용해서 다루는 것도 좋지만,

개인적으로 Web Interface를 통해서 database의 현황을 살펴보는 것을 좋아하기에

PostgreSQL을 설치하고 난 다음에 바로 찾아본 것이 바로 `pgAdmin4`이다.

 

깔끔한 설치를 위해 Docker로 한 번 설치해봤다.

 

 

0. PostgreSQL 설치

  - [PostgreSQL을 Docker로 설치하자](https://www.whatwant.com/entry/PostgreSQL-Docker)

 

 

1. pgAdmin4 설치

  - 그냥 바로 실행하자.

  - email 주소와 password는 각자 취향에 다라 지정해주면 된다.

 

❯ sudo docker run -p 5050:80 -e 'PGADMIN_DEFAULT_EMAIL=abc@email.com' \
                        -e 'PGADMIN_DEFAULT_PASSWORD=password' -d dpage/pgadmin4

Unable to find image 'dpage/pgadmin4:latest' locally
latest: Pulling from dpage/pgadmin4
59bf1c3509f3: Pull complete 
6e9ec7ad2b67: Pull complete 
a0e18fcb2977: Pull complete 
fd2b27e2842d: Pull complete 
51136bc64bc0: Pull complete 
f64eecb587f3: Pull complete 
9cb5237d6528: Pull complete 
facb2de54b7c: Pull complete 
2c30d334d2ee: Pull complete 
27b8ff406ea1: Pull complete 
b87dab9776e7: Pull complete 
3e9a234b4839: Pull complete 
160949aa8885: Pull complete 
02526e9b4604: Pull complete 
Digest: sha256:3a2f4533b0e33baa09260ce02d0912058881c55cef800b73219e19b0a9d75658
Status: Downloaded newer image for dpage/pgadmin4:latest
4fb11f1a591ed35244b6db9045b844cae781ca3b59c54006b172805567dd1326

 

 

2. Connect

  - http://127.0.0.1:5050/

  - 실행할 때 입력한 email 주소와 password를 이용해서 로그인 하면 된다.

 

 

 

3. Add New Server

  - PostgreSQL 서버를 등록해주자.

 

 

  - name 하나 지어주고,

 

 

  - Connection 정보를 입력해주자.

  - `localhost`, `127.0.0.1`로 지정하면 연결이 안된다. IP 적어주자.

  - `Username`과 `Password` 제대로 입력하고 Save 하면 된다.

 

 

  - 이제 짠~

 

 

 

일단 여기까지~

 

반응형

 

개발을 하는 중에 PostgreSQL을 개발PC에 설치할 필요가 생겼는데

그냥 설치하기에는 개발PC가 지저분해질까봐 Docker를 이용해서 설치하려고 한다.

 

[ 개발PC 환경 ]

  - 운영체제: Ubuntu 18.04.6 LTS

  - docker: Docker version 20.10.12, build e91ed57

 

 

사실 포스팅을 굳이 해야할까 싶을 정도로 너무 간단하게 설치가 된다.

 

 

1. Docker Volume 생성

  - 데이터를 조금이라도 안전하게 보관하기 위해서 별도 volume으로 관리하자.

  - 실제 저장 위치도 확인해 볼 수 있다.

 

❯ docker volume create postgres_data

postgres_data


❯ sudo ls -al /var/lib/docker/volumes/

합계 40
drwx-----x  4 root root  4096  3월 21 21:14 .
drwx--x--- 13 root root  4096  3월 21 20:12 ..
brw-------  1 root root  8, 1  3월 21 20:12 backingFsBlockDev
-rw-------  1 root root 32768  3월 21 21:14 metadata.db
drwx-----x  3 root root  4096  2월 13 03:22 portainer_data
drwx-----x  3 root root  4096  3월 21 21:14 postgres_data

 

 

2. run PostgreSQL

  - 실행은 한 줄이면 된다 ^^

  - password는 각자 취향에 맞게 작성하면 된다.

 

❯ docker run -d -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=password \
                 -v postgres_data:/var/lib/postgresql/data postgres

Unable to find image 'postgres:latest' locally
latest: Pulling from library/postgres
ae13dd578326: Pull complete 
723e40c35aaf: Pull complete 
bf97ae6a09b4: Pull complete 
2c965b3c8cbd: Pull complete 
c3cefa46a015: Pull complete 
64a7315fc25c: Pull complete 
b9846b279f7d: Pull complete 
ed988fb8e7d9: Pull complete 
ed4bb4fd8bb5: Pull complete 
ead27f1733c8: Pull complete 
7d493bacd383: Pull complete 
0920535e8417: Pull complete 
db76d5bdbf2c: Pull complete 
Digest: sha256:d1db54eade17ebfaa6cfdca90c83f8cb0d54bcceb1270a0848e0b216d50c325c
Status: Downloaded newer image for postgres:latest
d0b1fa1bb2b1b580e96e1790b6f7bebfcfdc88c885c35e1af57d82379e5df7b7

 

 

3. psql

  - 이대로 끝내면 서운하니까 psql 까지만 접속해보자.

 

❯ docker exec -it postgres /bin/bash

root@d0b1fa1bb2b1:/# psql -U postgres

psql (14.2 (Debian 14.2-1.pgdg110+1))
Type "help" for help.

postgres=# 

 

 

 

여기까지~

반응형

+ Recent posts