docker --version
: 버전 확인
docker ps
: 실행중인 컨테이너 목록 확인
docker ps -a
: 전체 컨테이너 목록 확인
docker container ls -a
: 전체 컨테이너 목록 확인
docker start 컨테이너ID
: 컨테이너 시작
docker attach 컨테이너ID
: 컨테이너 접속
docker stop 컨테이너ID
: 컨테이너 멈춤
docker run 컨테이너ID
: 컨테이너 생성 및 시작
docker run -it 컨테이너ID
: 컨테이너 생성 및 시작 및 접속
docker rm 컨테이너ID
: 컨테이너 삭제
docker exec -it 컨테이너ID /bin/bash, sh
: 실행되고 있던 컨테이너 접속
exit, ctrl+D
: 컨테이너 빠져나오기
레디스
docker run redis
docker exec -it 컨테이너ID redis-cli
-it 가없으면 들어갔다 나옴 (-i, -t 따로따로임)
-a 도 없으면 들어갔다 그냥 나오기떄문에 조회한걸 붙여줌
도커 이미지 만들기
docker build ./
이름 정해주기
docker build -t (나의도커아이디) / (저장소/프로젝트 이름) : 버전
실행예제
docker run -it shinsang97/hello:lastest
docker run -p 접속할포트:컨테이너안포트 이미지이름
ex) docker run -p 5000:8080 shinsang97/nodejs:test
FROM node:10
COPY ./ ./ 모든 파일 복사
RUN npm install
CMD ["node", "server.js"]
위 문제점 파일이 막들어감 그래서 디렉터리 하나 만들어넣어야함
FROM node:10
WORKDIR /usr/src/app
COPY ./ ./
RUN npm install
CMD ["node", "server.js"]
$env:DOCKER_BUILDKIT=0
docker build -t shinsang97/test ./
하면 step으로 나옴
Copy는 바뀔떄마다 build 를 해야하지만 Volume을 쓰면 mapping(참조) 하기떄문에 사용해야함
맥에서
-v $(pwd):/usr/src/app
윈도우에서
-v %cd%:/usr/src/app
이런 식으로 다르게 $(pwd) => %cd% 이렇게 다르게 사용해주시면 됩니다
docker run -d -p 접속할포트:컨테이너안포트 -v WORKDIR경로/node_modules -v %cd%:WORKDIR경로 이미지 이름
ex)
docker run -d -p 5000:8080 -v /usr/src/app/node_modules -v "%CD%:/usr/src/app" shinsang97/test:latest
docker run -d -p 5000:8080 -v /usr/src/app/node_modules -v $(pwd):/usr/src/app shinsang97/test:latest
인데 window powershell의 경우
docker run -d -p 5000:8080 -v /usr/src/app/node_modules -v ${pwd}:/usr/src/app shinsang97/test
docker stop (container id ports) 후
다시 docker run -d -p 5000:8080 -v /usr/src/app/node_modules -v ${pwd}:/usr/src/app shinsang97/test
바뀜
Redis 비관계형데이터베이스(NoSql)이다.
도커사용시
const client = redis.createClient({
host: 'redis-server',
port: 6379,
});
일반 사용시
const client = redis.createClient({
host: 'https://redis-server.com',
port: 6379,
});
docker-compose up
docker-compose up -d --build 백그라운드 실행
docker-compose down 종료