본문 바로가기
SI 업무/linux

1. 우분투에 docker 설치

by 새로운걸 배우는게 너무 싫은 IT 복붙러 2024. 11. 17.
728x90

처음엔 virtual box 내에 우분투가 존재 하니

해당 우분투에 oracle xe 를 다운 받아서 설치 하려 했다.

하지만 요즘 세상은 일일이 다 까는 것보다 

docker 로 이미지별 container 에 올리는것이 대세니.

대세를 따라 보기로 한다.

우선 docker를 깔아 본다.

 


1. docker 를 설치 전단계.
    나는 처음이니 docker 가 설치 안되어 있지만 혹시 docker를 과거에 깔고 기억 못할수 있으니
    docker --version 명령어를 실행해 본다.

    역시 안갈려 있다. 

  1-1. docker 설치 전

sudo apt upgrade -y

 
 1-2. docker 설치에 필요한 종속성이 있는 package  들을 설치 한다.

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

 

  1-3. docker GPG 키 추가

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

  

  curl 로 docker 로 부터 GPC 키를 다운 받아 놔야 된댄다.

더보기

  이유 설명이 있지만 이해는 안간다. 먼소리인지!!!! 
   

Docker 설치 시 GPG 키 추가가 필요한 이유


  1. 공식 저장소 확인: Docker의 공식 APT 저장소를 시스템에 추가할 때, 이 저장소가 신뢰할 수 있는 소스임을 확인하기 위해 GPG 키가 필요합니다.
  2. 패키지 관리 시스템 요구사항: Ubuntu와 같은 리눅스 배포판의 패키지 관리 시스템은 보안상의 이유로 서명된 패키지만 설치하도록 설계되어 있습니다
  3. 자동 업데이트 보안: 시스템 업데이트 시 Docker 패키지의 신뢰성을 지속적으로 확인할 수 있습니다
  4. 중간자 공격 방지: GPG 키 검증을 통해 패키지 다운로드 과정에서 발생할 수 있는 중간자 공격을 방지합니다.

    이 명령어는 Docker의 공식 GPG 키를 다운로드하여 시스템의 신뢰할 수 있는 키 목록에 추가합니다.결론적으로, Docker의 GPG 키 추가는 소프트웨어 설치 과정의 보안을 강화하고, 신뢰할 수 있는 소스에서만 패키지를 설치하도록 보장하는 중요한 단계입니다.

  1-4. docker 저장소 추가 
  : 이 또한 시킨대로 우분투 prompt 에 ctrl+c+v

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

 

설명

더보기

1.echo "...": 저장소 정보를 포함한 문자열을 생성합니다.
2.deb: 이는 바이너리 패키지 저장소임을 나타냅니다.
3.[arch=amd64]: 64비트 아키텍처용 패키지만 사용함을 지정합니다.
4.signed-by=/usr/share/keyrings/docker-archive-keyring.gpg: 이 저장소의 패키지를 검증하는 데 사용할 GPG 키 파일의 위치를 지정합니다.
5. https://download.docker.com/linux/ubuntu: Docker의 공식 Ubuntu 저장소 URL입니다.
6. $(lsb_release -cs): 현재 Ubuntu 버전의 코드네임을 동적으로 가져옵니다. 예를 들어, Ubuntu 20.04의 경우 'focal'이 됩니다.
7. stable: 안정 버전의 저장소를 사용함을 나타냅니다.
8. | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null: 이 부분은 생성된 문자열을 /etc/apt/sources.list.d/docker.list 파일에 root 권한으로 쓰는 작업을 수행합니다. > /dev/null은 출력을 숨깁니다.
이 명령어를 실행하면 시스템의 패키지 관리자가 Docker의 공식 저장소에서 Docker 패키지를 찾고 설치할 수 있게 됩니다. 이는 최신 버전의 Docker를 안전하고 신뢰할 수 있는 소스에서 설치하고 업데이트하기 위한 중요한 단계입니다.


2. docker 설치.

 2-1. docker 설치

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

 2-2. docker 설치후  

     수행 명령어를 치면 에러가 난다.

     

    난 설치시 위에서 sudo apt update 를 했으므로 

    또 sudo apt update 를 하지 않았다.

    sudo apt install -y docker-ce docker-ce-cli containerd.io 만 수행 했다.

    그래서 그런지 에러가 난다.

    시키는 대로 update 하고 install 하니 정상작동한다.

sudo systemctl start docker
sudo systemctl enable docker

   궁금했다.
   sudo systemctl start docker 는 docker 시작 하라는걸로 알겠는데

   sudo systemctl enable docker 는 머 하는  명령인가?   ->  매번 우분투 껐다 켜지면 docker 를 수행 하라는 명령어란다.

   (즉 윈도우에 시작프로그램에 등록되서 service를 시작 해주는 역활과 똑같은....) 

 

 2-3. docker 가 정상적으로 설치 됐는지 hello-world를 실행 해본다.

    최초 한번 sudo docker run hello-world 실행 하면

    local에 이미지가 없으니 다운 받아서 수행 한다.

    두번째 sudo docker run hello-world 를 치면 이미지 다운 없이 바로 수행 된다.

 

  2-4. 현재 user를 docker group 에 추가 한다.

         이걸 해야 매번 명령어 칠때 sudo 를 안붙여도 된다고 한다.

sudo usermod -aG docker $USER

 

설명

더보기

user 를 docker group 에 추가후 로그아웃과 로그인을 다시 해야함.

sudo usermod -aG docker $USER 명령어는 현재 사용자를 docker 그룹에 추가하는 것으로, Oracle 이미지 설치 전에 반드시 필요한 단계는 아니지만, Docker를 더 편리하고 안전하게 사용하기 위해 권장되는 단계입니다. 이 명령어를 실행해야 하는 주요 이유는 다음과 같습니다:

  1. 권한 관리: Docker 데몬은 기본적으로 root 권한으로 실행됩니다. 사용자를 docker 그룹에 추가함으로써, sudo 없이도 Docker 명령어를 실행할 수 있게 됩니다.
  2. 보안 강화: 모든 Docker 명령을 root로 실행하는 것은 보안상 위험할 수 있습니다. docker 그룹에 사용자를 추가하면, 필요한 권한만을 부여하여 보안을 강화할 수 있습니다.
  3. 편의성: sudo를 매번 입력하지 않아도 되므로, Docker 사용이 더 편리해집니다..
  4. 자동화 용이성: 스크립트나 CI/CD 파이프라인에서 Docker를 사용할 때, sudo 없이 명령어를 실행할 수 있어 자동화가 용이해집니다.
  5. 권한 분리: 시스템 전체에 대한 root 권한을 부여하지 않고도 Docker 관련 작업을 수행할 수 있게 됩니다

이 명령어를 실행한 후에는 로그아웃 후 다시 로그인하거나, newgrp docker 명령어를 실행하여 변경사항을 적용해야 합니다

.따라서, 이 단계를 수행하는 것이 필수는 아니지만, Docker를 더 안전하고 효율적으로 사용하기 위해 권장되는 좋은 관행입니다.

 

728x90