티스토리 뷰
1. 도커?
>>인프라 : 개발환경 구축
도커는 간단히 말하면
리눅스기반의 가상환경을 만들어주는데 이를 컨테이너라고 한다.
여기에 프로그램들(파이썬, open CV, postgeSQL ...)을 설치하고 프로그램 환경을 다 만들어 놓으면
Image 로 굳혀서 다른 팀원에게 똑같은 환경을 배포해 줄 수 있는 장점이있다.
2. 그러면 환경을 불러와보자
1. Doker Hub 에서 Image를 검색하고 다운 받을 코드를 볼수 있다.
> 남이 만들어 놓은 것.
(여기서 Doker Hub는 깃허브처럼 공개된 공간, 자신의 계정 Repository 비공개적으로 격리된 저장소)
(둘다를 아우르는 단어는 Doker Registry)
Docker Hub Container Image Library | App Containerization
We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy
hub.docker.com
2. Doker File
> 내가 수정하여 설치 가능한 것.: 이미지 생성 출발점, 명령어를 작성하여 이미지를 구성할수 있다.
>>>>postgreSQL 도커파일 만들기
(DB랑 연결하는 거 이전의 글 참고)
https://ing-min.tistory.com/45?category=1055583
Docker_postgre 컨테이너 만들어보기 실습
windows powerShell > 우분투 rm -f 강제삭제 rmi 이미지 삭제 ***경로로 이동 cd ***Dockerfile FROM postgres RUN apt-get update RUN apt-get install -y vim RUN apt-get install -y locales RUN sed -i 's/^..
ing-min.tistory.com
1. 도커파일을 만든다.
FROM postgres
RUN apt-get update
RUN apt-get install -y vim
RUN apt-get install -y locales
RUN sed -i 's/^# \(ko_KR.UTF-8\)/\1/' /etc/locale.gen
RUN localedef -f UTF-8 -i ko_KR ko_KR.UTF-8
ENV LC_ALL ko_KR.UTF-8
2. 도커 필드 명령어로 이미지를 생성한다. Build
: 도커 파일을 기반으로 이미지를 생성하는 것을 build라고 한다.
docker build [옵션] Dockerfile 경로
. 경로는 여기에 라는 표시 (*빼먹으면 안 된다.)
-t 옵션은 도커 허브 로그인 id / 이미지이름:1.0 을 지정해줄 수있다. :1.0은 버전
3. RUN : 컨테이너 실행 및 확인 : 볼륨 마운트(-v) 컨테이너 만들기
docker run -dit -p 5434:5432 -v "폴더절대경로\db:/var/lib/postgresql/data" -e POSTGRES_PASSWORD=postgres --name pgv <이미지 이름>
postgres 를 도커에 올리게 되면 자체 볼륨이 생성된다 : 그 경로가 /var/lib/postgresql/data 이것이다.
그래서 자신이 만든 도커(폴더 절대경로)와 포스트그레SQL 볼륨 경로를 맵핑해주는 것이다 !
: 제대로 만들어졌다면, 경로의 db 폴더가 생겼을 것이다. 확인해보자
: -v 명령어는 아래 그림과 같은 개념이라고 생각하면 된다.
호스트 폴더와, 컨테이너 폴더를 연결시키는 역할이다.
무조건 host 기준이고, 만약 -v 옵션이 적용된 시점에 호스트에 폴더가 없다면, 해당경로의 컨테이너의 폴더를 복사한다.
만약에 host에 폴더가 있다면, host 폴더 기준으로 컨테이너한테 맵핑한다.
예를 들어서, -v 태그로 맵핑할 컨테이너 경로에 파일이 들어있는데, host에는 파일이 없는 경로를 맵핑하게 되면, host 기준으로 해당 컨테이너 경로의 파일들은 모두 날아가게 된다.
참고로, postgres 컨테이너의 /var/lib/postgresql/data는 db서버 데이터 이기 때문에, 컨테이너를 날려도, 볼륨을 host에 맵핑해놨기 때문에, 데이터가 안날아간다.
백업할때, 자주 쓰이는 방식이고, 다른 사람과 공유하기도 쉽다.
https://devlog.jwgo.kr/2020/12/16/postgres-persist-volume-problem-with-docker/
도커(Docker)에서 컨테이너 삭제 시, Postgresql의 볼륨이 유지되지 않고 삭제되는 경우 문제와 해결
사이트 운영에 도움을 주실 수 있습니다. 고맙습니다. --> 도커(Docker)에서 컨테이너 삭제 시, Postgresql의 볼륨이 유지되지 않고 삭제되는 경우 문제와 해결방법 2020년 12월 16일 문제 도커에서 Postgre
devlog.jwgo.kr
> docker images
도커 이미지 확인
>docker run -td --name devops
생성한 이미지를 실행해야 도커파일에 지정된 대로 컨테이너 이미지가 생성된다.
>>>명령어
docker login : 도커 로그인하기
docker images : 만들어진 이미지 보기
docker ps -a : 현재 실행중인 컨테이너 리스트
docker stop <컨테이너명> :만약 지우고자 하는 컨테이너가 아직 running중이라면 먼저 멈추기리스트에 있는 컨테이너 중 지우고 싶은 컨테이너 지우기
docker rm <컨테이너명> : 리스트에 있는 컨테이너 중 지우고 싶은 컨테이너 지우기
docker volume ls : 해당 목록을 볼수 있다. postgresql은 기본적으로 도커로 올리면 자체 볼륨을 생성
docker inspect 컨테이너ID : 컨테이너를 살펴보세요. --name으로 mydb라는 이름을 주었으므로 docker inspect mydb
Mounts라는 항목을 찾을 수 있는데
정상적으로 내가 설정한 볼륨이 마운팅 되었다면 여기에 내가 설정한 1개의 볼륨만 보여야 합니다.
3. Docker Commit / Push
: 자신이 만든 환경 이미지 만들고 자신의 도커 레포짓토리에 올리기
4. Docker Compose로 환경 전체 공유
일반적으로 Web 컨테이너, DB컨테이너 .. 복수의 컨테이너 구축해야 초기 개발환경이 완성된다.
처리가 어려우므로 여러 Docker 컨테이너를 한번에 처리할 수 있는 Docker Compose 사용.
<<도커 컴포즈 파일 만들기>>
> docker-compose.yaml
version: '3'
services:
# database build
database:
container_name: book_db
# 빌드될 dockerfile 위치
build:
context: ./database
# 만들어질 이미지파일 이름
image: book_db
# 연결될 DB 환경설정 값
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=meta_bookstore
volumes:
- ./database/db:/var/lib/postgresql/data
# - ./database/db/init.sql:/docker-entrypoint-initdb.d/create_tables.sql
ports:
- "5435:5432"
restart: always
# backend build
backend:
container_name: book_backend
depends_on:
- database
build:
context: ./backend
image: book_backend
volumes:
- ./backend:/usr/src/app
ports:
- "3000:3000"
environment:
- NODE_ENV=development
- PORT=3000
- LOGGER_LEVEL=debug
- DB_HOST=database
- DB_PORT=5432
- DB_DATABASE=meta_bookstore
- DB_ID=postgres
- DB_PASS=postgres
- DB_DIALECT=postgres
restart: always
command: "npm start"
# # frontend build
# frontend:
# container_name: book_frontend
# depends_on:
# - backend
# build: ./frontend/bookscanner-frontend
# image: book_frontend
# volumes:
# - ./frontend/bookscanner-frontend:/app
# ports:
# - "8080:8080"
# restart: always
# # MQTT server build
mqtt:
image: eclipse-mosquitto
hostname: mosquitto
restart: always
ports:
- "1883:1883"
- "8088:8088"
volumes:
- ./mqtt-simulator-main/mqtt/config/mqtt/config:/mosquitto/config
tty: true
stdin_open: true
networks:
- webnet
networks:
webnet:
: mqtt , backend, DB 세개의 컨테이너를 한번에
*도커파일 만들기는 다음 사이트 참고 :
[Docker] Docker File을 이용하여 Docker Image만들기
Docker File Docker File이란 Docker Image를 만들기 위한 설정 파일입니다. 여러가지 명령어를 토대로 Docker File을 작성하면 설정된 내용대로 Docker Image를 만들 수 있습니다. 이전 포스트에서도 설명했듯이
khj93.tistory.com
<<도커 컴포즈 업시키기>>
경로에서 터미널 열기하여
docker-compose up
DB 이름설정이 바르게 되어있어야한다.
도커 허브 윈도우에서 확인하기
>>readme
'DevOps > Docker' 카테고리의 다른 글
도커 _ AMD / Window 10 home 에서 Hyper-V 가상환경 설치 (0) | 2022.04.21 |
---|---|
Docker_postgre 컨테이너 만들어보기 실습 (0) | 2022.02.15 |
Docker_push (0) | 2022.02.12 |
Docker_Docker file & build (0) | 2022.02.11 |
Docker_commit (0) | 2022.02.11 |
- Total
- Today
- Yesterday
- opencv
- emotive eeg
- RNN
- 유니티
- Express
- DeepLeaning
- Midjourney
- MQTT
- ardity
- VR
- motor controll
- 후디니
- 유니티플러그인
- Python
- TouchDesigner
- oculuspro
- Java
- CNC
- imgtoimg
- sequelize
- unity 360
- Unity
- node.js
- three.js
- 라즈베리파이
- colab
- docker
- houdini
- AI
- Arduino
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |