본문 바로가기
협업툴,가상환경 정리/docker_정리

docker 설치, docker-compose 최신 설치 스크립트

by 알 수 없는 사용자 2024. 5. 8.

$ docker -v

Docker version 20.10.17, build 100c701


$ docker-compose -v

Docker Compose version v2.13.0

특히 docker-compose 의 버전은 꼭 v2. 점대여야 합니다.

 


$ ls -al /tmp 파일에 보시면 ( wsl2 에서 docker-desktop 쓸때 gui 화면 사용하려면 )


해당 디렉토리가 있어야 합니다.

 

 

필요한 app 설치 
sudo apt install -y expect
sudo apt install -y mariadb-server
sudo apt install -y mariadb-client

 

 

 


docker 수동 설치

 

참조

https://docs.docker.com/engine/install/ubuntu/

 

Install Docker Engine on Ubuntu

Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.

docs.docker.com

bash 만 따온 거

기존 파일 삭제 (필요시 할것)

$ for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

$ sudo apt autoremove <<------ 이거는 사용할 떄 주의 해야됨

 

설치 스크립트

# Add Docker's official GPG key:
# set -e # 하나라도 실패시 bash 종료
set -x # 무슨명령어 실행되는지 확인
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

set +x # 무슨명령어 실행되는지 확인

 

설치 후

$ docker ps 하면

permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.45/containers/json": dial unix /var/run/docker.sock: connect: permission denied 

하면서 에러가 나는데 이때

$ sudo docker ps

하면 에러가 안남

 

이유는 /var/run/docker.sock 해당 파일을 보면 알 수 있듯 도커도 보통 프로세스간 로컬에서 통신방법중 하나인 Unix 도메인 socket 통신을 하고, 그 과정에서 편리하게 통신하기 위한 방법으로 docker 데몬 자체에서 root 권한으로 통신한다. 따라서 sudo docker ps 하면 되는 건데...

할때마다 sudo 를 칠 순 없으니 docker 그룹에 사용자($USER)를 추가해 사용하는 편이 좋다.

 

docker 그룹에 $USER를 보조그룹으로 추가하는 방법

$ sudo usermod -aG docker $USER

$ newgrp docker

이렇게 하거나 (newgrp docker <- 권한 갱신 명령어)

/etc/group 을 root 권한으로 접속해서 해당 부분을 추가하고 저장 해 주면 된다

 

---------------------

$ sudo apt install docker-compose -y 로 설치 해도 되긴 되는데 이렇게 설치하면

$ docker-compose -v 해보면 버전이 1.xx 대인걸 알 수 있다.

 

따라서 해당 스크립트로 설치 하면 편함

docker-compose 최신 설치 스크립트 [ 수동 설치시 docker-compose 버전 확인 꼭 필요함 ( 그냥 apt install 하면 v1점대 버전이라 curl 을 이용한 설치가 요구 됨 ) ]

$ docker-compose -v 해서 v2.~~~ 이면 굿

#!/bin/bash
# set -e # 하나라도 실패시 bash 종료
set -x # 무슨명령어 실행되는지 확인

#버전확인
docker-compose -v

#기존 설치 삭제
sudo apt remove docker-compose -y

#jq library 설치
sudo apt install jq -y

#최신 버전 설치
VERSION=$(curl --silent https://api.github.com/repos/docker/compose/releases/latest | jq .name -r)
DESTINATION=/usr/bin/docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-$(uname -s)-$(uname -m) -o $DESTINATION
sudo chmod 755 $DESTINATION

#설치 버전 확인
docker-compose -v

# exit 0
set +x # 무슨명령어 실행되는지 확인

 

 


 

사설

sudo 명령어 칠때마다 비번 치기 싫을 때 ( 보안상 안좋음 )

일반 사용자에게 sudo 권한 부

 

밑에 스크립트 사용하면 됨

#!/bin/bash
set -e # 하나라도 실패시 bash 종료
set -x # 무슨명령어 실행되는지 확인
# ----------------------------------------------------------------------------------------------------------
# 선택할 부분
# 1 권한 1000인놈으로 쓴다 ( 디폴트 유저 )
# USER_NAME=$(cat /etc/group | grep 1000 | cut -d: -f1)
# 2 해당 USER 네임으로 쓴다
USER_NAME=$USER
echo "USER_NAME : ${USER_NAME}"
echo "$USER_NAME ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/$USER_NAME
ls /etc/sudoers.d
cat /etc/sudoers.d/$USER_NAME
echo '${USER_NAME} sudo 권한 과정 완료'
# ----------------------------------------------------------------------------------------------------------
sudo usermod -aG docker $USER_NAME
sudo usermod -aG docker 'root'
echo 'docker sudo 권한 과정 완료'

 

이거 스크립트 쓰거나

→ 일반사용자 sudo 권한 부여

$ sudo passwd 명령어로 root 계정의 비밀번호 설정 후,

$ su root 명령어로 root 계정에 접근해서

$ echo "$USER_NAME ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$USER_NAME 입력

※ {$USER_NAME}은 본인의 User 이름과 같게 세팅할 것.

 

 잘됬는지 확인 :

  • ls /etc/sudoers.d/$USER_NAME
  • cat /etc/sudoers.d/$USER_NAME

댓글