DataBase/Cassandra

Cassandra 3.11.3 버전 설치 Dockerfile 작성 및 컨테이너 실행(feat. sudo 명령어 X)

쫄보삽질러 2021. 8. 2. 22:20
728x90

들어가기에 앞서..

Dockerfile 작성 중 중요한 포인트를 하나 발견했다!

 

Dockerfile에는 sudo 명령어를 쓰지 않는다!

bash: sudo: command not found

 

클라우드 환경에서 cassandra 관련 프로그램들을 설치할 때 sudo 명령어를 사용했어서

Dockerfile 작성 시 sudo를 붙였더니 error가 나서 구글링을 통해

Dockerfile에서는 sudo 명령어를 쓰지 않아도 됨을 알 수 있었다.

 

https://stackoverflow.com/questions/39985480/unable-to-use-sudo-commands-within-docker-bash-sudo-command-not-found-is-di

 

Unable to use sudo commands within Docker, "bash: sudo: command not found" is displayed

I have installed TensorFlow using the following command docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel and I need to set up TensorFlow Serving on a windows machine. I followed the

stackoverflow.com

docker comes along with root it doesnt require sudo.
...
Docker images typically do not have sudo, you are already running as root by default.

 

물론 Docker Hub에서 Cassandra 공식 docker 이미지를 제공하지만, 

클라우드 환경에서 열심히 setting한 것을 바탕으로 

나만의 cassandra 도커 이미지를 만들어 ECR에 push 후 사용하기 위해 Dockerfile을 작성했다.

 

FROM ubuntu:18.04
  
# JAVA 설치
RUN apt-get -y update && \
    apt-get -y install openjdk-8-jdk

# Python2 설치
RUN apt -y install python2.7 && \
    apt -y install python-pip

# Cassandra 설치
RUN apt-get -y install wget && \
    wget https://archive.apache.org/dist/cassandra/3.11.3/apache-cassandra-3.11.3-bin.tar.gz && \
    tar -xzvf apache-cassandra-3.11.3-bin.tar.gz && \
    rm -rf apache-cassandra-3.11.3-bin.tar.gz

# cqlsh, cassandra-driver 설치
RUN python -m pip install cqlsh && \
    python -m pip install cassandra-driver

WORKDIR /apache-cassandra-3.11.3

ENTRYPOINT ["bin/cassandra", "-fR"]

Cassandra 실행에 필수인 JAVA 8버전과 Python 2버전을 설치하고, 

Cassandra도 설치 후 cassandra를 실행하기 위한 cqlsh와 cassadra-driver를 설치한다.

이후 디렉토리 경로를 옮겨서 cassandra까지 실행을 해놓은 상태로 컨테이너를 띄울 수 있다.

 

 

1. Dockerfile 바탕으로 이미지 빌드하기

# Dockerfile 경로에서
$ sudo docker build -t cassandra_image .

 

2. 이미지를 바탕으로 컨테이너 실행하기

$ sudo docker run -dit --name my_cassandra cassandra_image

-dit: 백그라운드로 컨테이너 실행 후 커맨드 창 띄우기

 

3-1.  컨테이너 접속 후 cqlsh 실행하기

$ sudo docker exec -it my_cassandra bash

# 컨테이너 접속 후
/apache-cassandra-3.11.3# bin/cqlsh

 

3-2.  컨테이너에 연결해서 cqlsh 창 바로 실행

$ sudo docker exec -it my_cassandra bin/cqlsh

 

 

- 이상 오늘의 삽질일기 끝:)

 

 

 


여기저기 삽질도 해보고

날려도 먹으면서

배우는 게

결국 남는거다

- Z.Sabziller