====== Docker Install on Ubuntu Linux ====== ===== Install/설치 ===== Docker Ubuntu Repository를 운영중이다. 저장소를 등록하고 설치한다. ubuntu 버전별 주의점도 읽어봐야 한다. * 공식적으로는 Ubuntu LTS 만 지원. 그런데, 확인해보면 비LTS도 지원하는 듯. * [[https://docs.docker.com/engine/install/ubuntu/|Install Docker Engine on Ubuntu | Docker Documentation]] 개발환경에서는 CE로 깐다. * [[https://docs.docker.com/engine/install/linux-postinstall/|Post-installation steps for Linux | Docker Documentation]] * Repository 설정 가이드를 따라하다보면 [[linux:mint|Mint Linux]] 사용시 저장소 설정에서 Ubuntu LTS가 아닌 Mint 버전이 들어가는 문제가 있다. 이때 ''/etc/apt/sources.list.d/additional-repositories.list'' 파일을 열어서 Mint에 해당하는 Ubuntu LTS로 변경해줘야 한다. [[linux:version|Linux 배포판과 버전 확인]] # docker 에서 제공해주는 리포지토리 설정할 경우 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=$(dpkg --print-architecture) 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 # docker 제공 저장소 설정을 마친뒤에 sudo apt-get install docker-ce docker-ce-cli containerd.io # 만약, Ubuntu 기본 제공 docker를 사용하고자 한다면 sudo apt-get install docker * 설치 후 ''docker'' Service로 자동 등록된다. [[linux:ubuntu:service|Ubuntu Service]] ===== docker group 추가를 통해 sudo 없이 이용 ===== 매번 ''sudo'' 명령을 사용하는게 싫을 경우 ''docker'' Group에 사용자를 등록해준다. 단, 이 경우 ''docker'' 그룹에 속하는 사용자는 ''root''와 맞먹는 권한을 갖기 때문에 보안에 주의해야한다. # sudo groupadd docker # 보통 미리 추가됨 sudo usermod -aG docker $USER sudo service docker restart # logout/login # newgrp docker 로그아웃 없이 group 적용됨. # 잘 되는지 확인 sudo 없이 docker run hello-world # ctop 모니터링용 sudo apt-get install ctop 만약 ''Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?''와 같은 메시지가 나오면서 실행이 안된다면 재시작/재로그인을 안 한 때문이거나 ''DOCKER_HOST'' 환경변수를 잘못 설정했기 때문이다. 재부팅 하고 ''DOCKER_HOST'' 환경변수를 삭제해준다. ===== 부팅시 자동 실행 ===== # systemd sudo systemctl enable docker ===== Uninstall ===== sudo apt-get purge docker-ce rm -rf /var/lib/docker ===== Memory와 Swap Accounting 조정 ===== 아래와 같은 경고를 만난다면, Memory 옵션과 Swap Accounting Kernel 옵션을 설정하자. docker를 안 사용하더라도 성능상 좋다고 한다. WARNING: Your kernel does not support cgroup swap limit. WARNING: Your kernel does not support swap limit capabilities. Limitation discarded. ''/etc/default/grub'' 파일을 열어서 GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1" sudo update-grub # 이후 재부팅한다. ===== UFW Forwarding 조정 ===== Ubuntu [[linux:firewall|Linux Firewall]] 사용시 Forwarding 기능을 활성화해야한다. TBD ===== Docker용 DNS 설정 ===== TBD ===== Docker Data Storage 변경 ===== * 기본 저장소는 ''/var/lib/docker'' * 다른 EXT4 파티션에 docker 이미지와 컨테이너를 저장하고자 한다면(NTFS 파티션에 두지말 것 - 올바로 작동 안 함), * 해당 위치에 링크를 걸고, Ubuntu 의 경우 ''/etc/default/docker'' 파일에서 옵션을 지정한다. [[https://github.com/docker/docker/issues/3127|Best way to move docker directory · Issue #3127 · docker/docker]] sudo rm /var/lib/docker sudo ln -s /path/to/docker-storage /var/lib/docker # /etc/default/docker - /var/lib/docker 링크가 가리키는 실제 디렉토리를 지정해 줌 DOCKER_OPTS="-g $(readlink -f /var/lib/docker)" ===== Docker 자동 시작 ===== * ''14.10'' 이하는 ''upstartd''를 사용하며, 설치 과정에서 자동시작으로 등록된다. * ''15.04'' 이상은 ''systemd''를 사용하며, 아래 명령으로 자동시작 등록한다. sudo systemctl enable docker ===== hello-world 삭제 ===== 설치 테스트가 끝났으니 삭제한다. docker rm `sudo docker ps -aq` # 컨테이너 삭제 docker rmi hello-world # 이미지 삭제 ===== 참조 ===== * [[https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04|How To Install and Use Docker on Ubuntu 20.04 | DigitalOcean]]