패키지에서 설치, 편의 스크립트를 사용한 설치 등 다양한 방법이 있지만 저장소를 설정하고 이 저장소에 설치하는 방법을 이용해보자. 이 방법이 가장 권장되는 방식이다.
기존에 설치된 Docker가 있는 경우 제거해준다.
$ sudo apt-get remove docker docker-engine docker.io containerd runc
새 호스트 머신에 Docker 엔진을 설치하기 전에 저장소를 설정해야 한다.
$ sudo apt-get update
$ sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
$ 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 run hello-world
❌System has not been booted with systemd as init system (PID 1). Can't operate
라는 오류가 발생하는 경우
-> 하단의 WSL2에서 Docker 자동 실행을 따라한다.
$ sudo docker version
WSL 환경이 Linux와 유사한 환경을 제공하지만 Docker Daemon이 자동으로 실행되지 않는다는 문제점이 있다. 다음 과정을 통해 Docker Daemon을 자동으로 실행되게 해보자.
$ sudo visudo
visudo 접속 후 맨 아래에 user명 ALL=(ALL) NOPASSWD: /usr/bin/dockerd
를 추가한다. (user명은 기본 계정명)
Docker Daemon이 실행 중이 아닌 경우 실행하도록 프로필 파일을 업데이트 한다.
아래 명령어를 그대로 terminal에 치면 된다.
$ echo '# Start Docker daemon automatically when logging in if not running.' >> ~/.zshrc
echo 'RUNNING=`ps aux | grep dockerd | grep -v grep`' >> ~/.zshrc
echo 'if [ -z "$RUNNING" ]; then' >> ~/.zshrc
echo ' sudo dockerd > /dev/null 2>&1 &' >> ~/.zshrc
echo ' disown' >> ~/.zshrc
echo 'fi' >> ~/.zshrc
$ sudo usermod -a -G docker user명
$ docker run hello-world
https://docs.docker.com/engine/install/ubuntu/
https://blog.nillsf.com/index.php/2020/06/29/how-to-automatically-start-the-docker-daemon-on-wsl2/