티스토리 뷰

반응형

본 포스트 이후 모든 글은 Ubuntu 18.04를 기준으로 포스팅할 예정이니 참고 바랍니다.


 

 

설치 전제조건 (Prerequisites)


도커 엔진을 설치하기 위해서는 다음 우분투 버전 중 64비트 버전이 필요합니다.

  • Ubuntu Focal 20.04 (LTS)
  • Ubuntu Eoan 19.10
  • Ubuntu Bionic 18.04 (LTS)
  • Ubuntu Xenial 16.04 (LTS)

 

이전 버전 설치 제거하기

도커의 이전 버전들은 docker, docker.io 또는 docker-engine으로 불립니다. 만약 이 버전들이 설치되어 있다면 삭제하시면 됩니다.

$ sudo apt-get remove docker docker-engine docker.io containerd runc

만약 apt-get 명령어가 아무 패키지도 설치되어 있지 않다고 해도 문제는 없습니다.

이전 버전을 삭제하더라도 /var/lib/docker/ 경로에 이미지, 컨테이너, 볼륨 그리고 네트워크를 포함한 내용은 보존됩니다. 이제 도커 엔진은 docker-ce로 불립니다.

 

 

도커 엔진 설치하기


설치 방법

우리는 도커 엔진을 우리가 원하는 방법에 따라 다르게 설치할 수 있습니다.

  • 대부분의 사용자들은 쉬운 설치와 업그레이드 작업을 위해 도커의 레포지토리를 설정하고, 그 레포지토리로부터 설치합니다. 이 방법이 권장되는 방법입니다.
  • 몇몇 사용자들은 데비안 패키지(DEB)를 다운로드하고 수동으로 도커 엔진을 설치하고, 완전히 수동으로 업그레이드를 관리합니다. 이 방법은 물리적으로 인터넷 접근이 불가능한 에어갭 시스템에 도커를 설치하는 것과 같은 상황에서 유용합니다.
  • 테스트 환경과 개발 환경에서 사용자들은 도커 엔진을 설치하기 위해 자동화된 편리한 스크립트를 사용하는 것을 선택할 수도 있습니다.

저는 첫 번째 방법으로 도커 엔진을 설치하도록 하겠습니다.

 

레포지토리를 사용하여 설치하기

새로운 호스트 머신에 도커 엔진을 처음 설치하기 전에, 도커 레포지토리를 설정해야 합니다. 그다음에 우리는 그 레포지토리로부터 도커를 설치하고 업데이트할 수 있습니다.

레포지토리 설정하기

  1. apt 패키지 인덱스를 업데이트하고, apt가 HTTPS를 통해 레포지토리를 사용하기 위한 패키지를 설치합니다.
    $ sudo apt-get update
    $ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
  2. 도커의 공식 GPG 키를 추가합니다.
    $ sudo apt-get update
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    fingerprint의 마지막 8자리를 검색해서 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88의 fingerprint를 가진 키를 가졌다는 것을 확인합니다.
    $ sudo apt-key fingerprint 0EBFCD88
    pub rsa4096 2017-02-22 [SCEA]
    9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
    uid [ unknown] Docker Release (CE deb) <docker@docker.com>
    sub rsa4096 2017-02-22 [S]
  3. stable 레포지토리를 설정하기 위해 다음의 명령어를 사용하세요. nightlytest 레포지토리를 추가하기 위해서는, 아래 명령어에서 stable 단어 뒤에 nightly 또는 test를 추가하세요.

    주의: 아래의 lsb_release -cs 명령어는 xenial과 같은 우분투 배포 버전의 이름을 반환합니다. 가끔 Linux Mint와 같은 배포 버전에서는 $(lsb_release -cs) 부분을 부모 우분투 배포 버전으로 변경해야 합니다. 예를 들면, 만약 우리가 Linux Mint Tessa를 사용하고 있다면 bionic을 사용할 수 있습니다. 도커는 테스트하지 않거나 지원하지 않는 우분투 배포 버전에 대해서는 아무 보장도 하지 않습니다.

    $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

 

