docker 11

[Docker] docker compose 이용해서 node.js , redis 애플리케이션 띄우기

Node.js 환경에서 Redis사용법 redis-server를 작동 redis 모듈 다운 redis 모듈 다운 후 redis클라이언트 생성 redis.createCleint()함수를 이용해 클라이언트 생성 하지만 여기서 redis server가 작동하는 곳과 Node.js 앱이 작동하는 곳이 다른 곳이면 host인자와 port인자를 명시 ex) 예로 const client = redis.createClient({ host: "https://redis-server.com", port : 6379 }) 도커 환경에서 redis 클라이언트 생성시 주의사항 보통 도커를 사용하지 않는 환경에서는 redis서버가 작동되고 있는 곳의 host옵션을 URL로 위에 처럼 주면 되지만, 도커 Compose를 사용할 때는..

docker 2023.04.15

[Docker] Docker Volume(볼륨)을 이용해 빌드 없이 소스 코드 반영하기

COPY할 경우 소스코드 변경 할 때마다 이미지를 변경(빌드)해야 했습니다. Volume은 도커 컨테이너의 부분들이 로컬의 있는 부분을 반대 반향으로 참조(Mapping)하고 있습니다. Volume을 이용해 어플리케이션 실행하는 법 docker run -p 5000:8080 -v /usr/src/app/node_modules -v $(pwd):/usr/src/app -v /usr/src/app/node_modules 호스트 디렉토리(로컬 or EC2같은 컴퓨터)에 node_modules은 없기에 컨테이너에 매핑을 하지 말라고 하는 것 -v $(pwd):/usr/src/app pwd (현재 작업 중인 디렉토리. print working directory) 경로에 있는 디렉토리 혹은 파일을 /usr/src/..

docker 2023.04.14

[Docker] node.js 애플리케이션 도커로 만들기

빈 프로젝트에 yarn init (npm init하셔도 무방합니다) -> packge.json생성 server.js생성 후 간단한 GET요청 하는 express 프레임워크를 이용한 코드입니다. dockerfile에 위와 같이 작성해줍니다. FROM 하나의 Docker이미지는 base이미지부터 시작해서 기존 이미지 위에 새 이미지를 중첩해 여러 이미지 층을 쌓아가며 만들어집니다. node:14 -> node 12버전을 base 이미지로 사용한다는 뜻입니다. COPY 호스트 컴퓨터에 있는 디렉토리나 파일을 docker이미지의 파일 시스템으로 복사합니다. package.json과 server.js도 복사해줘야 오류가 안납니다. RUN 이미지 빌드 시 커맨드 실행 ex) pip install , npm inst..

docker 2023.04.13

[Docker] 도커 이미지 직접 만들기

도커 이미지를 항상 도커 hub에 있는 거를 가져와서 사용했는데 직접 도커 이미지를 만들어서 사용할 수 있고, 만든 도커 이미지를 도커 허브에 올려서 공유할 수 있습니다. (npm같은) 복습 - 도커 이미지는 컨테이너를 만들기 위해 필요한 설정/종속성들을 갖고 있는 소프르퉤어 패키지 - 도커 이미지는 도커 hub에 이미 만들어 놓은 것을 이용할 수 있고 , 직접 내가 만든 걸 도커 hub에 업로드해서 공유할 수 있습니다. 명령어 docker create 도커 이미지 생성 순서 Dockerfile작성 --> 도커 클라이언트 --> 도커 서버 --> 이미지 생성 - dockerfile : 도커 이미지 만들기 위한 설정 파일. 컨테이너가 어떻게 행동할 지에 대한 설정들을 정의합니다. - 도커 클라이언트 : d..

docker 2023.04.12

[Docker] Docker 실행 중인 컨테이너에서 터미널로 접근하기

실행 중인 (run) 컨테이너에 명령어를 전달 하려면 기존에는 docker exec -it 명령어 이렇게 하나씩 명령어를 모두 넣었는데 컨테이너 안에 shell이나 터미널 환경으로 접속하면 좋습니다. 마지막 명령어를 쉘 (예로 zsh, bash , powershell등이 있겠죠)를 넣어주면 됩니다. docker exec -it 컨테이너를 쉘 환경으로 접근 첫번째로 apline이미지로 컨테이너 하나 실행! docker run alpine ping localhost exec를 이용하고 마지막 명령어에 sh 입력 후 컨테이너 안에서 터미널 환경을 구축! docker exec -it sh 그 안에서 여러 터미널에서 할 수 있는 작동들을 해보기 ex) ls touch export hello=hi echo $hel..

docker 2023.04.12

[Docker] Docker 레디스(redis)로 띄우기

