최근 도커에 관련하여 공부중이여서 포스팅을 한다.


리눅스 컨테이너 기술을 활용하는 도커의 소스코드를 직접 컴파일하기 까지의 환경 구성에 대한 내용이다.


정확한 자료가 온라인 상에 존재하지 않는게 슬프다...


19년 2월 11일 현재 기준 테스트를 완료한 내용이다.


OS환경: xubuntu 18.04 LTS 64bit(우분투 환경)


docker-ce compile 환경 구축하기

1. Golang 설치

  • 레포지토리 업데이트

    sudo apt update -y
    
  • golang 및 git 설치

    sudo apt install golang git go-dep -y
    
  • 작업 디렉토리 설정

    export GOPATH=$HOME/go
    
  • 설치 확인

    go version
    

 

2. docker 설치

  • curl 설치

    sudo apt install curl -y
    
  • 스크립트 가져오고 실행

    curl -fsSL https://get.docker.com/ | sudo sh
    
  • docker 사용자 추가

    • 명령 실행시 일일이 sudo 권한을 안주게 하기 위함
    • docker 그룹에 현재 사용자 추가
    sudo usermod -aG docker $USER
    
  • 설치 확인

    docker -v
    
  • docker 서비스 확인

    service docker status
    
    • 서비스 실행

      service docker start
      
    • 서비스 중지

      service docker stop
      
  • docker 디버그 모드 설정

    • 해당 모드를 설정하게 되면 DEBU와 관련된 메시지를 콘솔 화면에 띄움

      vi /etc/docker/daemon.json
      
      {
      	"debug": true
      }
      
    • 저장 후 서비스 재시작

3. docker-ce 소스 가져오기

  • 클론

    git clone https://github.com/docker/docker-ce.git
    

4. docker-ce 소스 컴파일

  • docker 엔진 컴파일

    • docker 데몬이 실행 중이어야 함

      cd ~/go/docker-ce/components/engine
      sudo make
      
    • 기존 실행된 서비스 종료

      service docker stop
      
    • docker 데몬 실행

      cd ~/go/docker-ce/components/engine/bundles/binary-daemon
      
      ./dockerd
      
  • docker 클라이언트 컴파일

    • docker 데몬이 실행 중이어야 함

      cd ~/go/docker-ce/components/cli
      sudo make -f docker.Makefile binary
      
    • 확인

      cd ~/go/docker-ce/components/cli/build
      
      ./docker
      
  • docker 패키징

    • docker 데몬이 실행 중이어야 함

    • 설치 시 기존 설치된 패키지에 덮어 씌워짐

      cd ~/go/docker-ce/components/packaging/deb
      sudo make ubuntu-bionic
      
      cd debbuild/ubuntu-bionic
      sudo apt install docker-ce_0.0.0-20190129010403-e36005021b-0~ubuntu-bionic_amd64.deb
      또는
      sudo dpkg -i install docker-ce_0.0.0-20190129010403-e36005021b-0~ubuntu-bionic_amd64.deb 
      

8. docker 커맨드

  • docker 모두 제거 시리즈

    • 컨테이너

      docker system prune
      
    • 이미지

      docker image prune -a
      
    • 볼륨

      docker volume prune
      
    • 네트워크

      docker network prune
      
  • docker 실행

    docker run
    
    • 옵션

      • 포트번호: -p xxxx:xxxx
  • docker 컨테이너

    • 모두 보기

      docker ps -a
      
    • 컨테이너 삭제

      docker rm [컨테이너id]
      
  • docker 이미지

    • 모두 보기

      docker images
      
    • 이미지 삭제

      docker rmi [이미지명|이미지id]