도커 엔진 설치하기

  1. apt 패키지 인덱스를 업데이트하고, 가장 최신 버전의 도커 엔진과 containerd를 설치하세요. 특정 버전을 설치하려면 다음 단계로 넘어가세요.
    $ sudo apt-get update
    $ sudo apt-get install docker-ce docker-ce-cli containerd.io
  2. 특정 버전의 도커 엔진을 설치하기 위해, 레포지토리 내에 있는 설치 가능한 버전을 선택하고 설치하세요.
    $ apt-cache madison docker-ce
    docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
    docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
    docker-ce | 18.06.1~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
    docker-ce | 18.06.0~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
    ...

    두 번째 열의 문자열을 사용해서 특정 버전을 설치하세요, 예를 들면 5:18.09.1~3-0~ubuntu-xenial이 있습니다.

    $ sudo apt-get install docker-ce= docker-ce-cli= containerd.io
  3. hellow-world 이미지를 실행해서 도커 엔진이 정상적으로 설치되었는지 확인합니다.
    $ sudo docker run hello-world

    이 명령어는 테스트 이미지를 다운로드하고 컨테이너 내에서 실행시킵니다. 컨테이너가 실행될 때, 정보를 나타내는 메시지가 출력되고 종료됩니다.

이제 도커 엔진이 설치되고 실행 중입니다. 도커를 설치하면서 docker라는 사용자 그룹이 생성되었지만 어떤 사용자도 추가되지 않았습니다. 따라서 우리는 도커 명령어를 실행하기 위해 sudo 명령어를 사용해야 합니다.

 

Non-root 사용자로서 도커 관리하기

도커 데몬은 TCP 포트 대신에 Unix 소켓으로 바인딩합니다. 기본적으로 root 사용자가 Unix 소켓을 소유하고 있고, 다른 사용자들은 sudo 명령어를 사용해야만 접근할 수 있습니다. 도커 데몬은 항상 root 사용자로서 실행됩니다.

만약 sudo 명령어를 덧붙여서 도커 명령어를 실행하는 게 귀찮으시다면, docker라는 Unix 그룹을 생성하고 사용자를 추가하면 됩니다. 도커 데몬이 시작될 때, 도커 데몬은 docker 사용자 그룹의 사용자에 의해서 접근할 수 있는 Unix 소켓을 생성합니다.

도커 사용자 그룹은 root 사용자와 동일한 권한을 갖습니다. 시스템에 어떤 영향을 끼치는지 확인하려면 여기를 참조하세요.
  1. docker 사용자 그룹을 생성합니다. (사용자 그룹이 존재하지 않는 경우)
    $ sudo groupadd docker
  2. 현재 사용자를 docker 그룹에 추가합니다.
    $ sudo usermod -aG docker $USER
  3. 그룹 사용자의 멤버 권한을 갱신하기 위해 로그아웃 후 다시 접속합니다.
    만약 VM에서 테스트 중이라면, 변경 사항을 적용하기 위해 VM을 재부팅해야 할 수도 있습니다.
    X Windows와 같은 데스크톱 리눅스 환경의 경우, 세션을 완전히 종료하고 다시 로그인하세요.
    리눅스의 경우, 사용자 그룹에 변경사항을 적용하기 위해 다음의 명령어를 사용할 수 있습니다.
    $ newgrp docker
  4. sudo 명령어 없이 도커 명령어가 실행되는지 실행합니다.
    $ docker run hello-world

    만약 현재 사용자를 docker 그룹에 추가하기 전에 sudo 명령어를 사용해서 도커 명령어를 실행했다면, 아마 다음의 에러를 볼 수도 있습니다. 이 에러는 ~/.docker/ 경로가 sudo 명령어로 인해 잘못된 권한으로 생성되었다는 것을 의미합니다.

    WARNING: Error loading config file: /home/user/.docker/config.json -
    stat /home/user/.docker/config.json: permission denied

    이 문제를 해결하기 위해, ~/.docker/ 디렉터리를 삭제하거나(디렉터리는 자동으로 다시 생성되지만, 개인 변경사항들은 모두 잃어버립니다), 다음의 명령어로 해당 디렉터리의 소유자와 권한을 변경합니다.

    $ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
    $ sudo chmod g+rwx "$HOME/.docker" -R

 

 

References


본 포스트는 다음 주소를 참조하였습니다.

반응형

'Cloud Computing > Docker' 카테고리의 다른 글

[Docker] 컨테이너 외부로 노출하기 (docker0, veth)  (0) 2020.06.16
[Docker] 도커란?  (1) 2020.06.06
댓글