Redis 도커 환경에서 실행하기 redis서버와 redis클라이언트(redis-cli)가 필요합니다. redis 서버가 먼저 작동 (docker run redis) 서버 실행 후 redis 클라이언트 실행 후 명령어를 레디스 서버에 전달. 레디스 서버/ 레디스 클라이언트 둘 다 같은 컨테이너 안에서 실행 1. redis 서버 실행 docker run redis 2. 이미 실행 중인 컨테이너에 명령어 전달 시 exec를 쓴다고 했으니 redis서버가 실행 중인 컨테이너에 exec를 이용해 redis 클라이언트도 실행합니다 * -it 옵션은 interactive terminal로 -it없으면 redis-cli 키고 밖으로 다시 나와버림..... docker exec -it redis-cli

docker 2023.04.12

[Docker] Docker 정리 (4) - Docker 명령어들

기본적인 도커 클라이언트 명령어 도커 이미지 복습 docker run 도커 클라이언트 언급 도커 컨테이너 생성 및 실행 이 컨테이너를 위한 이미지 ex) docker run mysql 작동 순서 복습 도커 클라이언트에 명령어 입력 후 도커 서버로 보냅니다. 도커 서버에서 컨테이너를 위한 이미지가 이미 캐시되어 있는 지 확인합니다. 없으면 도커 허브에서 다운 받아오고, 있으면 이미 가지고 있는 이미지로 컨테이너 생성합니다. 명령어 docker run ls ls명령어로 현재 디렉토리의 파일리스트 보여줌 hello-world 이미지로는 ls명령어 사용 불능 Alpine 이미지 파일 스냅샷 안에 이미 ls 사용하게 하는 파일이 있는데 'docker run hello-world'는 excutable not fou..

docker 2023.04.10

[Docker] Docker 정리 (3) - 이미지로 컨테이너 만들기

도커 이미지는 응용프로그램을 실행하는 데 필요한 모든것을 포함 필요한 것 컨테이너 시작 시 실행되는 명령어 run kakaotalk 파일 스냅샷 컨테이너에서 카톡을 실행하고 싶다면 카카오톡 파일(카카오톡 실행하는 데 필요한 파일) 스냅샷 이미지로 컨테이너 만드는 순서 Docker클라이언트에 docker run 입력해줍니다. 도커 이미지에 있는 파일 스냅샷을 컨테이너 하드디스크에 옮겨줍니다. 이미지에서 가지고 있는 명령어 (컨테이너가 실행될 때 사용될 명령어)를 이용해 kakaotalk을 실행 시켜줌 이미지의 스냅샷과 명령어(run kakaotalk)으로 컨테이너를 만들고 컨테이너 안에서 프로그램(kakaotalk)을 실행합니다 컨테이너를 '격리' 시킬 수 있는 이유는 리눅스의 CGroup과 네임스페이스를..

docker 2023.04.08

[Docker] Docker 정리 (2) - Docker와 기존 가상화 기술 차이

도커와 기존 가상화 기술과 차이를 통해 컨테이너 이해 가상화 기술 나오기 전 한 대의 서버를 하나의 용도로만 사용 남는 서버 공간은 그대로 방치됨 하나의 서버에 하나의 OS, 하나의 프로그램만을 운영... 안정적이지만 But 비효율적 하이퍼 바이저 기반의 '가상화' 출현 논리적으로 공간을 분할해 '가상머신(VM)'이라는 독립적인 가상 환경의 서버 이용 가능 하이퍼 바이저는 호스트시스템(윈도우, 리눅스 등등이 될 수 있죠)에서 여러 개의 게스트OS를 구동할 수 있게 해주는 개꿀 소프트웨어입니다. 그리고 하드웨어를 가상화하며 하드웨어와 각 VM을 모니터링하는 중간 관리자입니다. 하이퍼바이저와 도커 하이퍼바이저와 도커는 가상화 기술을 이용해서 컴퓨터 시스템의 자원을 효율적으로 사용할 수 있도록 도와주는 기술입..

docker 2023.04.08

docker로 Mysql Import , Export

- 가동 중인 docker 컨테이너 Id확인 > docker ps Export - mysqldump 명령어로 dump뜨기 workbench의 server > Data Export하면 sql로 생성해줘서 편리하다 docker exec -it 컨테이너ID sh # 도커 컨테이너에 접속해서 mysqldump -h127.0.0.1 -p비번 데이타베이스명 테이블명 > /tmp/테이블명.sql # Export를 실행하고 ls -al /tmp # 저장된 파일 확인 docker cp 컨테이너ID:/tmp/테이블명.sql /tmp # 컨테이너 안의 파일 바깥으로 가지고 나오기 Import - dump뜬 DB를 현재 docker 컨테이너로 이동 docker cp /tmp/테이블명.sql 컨테이너ID:/tmp # 컨테이너에..

docker 2022.11.23