profile image

L o a d i n g . . .

728x90

Docker desktop이 유료화되면서 회사에서 docker desktop을 무료로 사용하는 게 불가능해졌습니다. 팀에서 도커를 직접적으로 사용하지 않아 별도로 승인을 받기가 부담스러웠기 때문에 docker desktop의 대체제를 찾아야 했습니다. 참고로 저는 현재 Macbook M1을 사용하고 있습니다. 

저는 docker desktop의 대체제로서 rancher을 선택했는데요, 비교적 간편한 UI의 형태이고 아직까지 M1을 지원하는 대중적인 소프트웨어가 눈에 띄지 않았기 때문에 선택했습니다. 사용법이 비교적 간편하지만 권한 문제로 골치 아팠던 경험이 있기에 설치법부터 도커 사용 예시까지 함께 살펴보겠습니다. 

도커 설치하기 

우선 도커부터 설치하겠습니다. 

brew install docker docker-compose

만약 위 커맨드를 실행 중 다음과 같은 문구가 보이면 문구대로 명령을 실행해주시면 됩니다. 

Compose is now a Docker plugin. For Docker to find this plugin, symlink it:
  mkdir -p ~/.docker/cli-plugins
  ln -sfn /opt/homebrew/opt/docker-compose/bin/docker-compose ~/.docker/cli-plugins/docker-compose

 

Rancher 설치하기 

Rancher 설치는 다음 링크에서 진행해주시면 됩니다. https://rancherdesktop.io/

 

Rancher Desktop

Container Management Container management to build, push, and pull images and run containers. It uses the same container runtime as Kubernetes. Built images are immediately available to use in your local workloads without any pushing, pulling, or copying.

rancherdesktop.io

Download Rancher

Rancher 설정 

저는 다음과 같이 Rancher을 설정했습니다. 

만약 Rancher을 설치 또는 설정하는 과정에서 missing directory 또는 directory permission과 관련돼서 문제가 발생하면 다음 커맨드를 실행합니다. https://github.com/rancher-sandbox/rancher-desktop/issues/1155#issuecomment-1003274324

sudo mkdir /usr/local/bin
sudo chown $USER /usr/local/bin

 

도커가 정상적으로 실행되는지 확인하기 

Docker-compose를 예시로 들겠습니다. 다음과 같은 docker-compose 파일이 있다고 하고 이를 docker-compose up -d 커맨드로 실행해보겠습니다. 

version: "3"
services:
  db:
    container_name: spring-db
    image: mysql
    platform: linux/amd64
    environment:
      MYSQL_DATABASE: todos
      MYSQL_USER: user
      MYSQL_PASSWORD: root
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - ./db/data:/var/lib/mysql:rw
    ports:
      - "3307:3307"
    restart: always

해당 파일을 실행하면 다음과 같은 문구를 볼 수 있습니다. 

권한 문제 발생

Docker는 별도의 설정이 존재하지 않는 한 root 권한으로 커맨드를 실행합니다. 하지만 Rancher의 경우 버그인지 아니면 제가 설정을 잘 못한 결과인지 docker에서 해당 커맨드를 실행할 수 있는 권한이 없는 문제가 발생했습니다. 현재 제가 사용하는 동일한 유저와 그룹 권한을 docker에서도 동일하게 사용할 수 있도록 설정해보겠습니다. 

첫 번째로 환경변수를 설정합니다. 

export DOCKER_USER="$(id -u):$(id -g)"

 두 번째로 docker 또는 docker-compose 실행 시 다음과 같이 user을 명시합니다. 

# export DOCKER_USER="$(id -u):$(id -g)"

version: "3"
services:
  db:
    container_name: spring-db
    user: $DOCKER_USER
    image: mysql
    platform: linux/amd64
    environment:
      MYSQL_DATABASE: todos
      MYSQL_USER: user
      MYSQL_PASSWORD: root
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - ./db/data:/var/lib/mysql:rw
    ports:
      - "3307:3307"
    restart: always

다시 docker-compose를 실행하면 정상적으로 동작하는 걸 확인할 수 있습니다.

MySQL 컨테이너 정상 실행 확인

마무리

Docker desktop이 유료화되면서 대체제로 Rancher을 사용하는 방법에 대해 살펴봤습니다. Rancher에 대해 알아보면서 미숙했던 docker에 대한 개념도 정리가 돼서 즐거운 시간이었습니다. 

728x90
복사했습니다!