title: docker-install
date: 2019-01-22 23:01:45

Docker

  • 개발자 및 시스템 관리자가 컨테이너를 사용하여 응용 프로그램을 개발, 배포 및 실행하가위한 플랫폼
  • 컨테이너화 : Linux 컨테이너를 사용하여 응용 프로그램을 배포하는 것
  • 컨테이너 : 실행시 이미지가 메모리에 저장되는 인스턴스(상태가 있는 이미지 또는 사용자 프로세스)
  • 이미지: 실행가능한 패키지- 어플리케이션 실행에 필요한 코드, 런타임, 라이브러리, 환경 변수 그리고 설정 파일들..
  • LXC라고하는 리눅스의 기능을 사용-> 추후 runC로 대체
  • LXC(리눅스 컨테이너)
    • 단일 컨트롤 호스트 상에서 여러 개의 고립된 시스템(컨테이너)들을 실행하기 위한 운영 시스템 레벨 가상화 방법
    • 리눅스/다른 컨테이너와 호스트 시스템의 커널 공유유
    • 다른 실행 파일보다 더 많은 메모리를 사용하지 않음
    • 개별 프로세스를 실행하여 가벼움
    • https://ko.wikipedia.org/wiki/LXC
  • 버전 : Community Edition (CE) / Enterprise Edition
  • How is Docker different from a virtual machine?

설치 - Ubuntu / Docker CE

이전 버전 삭제

  • 설치 전 이전 버전 삭제
sudo apt-get remove docker docker-engine docker.io containerd runc

설치 준비

// 패키지 업데이트
sudo apt-get update

// 설치
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

// 도커 GPG키 등록 
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg


// 레퍼지토리 설정
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) 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-compose-plugin

// 설치 테스트  
sudo docker container run hello-world

삭제

docker 삭제

$ sudo apt-get purge docker-ce docker-ce-cli containerd.io

관련 파일 삭제

  • images, containers, volues 전체 삭제
  • $ sudo rm -rf /var/lib/docker $ sudo rm -rf /var/lib/containerd

Docker 사용자 등록

  • Docker 데몬은 tcp 포트 대신 유닉스 소켓을 사용 -> 유닉스 소켓은 root 소유 -> 일반 유저는 사용 불가 -> root를 제외한 다른 유저는 sudo 를 함께 사용해야함 -
  • docker ce를 설치하면 docker 그룹이 자동으로 생성 되며 등록된 유저는 없음

사용자 등록


sudo usermod -aG docker $USER  
newgrp docker

// 확인  
docker run hello-world

// 아래 에러가 발생시  
WARNING: Error loading config file: /home/user/.docker/config.json -dockdfdfdf  
stat /home/user/.docker/config.json: permission denied

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

// .docker 폴더를 찾을수 없다는 에러 발생시 폴더 생성  
mkdir .docker

// 재 부팅 후 docker 서비스가 자동 시작 안될 때  
sudo systemctl enable docker.service  
sudo systemctl enable containerd.service

기타

```

// 아래 에러 발생시
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1": dial unix /var/run/docker.sock: connect: permission denied

// centos8!!!
// 아래 명령어 실행 후 재 로그인
$ sudo usermod -aG docker ${USER}
$ sudo chown root:docker /var/run/docker.sock

```

참고

+ Recent posts