Docker Redis Introduction

Docker-compose >>

Docker Redis 시작하기

Docker 설치하기 (CentOS)

Docker 시작하기

Docker 버전 확인하기

레디스 최신 이미지 가져오기

버전 지정해서 레디스 이미지 가져오기

레디스 이미지 확인하기

레디스 서버 실행하기

-d: 백그라운드(background)로 실행하기

Docker의 redis-cli로 접속하기

Redis-cli로 직접 접속하기: 연결된 6379 포트를 사용한다.

Docker 리눅스 Shell에 접속하기

도커용 redis.conf

/root/docker/redis-5.0.3/6001/redis.conf 파일을 만든다.
redis.conf 예
  • daemonize yes로 하면 구동되지 않는다.
  • protected-mode no로 설정하고, bind는 주석(comment)처리한다.
  • Working dir를 지정한다. "/data" 도커 이미지 안에 디렉토리를 지정한다.
  • cluster-announce-ip, port를 지정한다. cluster-announce-ip를 지정하지 않으면 Cluster nodes로 조회했을 때 다른 IP가 나올 수 있다.

redis.conf 파일 지정해서 실행: volume 지정



Docker 명령어

  • docker version: 도커 버전 보기
  • netstat -tnlp: 포트, 프로세스 확인
  • Uninstall old versions: 이전 버전 제거
  • docker info: 도커 정보 보기
  • docker run: 컨테이너 실행하기
    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • docker ps: 컨테이너 보기
    docker ps [OPTIONS]
    notwork_mode: host를 사용해서 PORTS는 나오지 않았습니다.
    • -a, --all: 컨테이너 모두 보기: 멈춘 컨테이너도 보여줍니다.
    • -q, --quiet: 컨테이너 ID만 표시합니다.
      이런 용도로 사용합니다. docker stop $(docker ps -q)
    • -l, --latest: 가장 최근에 생성된 컨테이너를 보여줍니다.
    • -n, --last: 최근에 생성된 컨테이너를 n개를 보여줍니다.
    • -s, --size: 컨테이너 크기도 보여줍니다.
    • -f, --filter: 컨테이너를 필터링해서 보여줍니다.
      Label은 docker-compose.yml 파일에서 지정합니다.
    • --format: 항목을 지정해서 보여줍니다.
      docker ps -a --format "{{.Names}}: {{.Image}} {{.Networks}} Status={{.Status}}"| sort
  • docker logs: 컨테이너 로그를 보여줍니다.
    docker logs [OPTIONS] CONTAINER
    • docker logs redis6001
    • docker logs -f redis6001   -> tail -f 같은 기능
    • docker logs -t redis6001   -> timestamp 보여주기
    • journalctl -f -u docker.service   -> CentOS에서 사용 가능합니다.
  • docker inspect: 컨테이너와 이미지 세부 내용을 보여줍니다.
    docker inspect [OPTIONS] NAME|ID [NAME|ID...]
  • docker top: 컨테이너 프로세스 정보를 보여줍니다.
    docker top CONTAINER
  • docker kill: 컨테이너를 죽입니다.
    docker kill [OPTIONS] CONTAINER [CONTAINER...]
  • docker cp: 컨테이너 안에 있는 파일을 Host OS의 파일시스템으로 복사하거나, Host OS의 파일을 컨테이너 파일시스템으로 복사합니다.
    docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
    docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
  • docker port: 매핑된 포트 정보를 보여줍니다.
    docker port CONTAINER [PRIVATE_PORT[/PROTO]]
    network_node=host 일 경우 조회되지 않습니다.
  • docker restart: 컨테이너를 재시작합니다.
    docker restart [OPTIONS] CONTAINER [CONTAINER...]
  • docker stop: 컨테이너를 종료합니다.
    docker stop [OPTIONS] CONTAINER [CONTAINER...]
  • docker start: 컨테이너를 시작합니다.
    docker start [OPTIONS] CONTAINER [CONTAINER...]
  • docker stats: 컨테이너 상태(사용량)을 계속 업데이트하면서 봅니다. 리눅스 top 명령처럼.
    docker stats [OPTIONS] [CONTAINER...]
    docker stats: 이 경우 ID가 표시되므로 어느 컨테이너인지 확인하기 어렵다.
  • docker stats redis6001 redis6002: 컨테이너 이름을 지정한다. docker stats $(docker ps -a --format "{{.Names}}" | sort): 컨테이너 이름을 추출하고 소트해서 제공한다.
  • docker rename: 컨테이너 이름을 바꿉니다.
    docker rename CONTAINER NEW_NAME
  • docker pause: 컨테이너를 일시 멈춤(suspend/freeze)니다. 이것은 cgroups freezer를 활용한다. 일시 멈춤되면 프로세스 상태와 내용은 보존되지만 CPU 스케줄링을 하지 않는다. Docker ps로 보면 Status가 Paused로 나오고, stats로 보면 CPU 사용량이 0.00%이다.
    docker pause CONTAINER [CONTAINER...]
  • docker unpause: 일시 멈춤(suspend/freeze)된 컨테이너를 해제(unsuspend/unfreeze)합니다.
    docker unpause CONTAINER [CONTAINER...]
  • docker rm: 컨테이너를 삭제합니다.
    docker rm [OPTIONS] CONTAINER [CONTAINER...]
    docker rm $(docker ps -a -q --filter 'exited!=0')
  • docker save: 이미지를 tar 파일로 만든다.
    docker save [OPTIONS] IMAGE [IMAGE...]
    docker save -o redis2.tar redisgate/redis:5.0.3
  • docker load: tar 파일을 이미지 저장소로 불러들인다.
    docker load [OPTIONS]
    docker load -i redis2.tar

기타 필요한 명령

  • 컨테이너 쉘에 접속하기
    docker exec -it redis6001 /bin/bash
  • 포트 확인
    netstat -tnlp
    lsof -i -nP | grep LISTEN | awk '{print $(NF-1)" "$1}' | sort -u
  • Network_mode=bridge 일 경우 Port Forwarding 정보 보기
    iptables -t nat -L -n
  • Network_mode=bridge 일 경우 Port Forwarding 설정
  • [root]# cat /proc/sys/net/ipv4/ip_forward
    0
    [root]# sysctl -w net.ipv4.ip_forward=1       설정  
    net.ipv4.ip_forward = 1
    [root]# cat /proc/sys/net/ipv4/ip_forward       확인  
    1

    리부팅 후에도 변경한 값이 적용될 수 있도록 sysctl.conf 파일을 수정한다.

    [root]# vi /etc/sysctl.conf
    net.ipv4.ip_forward = 1

    firewall-cmd로 각 포트별로 포워딩 할 필요는 없다.



Docker-compose >>

Email 답글이 올라오면 이메일로 알려드리겠습니다.